Witam Serdecznie !
Mam pewien problem z awansami klas,
na serwerze są wgrane frakcje, dodam również ze jest nowa statystyka.
Teraz postaram się ten problem omówić, gdy dodaje odpowiednio 2 klasy ( Zwykła + Awans )
Klasy bez errorów jak również silnik.
Po wejsciu na serwer, oczywiscie restart był, wpisuje /klasy pojawia się Zwykła klasa i z Awansem, Jednak nie ma w nich zadnej notki o Awansie tzn, awansuje z/do.
a po wpisaniu /klasa jest tylko zwykła klasa bez awansu.
Fragment silnika wygląda tak:
public OpisKlasy_Handle(id, menu, item) { client_cmd(id, "spk QTM_CodMod/select"); if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } new data[65], iName[64] new acces, callback menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback) item = str_to_num(data); new bronie[320]; for(new i=1, n=1; i <= 32; i++) { if((1<<i) & bronie_klasy[item]) { new weaponname[22]; get_weaponname(i, weaponname, 21); replace_all(weaponname, 21, "weapon_", " "); if(n > 1) add(bronie, charsmax(bronie), ","); add(bronie, charsmax(bronie), weaponname); n++; } } new opis[416+MAX_WIELKOSC_OPISU]; format(opis, charsmax(opis), "\yKlasa: \w%s^n\yInteligencja: \w%i^n\yZdrowie: \w%i^n\yWytrzymalosc: \w%i^n\yKondycja: \w%i^n\yGrawitacja: \w%i^n\yBronie:\w%s^n\yDodatkowy opis: \w%s^n%s", nazwy_klas[item], inteligencja_klas[item], zdrowie_klas[item], wytrzymalosc_klas[item], kondycja_klas[item],grawitacja_klas[item], bronie, opisy_klas[item], opisy_klas[item][79]); if(awansuje_z[item]) format(opis, charsmax(opis), "%s^n\yAwansuje z: \w%s (Wymagany poziom: %i)", opis, nazwy_klas[awansuje_z[item]], awanse[ZnajdzAwans(awansuje_z[item], item)][2]); if(awansuje_do[item]) format(opis, charsmax(opis), "%s^n\yAwansuje do: \w%s (Wymagany poziom: %i)", opis, nazwy_klas[awansuje_do[item]], awanse[ZnajdzAwans(item, awansuje_do[item])][2]); show_menu(id, 1023, opis); return PLUGIN_CONTINUE; } public bool:is_in_previous(frakcja[],from){ for(new i = from - 1;i>=1;i--){ if(equali(frakcja_klas[i],frakcja)){ return true; } } return false; } public WybierzKlase(id) { new menu = menu_create("Wybierz klase:", "WybierzKlase_Frakcje"); for(new i=1; i <= ilosc_klas; i++) { if(!equal(frakcja_klas[i],"") && !is_in_previous(frakcja_klas[i],i)){ menu_additem(menu,frakcja_klas[i],frakcja_klas[i]) } } menu_setprop(menu, MPROP_EXITNAME, "Wyjdz^nChcesz Kupic premium?^nZglos sie na GG: \r49820176^nZapraszamy na forum: \yHolyCrime.pl"); menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona"); menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona"); menu_display(id, menu); } public WybierzKlase_Frakcje(id, menu, item) { if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_CONTINUE; } new data[65], iName[64] new acces, callback menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback) new menu2 = menu_create("Wybierz klase:", "WybierzKlase_Handle"); new klasa[370],bronie[320],bron[22],n, szTmp[5], dana_klasa; for(new i=1; i <= ilosc_klas; i++) { if(JestAwansem(i)) continue; WczytajDane(id, i); bronie = "" n=1 for(new b=1 ; b <= 32; b++) { if((1<<b) & bronie_klasy[i]) { get_weaponname(b, bron, 21) replace_all(bron, 21, "weapon_", "") ucfirst(bron) if(n > 1) add(bronie, charsmax(bronie), ", ") add(bronie, charsmax(bronie), bron) n++ } } 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; } if(equali(data,frakcja_klas[dana_klasa])) { format(klasa, charsmax(klasa), "%s \y[Poziom: \r%i\y] \w-%s %s", nazwy_klas[i], poziom_gracza[id],(n == 2 ? "\d Bron: " : "\d Bronie: "),(bronie)); num_to_str(dana_klasa, szTmp, charsmax(szTmp)); menu_additem(menu2, klasa, szTmp); } } WczytajDane(id, klasa_gracza[id]); menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz"); menu_setprop(menu2, MPROP_BACKNAME, "Poprzednia strona"); menu_setprop(menu2, MPROP_NEXTNAME, "Nastepna strona"); menu_display(id, menu2); client_cmd(id, "spk QTM_CodMod/select"); menu_destroy(menu); return PLUGIN_CONTINUE; } 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], iName[64] new acces, callback menu_item_getinfo(menu, item, acces, data,64, iName, 63, 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; } --------------------------------------- public ZarejestrujKlase(plugin, params) { if(params != 8) return PLUGIN_CONTINUE; if(++ilosc_klas > MAX_ILOSC_KLAS) return -1; pluginy_klas[ilosc_klas] = plugin; get_string(1, nazwy_klas[ilosc_klas], MAX_WIELKOSC_NAZWY); get_string(2, opisy_klas[ilosc_klas], MAX_WIELKOSC_OPISU); bronie_klasy[ilosc_klas] = get_param(3); zdrowie_klas[ilosc_klas] = get_param(4); kondycja_klas[ilosc_klas] = get_param(5); inteligencja_klas[ilosc_klas] = get_param(6); wytrzymalosc_klas[ilosc_klas] = get_param(7); grawitacja_klas[ilosc_klas] = get_param(8); for(new i=0;i<klasid;i++){ if(equali(nazwy_klas[ilosc_klas],nazwa_klasy[i])){ frakcja_klas[ilosc_klas] = nazwa_frakcji[i]; } } return ilosc_klas; } stock ham_strip_weapon(id, weapon[]) { if(!equal(weapon, "weapon_", 7) ) return 0 new wId = get_weaponid(weapon) if(!wId) return 0 new wEnt while( (wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname", weapon) ) && pev(wEnt, pev_owner) != id) {} if(!wEnt) return 0 if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon, wEnt) if(!ExecuteHamB(Ham_RemovePlayerItem, id, wEnt)) return 0 ExecuteHamB(Ham_Item_Kill ,wEnt) set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wId) ) return 1 } stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha) { message_begin( MSG_ONE, MsgScreenfade,{0,0,0},id ); write_short( duration ); // Duration of fadeout write_short( holdtime ); // Hold time of color write_short( fadetype ); // Fade type write_byte ( red ); // Red write_byte ( green ); // Green write_byte ( blue ); // Blue write_byte ( alpha ); // Alpha message_end(); } stock fm_give_item(index, const item[]) { if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10)) return 0; new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item)); if (!pev_valid(ent)) return 0; new Float:origin[3]; pev(index, pev_origin, origin); set_pev(ent, pev_origin, origin); set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN); dllfunc(DLLFunc_Spawn, ent); new save = pev(ent, pev_solid); dllfunc(DLLFunc_Touch, ent, index); if (pev(ent, pev_solid) != save) return ent; engfunc(EngFunc_RemoveEntity, ent); return -1; } public BlokujKomende() return PLUGIN_HANDLED; public ZarejestrujAwans(plugin, params) { if(params != 10) return PLUGIN_CONTINUE; if(++ilosc_klas > MAX_ILOSC_KLAS) return -1; pluginy_klas[ilosc_klas] = plugin; new awans_z = get_param(1); awansuje_do[awans_z] = ilosc_klas; awansuje_z[ilosc_klas] = awans_z; ilosc_awansow++; awanse[ilosc_awansow][1] = ilosc_klas; awanse[ilosc_awansow][0] = awans_z; awanse[ilosc_awansow][2] = get_param(2); get_string(3, nazwy_klas[ilosc_klas], MAX_WIELKOSC_NAZWY); get_string(4, opisy_klas[ilosc_klas], MAX_WIELKOSC_OPISU); bronie_klasy[ilosc_klas] = get_param(5); zdrowie_klas[ilosc_klas] = get_param(6); kondycja_klas[ilosc_klas] = get_param(7); inteligencja_klas[ilosc_klas] = get_param(8); wytrzymalosc_klas[ilosc_klas] = get_param(9); grawitacja_klas[ilosc_klas] = get_param(10); for(new i=0;i<klasid;i++){ if(equali(nazwy_klas[ilosc_klas],nazwa_klasy[i])){ frakcja_klas[ilosc_klas] = nazwa_frakcji[i]; } } return ilosc_klas; } public ZnajdzAwans(Z, Do) { new Return; for(new i=1; i<=ilosc_awansow; i++) { if(awanse[i][0] == Z && awanse[i][1] == Do) { Return = i; break; } } return Return; } public JestAwansem(klasa) { new bool:jest; for(new i=1; i<=ilosc_awansow; i++) { if(awanse[i][1] == klasa) { jest = true; break; } } return jest; }
Dodam również ze wszystkie natywy i define, są dodane.
Proszę o pomoc.
Użytkownik Twist3r edytował ten post 18.04.2014 15:52