Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Dodatek

Dodawanie questów

Dodatek

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
50 odpowiedzi w tym temacie

#1 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 18.05.2011 22:10

*
Popularny

Jako że Onyke wydał swojego diablo mod'a w którym jest system questów wykonany prze zemnie na jego zlecenie chyba nie obrazi się jak dam tutorial jak dodać go do swojego diablo moda
zresztą i tak questy były dostępne na necie : P nawet stały się dość popularne ^^

1.Powyżej plugin_init dodajemy
//questy
//Autor DarkGL : )
new quest_gracza[33];
new ile_juz[33];

//przedzial , ile ,kogo , nagroda expa, vip 1 tak 0 nie
new questy[][]={
	{1,2,Ninja,500,0},
	{1,3,Mag,1200,1},
	{1,6,Zabojca,2000,0},
	{2,6,Hunter,5000,0},
	{2,15,Barbarzynca,15000,1},
	{2,20,Paladyn,20000,1},
	{3,65,Barbarzynca,150000,1},
	{3,120,Paladyn,200000,1}
}

new vault_questy;
new vault_questy2;

//od , do , hp
new prze[][]={
	{1,50,20},
	{51,80,40},
	{81,140,60}
}

new prze_wybrany[33]

new questy_info[][]={
	"Zabij 2 Ninje (Nagroda 500 doswiadczenia)",
	"Zabij 3 Magow (Nagroda 1200 doswiadczenia)",
	"Zabij 6 Zabojcow (Nagroda 2000 doswiadczenia)",
	"Zabij 6 Lowcow (Nagroda 5000 doswiadczenia)",
	"Zabij 15 Barbarzyncow (Nagroda 15000 doswiadczenia)",
	"Zabij 20 Paladynow (Nagroda 20000 doswiadczenia)",
	"Zabij 65 Barbarzyncow (Nagroda 150000 doswiadczenia)",
	"Zabij 120 Paladynow (Nagroda 200000 doswiadczenia)"
}

new questy_zabil[][]={
	"Ninjow",
	"Magow",
	"Zabojcow",
	"Lowcow",
	"Barbarzyncow",
	"Paladynow",
	"Barbarzyncow",
	"Paladynow"
}
2. w plugin_init dodajemy
vault_questy = nvault_open("Questy");
	vault_questy2 = nvault_open("Questy2");
	
	register_clcmd("say /questy","menu_questow")
	register_clcmd("say /quest","menu_questow")

3.w dowolnym miejscu w kodzie dodajemy
public menu_questow(id){
	if(quest_gracza[id] == -1 || quest_gracza[id] == -2){
		
		new menu = menu_create("Menu Questow","menu_questow_handle")
		new formats[128]
		for(new i = 0;i<sizeof prze;i++){
			formatex(formats,127,"Questy od %d do %d poziomu",prze[i][0],prze[i][1]);
			menu_additem(menu,formats)
		}
		menu_display(id,menu,0)
	}
	else
	{
		client_print(id,print_chat,"Wykonaj najpierw poprzednie zadanie")
	}
}

