←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Awanse Klas co zrobić by zaczynać od 1 po...

PAKOV9 - zdjęcie PAKOV9 07.01.2013

Witam.
Ostatnio zainteresowałem się awansem klas ale mam pewien problem.

Dodałem to ,że bo wbiciu 60lvla nie awansujesz automatycznie na kolejna klase tylko ją odblokowujesz.
Niestety kiedy wbije np. 60 lvl snajperem to odblokowuje mi sie Elitarny Sniper i na niego przechodzi lvl i staty czyli tez ma 60 automatycznie.
Chciałbym żeby po odblokowaniu nowej klasy miala ona 1 lvl iyp.

Przypominam ,że by zmienić automatyczne awansowanie na odblokowanie innej klasy musiałem zmienić

to:
public WybierzKlase(id)
{
new menu = menu_create("Wybierz klase:", "WybierzKlase_Handle");

new klasa[50], dana_klasa, numer[10];
for(new i=1; i <= ilosc_klas; i++)
{
if(JestAwansem(i))
continue;
WczytajDane(id, i);
dana_klasa = i;

for(;;)
{
if(awansuje_do[dana_klasa] && poziom_gracza[id] >= awanse[ZnajdzAwans(dana_klasa, awansuje_do[dana_klasa])][2])
{
dana_klasa = awansuje_do[dana_klasa];
WczytajDane(id, dana_klasa);
}
else break;
}
formatex(klasa, charsmax(klasa), "%s \yPoziom: %i", nazwy_klas[dana_klasa], poziom_gracza[id]);
num_to_str(dana_klasa, numer, 9);
menu_additem(menu, klasa, numer);
}

WczytajDane(id, klasa_gracza[id]);

menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);

client_cmd(id, "spk QTM_CodMod/select");
}


na to:
public WybierzKlase(id)
{
new menu = menu_create("Wybierz klase:", "WybierzKlase_Handle");
new klasa[50];
for(new i=1; i <= ilosc_klas; i++)
{
if(awansuje_z[i])
{
new bool:moze = false;
WczytajDane(id, awansuje_z[i]);
if(poziom_gracza[id] >= awanse[ZnajdzAwans(awansuje_z[i], i)][2])
moze = true;

WczytajDane(id, i);
if(moze) formatex(klasa, charsmax(klasa), "%s \yPoziom: %i", nazwy_klas[i], poziom_gracza[id]);
else formatex(klasa, charsmax(klasa), "\r%s \yPoziom: %i", nazwy_klas[i], poziom_gracza[id]);
}
else
{
WczytajDane(id, i);
formatex(klasa, charsmax(klasa), "%s \yPoziom: %i", nazwy_klas[i], poziom_gracza[id]);
}
menu_additem(menu, klasa);
}

WczytajDane(id, klasa_gracza[id]);

menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);

client_cmd(id, "spk QTM_CodMod/select");
}


to:

public WybierzKlase_Handle(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");

if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}

new data[65], name[65], acces, callback
menu_item_getinfo(menu, item, acces, data, 64, name, 64, callback)
item = str_to_num(data);

if(item == klasa_gracza[id] && !nowa_klasa_gracza[id])
return PLUGIN_CONTINUE;

nowa_klasa_gracza[id] = item;

if(klasa_gracza[id])
client_print(id, print_chat, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie.");
else
{
UstawNowaKlase(id);
DajBronie(id);
ZastosujAtrybuty(id);
}

return PLUGIN_CONTINUE;
}


na to:

public WybierzKlase_Handle(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");

if(item++ == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}

if(awansuje_z[item])
{
WczytajDane(id, awansuje_z[item]);
new bool:moze, a = ZnajdzAwans(awansuje_z[item], item)
if(poziom_gracza[id] >= awanse[a][2])
moze = true;
WczytajDane(id, klasa_gracza[id]);
if(!moze)
{
client_print(id, print_chat, "[COD:MW] Aby uzywac tej klasy musisz zdobyc %i poziom na klasie %s!", awanse[a][2], nazwy_klas[awansuje_z[item]]);
return PLUGIN_CONTINUE;
}
}

if(item == klasa_gracza[id] && !nowa_klasa_gracza[id])
return PLUGIN_CONTINUE;

nowa_klasa_gracza[id] = item;

if(klasa_gracza[id])
client_print(id, print_chat, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie.");
else
{
UstawNowaKlase(id);
DajBronie(id);
ZastosujAtrybuty(id);
}

return PLUGIN_CONTINUE;
}



i usunać to co odpowiadało za automatyczne awansowanie i zaczynanie z 1 lvlem ! ! !


if(awansuje_do[klasa_gracza[id]])
{
if(poziom_gracza[id] >= awanse[ZnajdzAwans(klasa_gracza[id], awansuje_do[klasa_gracza[id]])][2])
{
set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0);
ShowSyncHudMsg(id, SyncHudObj2,"Osiagajac poziom %i, awansowales do klasy %s!", poziom_gracza[id], nazwy_klas[awansuje_do[klasa_gracza[id]]]);
nowa_klasa_gracza[id] = awansuje_do[klasa_gracza[id]];
UstawNowaKlase(id);
DajBronie(id);
ZastosujAtrybuty(id);
ZapiszDane(id);
}
}


Próbowałem zrobić to sam ale mi nie wychodzi. Proszę o pomoc ! !
Użytkownik PAKOV9 edytował ten post 07.01.2013 21:03
Odpowiedz

Piro_0 - zdjęcie Piro_0 08.01.2013

Jeśli all zrobiłeś dobrze zamień W publicu SprawdzPoziom, po ZapiszDane(id), na :
Widzę że masz tak daj sma silnika.

		if(awansuje_do[klasa_gracza[id]])
		{
				if(poziom_gracza[id] >= awanse[ZnajdzAwans(klasa_gracza[id], awansuje_do[klasa_gracza[id]])][2])
				{
						set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0);
						ShowSyncHudMsg(id, SyncHudObj2,"Osiagajac poziom %i, awansowales do klasy %s!", poziom_gracza[id], nazwy_klas[awansuje_do[klasa_gracza[id]]]);
						nowa_klasa_gracza[id] = awansuje_do[klasa_gracza[id]];
						UstawNowaKlase(id);
						DajBronie(id);
						ZastosujAtrybuty(id);
						ZapiszDane(id);
				}
		}

Tu masz świetny poradnik jak tak zrobisz będzie all dobrze. Ale sma możesz podać :D

http://amxx.pl/topic...63-awanse-klas/
Użytkownik Piro_0 edytował ten post 08.01.2013 20:05
Odpowiedz