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
 

Kicku - zdjęcie

Kicku

Rejestracja: 09.02.2011
Aktualnie: Nieaktywny
Poza forum Ostatnio: 28.08.2011 14:55
-----

#251394 Dodawanie questów

Napisane przez Aard w 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
  • +
  • -
  • 2


#251403 Dodawanie questów

Napisane przez Dalinor w 21.05.2011 09:40

#include <nvault>



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


#250783 Dodawanie questów

Napisane przez DarkGL w 18.05.2011 22:10

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


#242952 Nie powiodła sie komplikacja (znowuuuu)

Napisane przez Jagoda w 28.04.2011 19:17

+ jezyk angielski
error 017: undefined symbol "add_redhealth_bonus"
znaczy
blad 017: nieznany symbol "add_redhealth_bonus"
tlumaczysz sobie i masz troszke z gorki

Dodano 28 kwiecień 2011 - 19:40:
proszę wszystko poprawione 0 errorow 0 warningow :D

Dodano 28 kwiecień 2011 - 19:41:
zapomnialem o sma :D

Załączone pliki




#244270 Moc itemu do klasy

Napisane przez Onyke w 01.05.2011 18:43

Robisz nową zmienną np c_radar[33] i potem dajesz w odpowiednich miejscach ify, nie dodajesz w reset_item_skills itp tylko zerujesz ją w wyborze klas (menu) i po wyborze klasy dajesz jej np c_radar[id] = 1
I tak pewnie nie zrozumiesz bo tutaj jest każdy nastawiony na gotowca...
  • +
  • -
  • 1


#244277 Moc itemu do klasy

Napisane przez Po prostu Paweł w 01.05.2011 18:54

Ja rozumiem xD. Dlatego że nigdy nie proszę o gotowca bo zawsze chce się czegoś nauczyć a nie ctr+c ctrl+v. Więc wydaje mi się że prośby o gotowca byłyby niedozwolone.


#127938 Dodawanie mocy do klasy.

Napisane przez Vertricus w 23.04.2010 22:50

W tym krótkim poradniku dowiecie się jak dodać gotową moc do klasy, tak aby nie było potem dopisków w /item oraz żeby klasa nie traciła ich po rundzie, straceniu przedmiotu.
Moim przykładem będzie skok, jednak dam wam kilka prostych krokach dzięki którym powinniście zrozumieć to dla każdej innej mocy.
1. Deklarujemy nową zmienną tj. tablice np. new zmienna[33] < dodajemy to przy innych mocach
2. Wszystkie instrukcje z tym związane zmieniamy w taki sposób:
Z if (innazmienna[id]/* tu cos naprawdopodobniej będzie */)
na if if (innazmienna[id]/* tu cos naprawdopodobniej będzie */ || zmienna[id] /* to co tam najprawdopodobniej było */)
3. W menu klas przed switch(key) zerujemy naszą zmienną w ten sposób dodając zmienna[id] = 0, a po wyborze tj. w "case" pod player_class[id] = JAKAS_KLASA przypisujemy zmiennej żądaną wartość.

PRZYKŁAD - Dodawanie kilku skoków klasie:
Spoiler

Poradnik napisany jest dosyć chaotycznie ze względu iż nie mam jak dać przykładów do wszystkich mocy.
Jeśli nie rozumiesz co tu jest napisane to nie pisz że nie rozumiesz a zacznij od czegoś prostszego i zapoznaj się bardziej z PAWN'em.
W miarę wynajdywania czasu postaram się go zrobić bardziej przyswajalnym ;>
  • +
  • -
  • 14


#242649 Nie powiodła sie komplikacja (znowuuuu)

Napisane przez ogieR8 w 27.04.2011 20:41

1. Jeden

return false
}


... za dużo.

2. Klamra w publicu DeathMsg

3. Błąd z:

player_pkt[kid]+=10


w public DeathMsg, zamiast:

player_mana[kid]+=10


4. Coś tam jeszcze było nie ten teges.

Pozdrawiam
~ ogieR-

  • +
  • -
  • 2


#242800 Nie powiodła sie komplikacja (znowuuuu)

Napisane przez FreZZy w 28.04.2011 14:07

bracket counter i intuicja + odrobina doświadczenia

link do tego pierwszego: Sprawdzanie liczby klamer w funkcjach - AMXX.pl: Support AMX Mod X


#242487 Nie powiodła sie komplikacja

Napisane przez FreZZy w 27.04.2011 16:31

sprawdź klamry i nie ma sma :)

bracket counter