public menu_questow_handle(id,menu,item){
	if(item == MENU_EXIT){
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	if(player_lvl[id] < prze[item][0]){
		client_print(id,print_chat,"Masz za maly level!");
		menu_questow(id)
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	new formats[128]
	formatex(formats,127,"Questy od %d do %d poziomu",prze[item][0],prze[item][1]);
	new menu2 = menu_create(formats,"menu_questow_handle2")
	for(new i = 0;i<sizeof(questy);i++){
		if(questy[i][0] == item+1){
			menu_additem(menu2,questy_info[i]);
		}
	}
	menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu2, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu2, MPROP_NEXTNAME, "Nastepna strona");
	prze_wybrany[id] = item+1;
	menu_display(id,menu2)
	return PLUGIN_CONTINUE;
}

public zapisz_questa(id,quest){
	new name[64];
	get_user_name(id,name,63)
	strtolower(name)
	new key[64];
	format(key,63,"questy-%i-%s-%i",player_class[id],name,quest);
	nvault_set(vault_questy,key,"1");
}

public zapisz_aktualny_quest(id){
	new name[64];
	get_user_name(id,name,63)
	strtolower(name)
	new key[256];
	format(key,255,"questy-%d-%s",player_class[id],name);
	new data[32]
	formatex(data,charsmax(data),"#%d#%d",quest_gracza[id]+1,ile_juz[id]);
	nvault_set(vault_questy2,key,data);
}

public wczytaj_aktualny_quest(id){
	new name[64];
	get_user_name(id,name,63)
	strtolower(name)
	new key[256];
	format(key,255,"questy-%d-%s",player_class[id],name);
	new data[32];
	nvault_get(vault_questy2,key,data,31);
	replace_all(data,31,"#"," ");
	new questt[32],ile[32]
	parse(data,questt,31,ile,31)
	ile_juz[id] = str_to_num(ile)
	return str_to_num(questt)-1
}

public wczytaj_questa(id,quest){
	new name[64];
	get_user_name(id,name,63)
	strtolower(name)
	new key[64];
	format(key,63,"questy-%i-%s-%i",player_class[id],name,quest);
	new data[64];
	nvault_get(vault_questy,key,data,63);
	return str_to_num(data);
}

public menu_questow_handle2(id,menu,item){
	if(item == MENU_EXIT){
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	new ile2 = 0;
	for(new i = 0;i<sizeof(questy);i++){
		if(questy[i][0] != prze_wybrany[id]){
			continue;
		}
		if(ile2 == item){
			item = i;
			break;
		}
		ile2++;
	}
	if(questy[item][4] && !(get_user_flags(id) & ADMIN_LEVEL_H)){
		client_print(id,print_chat,"Ten quest jest tylko dla vipow! Aby kupic vipa wejdz na forum amxx.pl");
		menu_questow(id)
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	if(wczytaj_questa(id,item)){
		client_print(id,print_chat,"Wykonales juz to zadanie!");
		menu_questow(id)
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	quest_gracza[id] = item;
	ile_juz[id] = 0
	zapisz_aktualny_quest(id)
	client_print(id,print_chat,"Wybrales zadanie: %s powodzenia !",questy_info[item]);
	quest_gracza[id] = wczytaj_aktualny_quest(id);
	menu_destroy(menu);
	return PLUGIN_CONTINUE;
}

4.w funkcji DeathMsg
w warunku
if (is_user_connected(kid) && is_user_connected(vid) && get_user_team(kid) != get_user_team(vid))
	{
dodajemy
if(quest_gracza[kid] != -1){
			if(player_class[vid] == questy[quest_gracza[kid]][2]){
				ile_juz[kid]++;
				zapisz_aktualny_quest(kid)
			}
			if(ile_juz[kid] == questy[quest_gracza[kid]][1]){
				client_print(kid,print_chat,"Wykonales zadanie %s gratulacje otrzymujesz %i expa!",questy_info[quest_gracza[kid]],questy[quest_gracza[kid]][3])
				zapisz_questa(kid,quest_gracza[kid])
				Give_Xp(kid,questy[quest_gracza[kid]][3]);
				quest_gracza[kid] = -1;
				zapisz_aktualny_quest(kid)
			}
			else
			{
				client_print(kid,print_chat,"Zabiles %i/%i %s",ile_juz[kid],questy[quest_gracza[kid]][1],questy_zabil[quest_gracza[kid]])
                        }
}
tak to ma wyglądać
if (is_user_connected(kid) && is_user_connected(vid) && get_user_team(kid) != get_user_team(vid))
	{
		show_deadmessage(kid,vid,headshot,weaponname)
		create_itm(vid,0,"losowy item")
		award_kill(kid,vid)
		add_respawn_bonus(vid)
		add_bonus_explode(vid)
		add_barbarian_bonus(kid)
		//mana_gracza[kid]+=1
		//mana_gracza[headshot]+=2
		if (player_class[kid] == Barbarzynca)
		refill_ammo(kid)
		if (player_class[kid] == Griswold)
		refill_ammo(kid)
		if (player_class[kid] == Kowal)
		refill_ammo(kid)
		if (player_class[kid] == Demonolog)
		refill_ammo(kid)
		set_renderchange(kid)
		savexpcom(vid)
		if(quest_gracza[kid] != -1){
			if(player_class[vid] == questy[quest_gracza[kid]][2]){
				ile_juz[kid]++;
				zapisz_aktualny_quest(kid)
			}
			if(ile_juz[kid] == questy[quest_gracza[kid]][1]){
				client_print(kid,print_chat,"Wykonales zadanie %s gratulacje otrzymujesz %i expa!",questy_info[quest_gracza[kid]],questy[quest_gracza[kid]][3])
				zapisz_questa(kid,quest_gracza[kid])
				Give_Xp(kid,questy[quest_gracza[kid]][3]);
				quest_gracza[kid] = -1;
				zapisz_aktualny_quest(kid)
			}
			else
			{
				client_print(kid,print_chat,"Zabiles %i/%i %s",ile_juz[kid],questy[quest_gracza[kid]][1],questy_zabil[quest_gracza[kid]])
			}
		}
	}

5.
quest_gracza[id] = wczytaj_aktualny_quest(id);
musimy to dodać po całym switch w funkcji handle menu wyboru klas
dużo diablo modów dużo menów dlatego tylko przyklad
public PokazMeni(id, key)
{ 
/* Menu:
* Wybierz klase:
* 1:Czarodziejka
* 2:Druid
* 3:Paladyn
* 4:Zabojczyni
* 5:Nekromanta
* 6:Barbarzynca
* 7:Ninja
* 8:Amazonka
* 0:Wstecz
*/
new lx[28] // <-- tutaj wpisz liczbę swoich klas + 1(none)
g_haskit[id] = 0
c_shake[id]=0
c_damage[id]=0
c_jump[id]=0
c_mine[id]=0
c_respawn[id]=0
c_vampire[id]=0
zmiana_skinu[id]=0
switch(key) 
{ 
    case 0: 
    {    
        player_class[id] = Mag
	c_shake[id]=20
        LoadXP(id, player_class[id])        
    }
    case 1: 
    {    
        player_class[id] = Mnich
	c_damage[id]=3
	zmiana_skinu[id]=1
	changeskin(id,0)
        LoadXP(id, player_class[id])
    }
    case 2: 
    {    
        player_class[id] =  Paladyn
        LoadXP(id, player_class[id])
    }
    case 3: 
    {    
        player_class[id] = Zabojca
	c_jump[id]=1
	c_mine[id]=2
        LoadXP(id, player_class[id])
    }
    case 4: 
    {            
        player_class[id] = Nekromanta
        g_haskit[id] = 1
	c_respawn[id]=4
	c_vampire[id]=random_num(1,3)
        LoadXP(id, player_class[id])
    }
    case 5: 
    {    
        player_class[id] = Barbarzynca      
        LoadXP(id, player_class[id])
    }
    case 6: 
    {    
        player_class[id] = Ninja
        LoadXP(id, player_class[id])
    }
    case 7: 
    {    
        player_class[id] = Hunter
        g_GrenadeTrap[id] = 1    
        LoadXP(id, player_class[id])
    }
    case 9: 
    { 
        select_class(id,lx)
    }
}
CurWeapon(id)
quest_gracza[id] = wczytaj_aktualny_quest(id);
give_knife(id)

return PLUGIN_HANDLED
}

Wiem jestem cienki w pisaniu poradników : D
macie tutaj
Diablomod by 0nYk3 - AMXX.pl: Support AMX Mod X
już dodane questy możecie się wzorować na tym
  • +
  • -
  • 24

#2 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 18.05.2011 22:25

Na dwa razy zapisywanie i wczytywanie? Do czego służy "zapisz_questa" czy też "wczytaj_questa", bo przyglądam się i na razie jeszcze nie zauważyłem...

Miałem sam wyciągać te questy z innego moda (ktoś już wcześniej wrzucił ^^), ale skoro jest poradnik, to dla mnie nawet lepiej ;]

Użytkownik sebul edytował ten post 18.05.2011 22:26

  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#3 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 18.05.2011 22:53

wystarczy spojrzeć w kod późno jest nie chce mi się tłumaczyć
ale
zapisywanie /wczytywanie czy quest został zrobiony
  • +
  • -
  • 3

#4 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 18.05.2011 22:57

A no późno i właśnie nie zauważyłem... Może lepiej by było zapisywać to w jednym pliku nvault? Czy to nie ma znaczącej różnicy?
  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#5 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 18.05.2011 23:07

hmm możesz sprawdzić ale ostatnio nvault głupiało jak używałem zapisu do jednego pliku różnych kluczy
  • +
  • -
  • 2

#6 Drewno.

    Banned

  • Zbanowany

Reputacja: 36
Życzliwy

  • Postów:263
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 19.05.2011 06:41

Bardzo dobre,ale Same zadania typu "Zabij" to troche za latwo.Mozna dodac np. znajdz jakis item,lub Podłoz 4 razy pake albo znajdz (to bylby nowy item) cos tam 0/4 itd. albo zarob iles tam kasy,wbij takie,a takie staty

A oprocz nagrod ze doswiadczenie,dostawaloby sie +ile do dodatkowych stat,zlota itd..

Taka moja opinia,ale dobrze,ze chociaz jest:P

#7 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 19.05.2011 06:45

dużo więcej roboty a ja nie mam czasu na to obecnie
  • +
  • -
  • 3

#8 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 19.05.2011 08:49

Bardzo dobre,ale Same zadania typu "Zabij" to troche za latwo.Mozna dodac np. znajdz jakis item,lub Podłoz 4 razy pake albo znajdz (to bylby nowy item) cos tam 0/4 itd. albo zarob iles tam kasy,wbij takie,a takie staty

A oprocz nagrod ze doswiadczenie,dostawaloby sie +ile do dodatkowych stat,zlota itd..

Taka moja opinia,ale dobrze,ze chociaz jest:P

A co to za problem samemu dodać? Jak już jest podany schemat tego jak te questy wyglądają, to dodanie innych zadaniem nie powinno sprawić większego problemu.
  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#9 ::Gogiel::

    Zaawansowany

  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:77
  • GG:
  • Imię:Hm... xD Patryk xD
  • Lokalizacja:Bydgoszcz
Offline

Napisano 19.05.2011 15:03

Właśnie chciałem napisać tutka bo jakiś czas temu znalazłem plugin z gotowymi questami. A jak znalazłem to pomyślałem niech inni też mają :0
Ale dzięki przynajmniej sprawdziłem czy wszystko dobrze mam u siebie ;0

Leci PLUSSS :)
  • +
  • -
  • 0
Dołączona grafika
Dołączona grafika
Dołączona grafika
SERWER SA:MP 194.28.50.14:25064
Zapraszamy Do Gry http://cs-pobojowisko.eu

#10 Optymalny193

    Wszechwidzący

  • Zbanowany

Reputacja: 30
Życzliwy

  • Postów:294
  • Imię:Paweł
  • Lokalizacja:Europa
Offline

Napisano 19.05.2011 15:27

Plusik 4you

Dobra robota, GJ.

#11 alien123

    Pomocny

  • Użytkownik

Reputacja: 6
Nowy

  • Postów:54
  • Lokalizacja:Polska
Offline

Napisano 19.05.2011 16:17

a jak dodać 2 stronę questów?
  • +
  • -
  • 0

#12 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 19.05.2011 16:36

hmm druga stronę ? jak dodać quest tak bo tu nie ma podziału na strony?
  • +
  • -
  • 0

#13 ::Gogiel::

    Zaawansowany

  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:77
  • GG:
  • Imię:Hm... xD Patryk xD
  • Lokalizacja:Bydgoszcz
Offline

Napisano 19.05.2011 16:50

chyba mu chodziło o dalej i na drugiej stronie np zamiast zabij to podłóż pake x razy znajdź vipa x razy zabij 10 wrogów itp ;)
  • +
  • -
  • 0
Dołączona grafika
Dołączona grafika
Dołączona grafika
SERWER SA:MP 194.28.50.14:25064
Zapraszamy Do Gry http://cs-pobojowisko.eu

#14 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 19.05.2011 17:03

tutaj mozesz dodawac questy tylko na zabicie x razy jakies klasy
  • +
  • -
  • 0

#15 Muzzi

    Guru

  • Przyjaciel

Reputacja: 228
Wszechwidzący

  • Postów:772
  • Lokalizacja:Kraków
Offline

Napisano 19.05.2011 17:46

@UP Może i masz troszkę racji ale można to przerobić i robić questy nie tylko na zabijanie.

Jakimś Cudem ja to już mam :)
Ale i tak plus bo tutek jak zawsze słaby;d
  • +
  • -
  • 0

#16 Kicku

    Początkujący

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:17
  • Imię:Mudzyn
  • Lokalizacja:Daleko w Dal
Offline

Napisano 21.05.2011 08:27

Poradnik nie taki zly. Łap Plusika

Wczoraj wszystko sie kompilowalo a dzis jak dodalem kilka mocy do klas:

FEWFW3F.sma(448) : error 001: expected token: "}", but found "-string-"
FEWFW3F.sma(586) : error 017: undefined symbol "nvault_open"
FEWFW3F.sma(587) : warning 217: loose indentation
FEWFW3F.sma(587) : error 017: undefined symbol "nvault_open"
FEWFW3F.sma(591) : warning 217: loose indentation
FEWFW3F.sma(8431) : error 017: undefined symbol "nvault_set"
FEWFW3F.sma(8442) : error 017: undefined symbol "nvault_set"
FEWFW3F.sma(8452) : error 017: undefined symbol "nvault_get"
FEWFW3F.sma(8467) : error 017: undefined symbol "nvault_get"
FEWFW3F.sma(9228) : error 010: invalid function or declaration
FEWFW3F.sma(9228) : warning 204: symbol is assigned a value that is never used: "vault_questy"
FEWFW3F.sma(9228) : warning 204: symbol is assigned a value that is never used: "vault_questy2"

co zrobic?

Użytkownik Kicku edytował ten post 21.05.2011 09:05

  • +
  • -
  • 0
Dołączona grafika
Dołączona grafika
Dołączona grafika

#17 Aard

    Profesjonalista

  • Użytkownik

Reputacja: 16
Początkujący

  • Postów:190
  • Lokalizacja:Toruń
Offline

Napisano 21.05.2011 09:19

pod
#include <hamsandwich>


dodaj
#include <xs>


i dodaj
#include <nvault>


i zadziała :)

