Witam,
dzisiaj przedstawię troszkę inny sposób dodawanie punktów statystyk niż w innych tutkach ;], wygląda to mniej więcej tak:
Dokładniej chodzi o opcję numer: 1. Po jej kliknięciu liczba dodawanych punktów się zwiększa (można to dowolnie edytować).
A więc do dzieła, na samym początku musimy dodać jedną stałą z naszymi punktami i zmienną która będzie przechowywała informacje o tym co ile ma dodawać na pkt.
Pod:
new const maxAmmo[31] = {0, 52, 0, 90, 1, 31, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 31, 90, 120, 90, 2, 35, 90, 90,0, 100};
dodajemy coś takiego:
new const co_ile[] = { 1, 4, 8, 16, 24 } // Wlasnie tutaj zmieniamy co ile maja rosnac punkty. new szybkosc_rozdania[33];
Następnym krokiem będzie edycja widoku statystyk i handler'a od tego. Szukamy
public PrzydzielPunkty(id) { new inteligencja[65]; new zdrowie[60]; new wytrzymalosc[60]; new kondycja[60]; new tytul[25]; format(inteligencja, charsmax(inteligencja), "Inteligencja: \r%i \y(Zwieksza sile perkow i umiejetnosci klasy)", PobierzInteligencje(id, 1, 1, 1)); format(zdrowie, charsmax(zdrowie), "Zdrowie: \r%i \y(Zwieksza zdrowie)", PobierzZdrowie(id, 1, 1, 1)); format(wytrzymalosc, charsmax(wytrzymalosc), "Wytrzymalosc: \r%i \y(Zmniejsza obrazenia)", PobierzWytrzymalosc(id, 1, 1, 1)); format(kondycja, charsmax(kondycja), "Kondycja: \r%i \y(Zwieksza tempo chodu)", PobierzKondycje(id, 1, 1, 1)); format(tytul, charsmax(tytul), "Przydziel Punkty(%i):", punkty_gracza[id]); new menu = menu_create(tytul, "PrzydzielPunkty_Handler"); menu_additem(menu, inteligencja); menu_additem(menu, zdrowie); menu_additem(menu, wytrzymalosc); menu_additem(menu, kondycja); menu_setprop(menu, MPROP_EXIT, 0); menu_display(id, menu); }i zamieniamy na
public PrzydzielPunkty(id) { new szybkosc[60]; new inteligencja[65]; new zdrowie[60]; new wytrzymalosc[60]; new kondycja[60]; new tytul[25]; format(szybkosc, charsmax(szybkosc), "Ile dodawac: \r%d \y(Ile pkt dodac do statow)", co_ile[szybkosc_rozdania[id]]); format(inteligencja, charsmax(inteligencja), "Inteligencja: \r%i \y(Zwieksza sile perkow i umiejetnosci klasy)", PobierzInteligencje(id, 1, 1, 1)); format(zdrowie, charsmax(zdrowie), "Zdrowie: \r%i \y(Zwieksza zdrowie)", PobierzZdrowie(id, 1, 1, 1)); format(wytrzymalosc, charsmax(wytrzymalosc), "Wytrzymalosc: \r%i \y(Zmniejsza obrazenia)", PobierzWytrzymalosc(id, 1, 1, 1)); format(kondycja, charsmax(kondycja), "Kondycja: \r%i \y(Zwieksza tempo chodu)", PobierzKondycje(id, 1, 1, 1)); format(tytul, charsmax(tytul), "Przydziel Punkty(%i):", punkty_gracza[id]); new menu = menu_create(tytul, "PrzydzielPunkty_Handler"); menu_additem(menu, szybkosc); menu_addblank(menu, 0); menu_additem(menu, inteligencja); menu_additem(menu, zdrowie); menu_additem(menu, wytrzymalosc); menu_additem(menu, kondycja); menu_setprop(menu, MPROP_EXIT, 0); menu_display(id, menu); }Wygląd naszego menu z punktami został już zmieniony teraz, handler, znajduje się on nieco niżej, dokładnie chodzi o to:
public PrzydzielPunkty_Handler(id, menu, item) { client_cmd(id, "spk QTM_CodMod/select"); if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } if(punkty_gracza[id] < 1) return PLUGIN_CONTINUE; new limit_poziomu = get_pcvar_num(cvar_limit_poziomu); switch(item) { case 0: { if(inteligencja_gracza[id] < limit_poziomu/2) { inteligencja_gracza[id]++; punkty_gracza[id]--; } else client_print(id, print_chat, "[COD:MW] Maxymalny poziom inteligencji osiagniety"); } case 1: { if(zdrowie_gracza[id] < limit_poziomu/2) { zdrowie_gracza[id]++; punkty_gracza[id]--; } else client_print(id, print_chat, "[COD:MW] Maxymalny poziom sily osiagniety"); } case 2: { if(wytrzymalosc_gracza[id] < limit_poziomu/2) { wytrzymalosc_gracza[id]++; punkty_gracza[id]--; } else client_print(id, print_chat, "[COD:MW] Maxymalny poziom zrecznosci osiagniety"); } case 3: { if(kondycja_gracza[id] < limit_poziomu/2) { kondycja_gracza[id]++; punkty_gracza[id]--; } else client_print(id, print_chat, "[COD:MW] Maxymalny poziom kondycji osiagniety"); } } if(punkty_gracza[id] > 0) PrzydzielPunkty(id); return PLUGIN_CONTINUE; }zamieniamy na
public PrzydzielPunkty_Handler(id, menu, item) { client_cmd(id, "spk QTM_CodMod/select"); if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } if(punkty_gracza[id] < 1) return PLUGIN_CONTINUE; new limit_poziomu = get_pcvar_num(cvar_limit_poziomu); new ilosc = (co_ile[szybkosc_rozdania[id]] > punkty_gracza[id]) ? punkty_gracza[id] : co_ile[szybkosc_rozdania[id]] switch(item) { case 0: { if(szybkosc_rozdania[id] < charsmax(co_ile)) szybkosc_rozdania[id]++; else szybkosc_rozdania[id] = 0; } case 1: { if(inteligencja_gracza[id]+ilosc <= limit_poziomu/2) { inteligencja_gracza[id]+=ilosc; punkty_gracza[id]-=ilosc; } else client_print(id, print_chat, "[COD:MW] Maxymalny poziom inteligencji osiagniety"); } case 2: { if(zdrowie_gracza[id]+ilosc <= limit_poziomu/2) { zdrowie_gracza[id]+=ilosc; punkty_gracza[id]-=ilosc; } else client_print(id, print_chat, "[COD:MW] Maxymalny poziom sily osiagniety"); } case 3: { if(wytrzymalosc_gracza[id]+ilosc <= limit_poziomu/2) { wytrzymalosc_gracza[id]+=ilosc; punkty_gracza[id]-=ilosc; } else client_print(id, print_chat, "[COD:MW] Maxymalny poziom zrecznosci osiagniety"); } case 4: { if(kondycja_gracza[id]+ilosc <= limit_poziomu/2) { kondycja_gracza[id]+=ilosc; punkty_gracza[id]-=ilosc; } else client_print(id, print_chat, "[COD:MW] Maxymalny poziom kondycji osiagniety"); } } if(punkty_gracza[id] > 0) PrzydzielPunkty(id); return PLUGIN_CONTINUE; }
No i to tyle, wystarczy teraz przekompilować kod i wgrać plugin. ;]