Na początek wprowadzę was trochę w jaki sposób to działa i w jaki powinniśmy tego używać. Użytkowanie tej modyfikacji jest bardzo proste dajemy graczowi wybór czy chce rezygnować ze swojego dużego poziomu aby rozwijać się dalej czy ma zostać przy swoim pięknie rozwiniętym poziomem. Aby dać właśnie taki wybór graczom wprowadzamy komendę /reset która zeruje nasz exp oraz poziom lub inne w zamian za daną ilość Punktów Powrotu. PP będzie można wymienić na stałe dodatki w sklepie.
Na prośbę użytkowników będę konfigurował system pp do różnych modów oraz dodawał Przedmioty do Sklepu (ewentualnie coś zmieniał)
No to zacznijmy od najłatwiejszej rzeczy. Rejestrujemy komendy do wywołania publica Sklep_PP oraz PP_Reset.
register_clcmd("say /reset", "PP_Reset"); register_clcmd("say /ppsklep", "Sklep_PP");
Gdy już to mamy powinniśmy zając się zmiennymi na których będziemy pracować, w naszym przypadku potrzebujemy tylko jednej zmiennej ponieważ aktualny tutorial tworze bez żadnej podstawy.
pp_gracza[33];
Gdy mamy już zmienną czas wziąć się za nasze publicy w których mamy najważniejszy kod.
Naszym pierwszym publicem będzie PP_Reset aby uprościć sprawę zrobię to na przykładzie własnych zmiennych.
public PP_Reset(id) { new menu = menu_create("\wZa reset otrzymasz \r2 PP^n\yCzy Resetowac?", "PP_Reset_Select"); menu_additem(menu, "\rTak", "1", 0); menu_additem(menu, "\yNie", "2", 0); menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); menu_display(id, menu, 0); }Gdy posiadamy już funkcje na wyświetlanie menu powinniśmy dodać teraz funkcje na wykonywanie wyboru itp. W naszym przypadku to PP_Reset_Select najlepiej abyśmy go umieścili od razu pod powyższym kodem.
public PP_Reset_Select(id, menu, item) { new data[6], iName[64]; new zaccess, callback; menu_item_getinfo(menu, item, zaccess, data,5, iName, 64, callback); new key = str_to_num(data) new nick[32]; get_user_name(id,nick,31); switch(key) { case 1: { if(poziom_gracza[id] == POTRZEBNY_POZIOM) { pp_gracza[id] += 2; // dwa to ilość punktów powrotu jaką otrzyma gracz po resecie poziom_gracza[id] = 0; // zerujemy poziom gracza exp_gracza[id] = 0; // resetujemy exp gracza client_print(0, print_chat, "Gracz %s zzerowal swoj poziom w zamian otrzymal 2 punkty powrotu!", nick) } else // Gdy nie posiadamy potrzebnego poziomu { client_print(id, print_chat, "Nie posiadasz xx poziomu") } } case 2: { menu_destroy(menu) } } menu_destroy(menu); return PLUGIN_HANDLED; }Posiadamy już wymianę poziomu na punkty powrotu. Teraz Sklep niestety na chwile obecną umieszczam tylko kod na menu wraz z funkcją zabierania pp.
public Sklep_PP(id) { new tytul[25], aaa[65]; new MyMenuFun=menu_makecallback("CallbackMenu"); format(tytul, 24, "\rPosiadasz: %i Punktow Powrotu\w^nWybierz Opcje", pp_gracza[id]); formatex(aaa, 64, "\yXXXX \r[Koszt: X PP]"); new menu = menu_create(tytul, "wymien_powrot2"); menu_additem(menu, aaa, "1"); menu_display(id, menu); } public wymien_powrot2(id, menu, item) { if(!is_user_alive(id) || !is_user_connected(id)) return PLUGIN_CONTINUE; if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } switch(item) { case 0: { if(pp_gracza[id] >= ILOSC) { powrot_gracza[id]-=ILOSC; // Tutaj umiesc funkcje po kupnie client_print(id, print_chat, "Kupiles ...") } else { client_print(id, print_chat, "Nie posiadasz wystarczajacej ilosci PP") } } } return PLUGIN_HANDLED; }Pozostałe modyfikacje, edycje itp. będę robił za prośbą użytkowników do czasu wydania pluginu który ułatwi tą sprawę.