@Dalinor

wiem ;d błąd przy pisaniu :P

Użytkownik Aard edytował ten post 21.05.2011 09:48

  • +
  • -
  • 2

#18 Kicku

    Początkujący

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:17
  • Imię:Mudzyn
  • Lokalizacja:Daleko w Dal
Offline

Napisano 21.05.2011 09:37

Po dodaniu #include <nvalut>

wfwefwe.sma(36) : fatal error 100: cannot read from file: "nvalut"
  • +
  • -
  • 0
Dołączona grafika
Dołączona grafika
Dołączona grafika

#19 Dalinor

    Zaawansowany

  • Użytkownik

Reputacja: 28
Życzliwy

  • Postów:77
  • GG:
  • Lokalizacja:Rabka :)
Offline

Napisano 21.05.2011 09:40

#include <nvault>



Literki Ci się pokręciły :).
  • +
  • -
  • 1

#20 Kicku

    Początkujący

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:17
  • Imię:Mudzyn
  • Lokalizacja:Daleko w Dal
Offline

Napisano 21.05.2011 09:42

Teraz działa macie po +. Ze nie zauwazylem tych literek :P
  • +
  • -
  • 0
Dołączona grafika
Dołączona grafika
Dołączona grafika





Również z jednym lub większą ilością słów kluczowych: Dodatek

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych