Niedziałająca wymiana 2 perkami
wacho
11.10.2017
Witajcie !
Mam problem z pluginem do wymiany perków na 2 sloty.
Gdy wymieniam pierwszy perk wszystko jest OK problem pojawia sie przy wymianie Perków z 2 slotu wtedy perk z z drugiego slota wedruje na miejsce 1 perku.
Wszystkie dostępne na forum wymiany perków na 2 sloty mają ten sam problem.
Czy jest tu ktoś kto potrafiłby sie z tym uporac?
Załączone pliki
Linux'
11.10.2017
W public menu_wymien2(id, menu, item) zamien
switch(item) { case 0: { new wartosc1, wartosc2; new perk_oddajacego = cod_get_user_perk(id2, wartosc1, 1) new perk_dajacego = cod_get_user_perk(id, wartosc2, 1) cod_set_user_perk(id2, perk_dajacego, wartosc2, 1); cod_set_user_perk(id, perk_oddajacego, wartosc1, 1); dostal_przedmiot[id2][1] = true; dostal_przedmiot[id][1] = true; new nazwa_dajacego[64]; get_user_name(id, nazwa_dajacego, charsmax(nazwa_dajacego)) ColorChat(id, GREEN, "[J2G.PL]^x03 Wymieniles sie perkiem z %s.", data); ColorChat(id2, GREEN, "[J2G.PL]^x03 Wymieniles sie perkiem z %s.", nazwa_dajacego) } case 1: ColorChat(id2, GREEN, "[J2G.PL]^x03 Wybrany gracz nie zgodzil sie na wymiane perka.") }
na
switch(item) { case 0: { new wartosc1, wartosc2; new perk_oddajacego = cod_get_user_perk(id2, wartosc1, 1) new perk_dajacego = cod_get_user_perk(id, wartosc2, 1) cod_set_user_perk2(id2, perk_dajacego, wartosc2, 1); cod_set_user_perk2(id, perk_oddajacego, wartosc1, 1); dostal_przedmiot[id2][1] = true; dostal_przedmiot[id][1] = true; new nazwa_dajacego[64]; get_user_name(id, nazwa_dajacego, charsmax(nazwa_dajacego)) ColorChat(id, GREEN, "[J2G.PL]^x03 Wymieniles sie perkiem z %s.", data); ColorChat(id2, GREEN, "[J2G.PL]^x03 Wymieniles sie perkiem z %s.", nazwa_dajacego) } case 1: ColorChat(id2, GREEN, "[J2G.PL]^x03 Wybrany gracz nie zgodzil sie na wymiane perka.") }
Musialbys jeszcze dodac natyw cod_set_user_perk2 do include i oczywiscie do silnika coda, ustawiajac na nim zmiane perku 2 (public UstawPerk2 czy cos takiego).
wacho
11.10.2017
native cod_get_user_perk2(id, wartosc=0, lp=0); /*------------------------------ Zwraca drugi perk gracza, oraz przypisuje zmiennej wartosc wartosc drugi perka lp jeśli wpiszemy 0 to bedzie pierwszy perk, jeśli 1 to bedzie drugi perk ------------------------------*/ native cod_set_user_perk2(id, perk, wartosc=-1, pokaz_info=1, lp=0); /*------------------------------ Ustawia drugi perk gracza. Jezeli wartosc = -1, wartosc perku bedzie losowa. Jezeli perk = -1 perk bedzie losowy lp jeśli wpiszemy 0 to bedzie pierwszy perk, jeśli 1 to bedzie drugi perk ------------------------------*/ forward cod_perk_changed2(id, perk, wartosc, lp); /*------------------------------ Forward wysylany do wszystkich pluginów w momencie zmiany drugiego perka lp - jaki perk, jeśli 0 to bedzie pierwszy perk, jeśli 1 to bedzie drugi perk ------------------------------*/
W silniku jest w jednej funkcji okreslone ustawianie perków
public UstawPerk(id, perk, wartosc, pokaz_info, lp) { if(!ilosc_perkow) return PLUGIN_CONTINUE; static obroty[33]; if(obroty[id]++ >= 5) { obroty[id] = 0; UstawPerk(id, 0, 0, 0, lp); return PLUGIN_CONTINUE; } perk = (perk == -1)? random_num(1, ilosc_perkow): perk; if(perk == perk_gracza[!lp][id] && perk) { UstawPerk(id, perk, wartosc, pokaz_info, lp); return PLUGIN_CONTINUE; } wartosc = (wartosc == -1 || min_wartosci_perkow[perk] > wartosc || wartosc > max_wartosci_perkow[perk])? random_num(min_wartosci_perkow[perk], max_wartosci_perkow[perk]): wartosc; new ret; new forward_handle = CreateOneForward(pluginy_perkow[perk_gracza[lp][id]], "cod_perk_disabled", FP_CELL, FP_CELL); ExecuteForward(forward_handle, ret, id, perk); DestroyForward(forward_handle); perk_gracza[lp][id] = 0; forward_handle = CreateOneForward(pluginy_perkow[perk], "cod_perk_enabled", FP_CELL, FP_CELL, FP_CELL); ExecuteForward(forward_handle, ret, id, wartosc, perk); DestroyForward(forward_handle); if(ret == 4) { UstawPerk(id, -1, -1, 1, lp); return PLUGIN_CONTINUE; } ExecuteForward( perk_zmieniony, ret, id, perk, wartosc, lp); if(ret == 4) { UstawPerk(id, -1, -1, 1, lp); return PLUGIN_CONTINUE; } obroty[id] = 0; if(pokaz_info && perk) client_print(id, print_chat, "[COD:MW] Zdobyles %s.", nazwy_perkow[perk]); perk_gracza[lp][id] = perk; wartosc_perku_gracza[lp][id] = wartosc; return PLUGIN_CONTINUE; }
Dziwi mnie to że działa mi np kupowanie perków na 1 i 2 slot a zamiana nie działa .