Witam,
Mógłby mi ktoś powiedzieć czemu misja
case 8: cmd_misja(id,"Zaginiona Ciezarowka","Walka z dystansu","Zabij 20 z FIVESEVEN",player_expstat[id],"");
mi się buguje na serwerze? Chodzi dokładnie oto, że niektórym zalicza zabójstwa, a niektorym już nie. Zdarza się to dość często, ale nie u wszystkich.
Spoiler
#include <amxmodx> #include <engine> #include <fakemeta> #include <colorchat> #include <hamsandwich> #include <nvault> #include <zombieplague> #define MAX_WIELKOSC_OPISU 512 new zobaczylem[33]; new player_misja[33]; new player_expstat[33]; new g_damagedealt3[33]; new wczytalomujuz[33]; new vault; native zm_daj_mu_xp(id,amount); native zp_add_ammo_packs(id,amount); native get_user_xp(id); new questy_exp[]={ 0, 50, 50, 40, 40, 50, 50, 50, 60, 60, 60, 70, 70, 70, 80, 90, 100 } new questy_ap[]={ 0, 10, 10, 10, 20, 20, 30, 30, 40, 40, 50, 50, 60, 60, 100, 100, 100 } public plugin_init(){ register_plugin("[Zombie] Quest", "1.0", "SoSerious?");// Edited by Vasto_Lorde RegisterHam(Ham_Spawn, "player", "fwSpawned", 1); RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage", 1); register_event("DeathMsg", "DeathMsg", "a"); register_event("SendAudio", "WygranaTerro" , "a", "2&%!MRAD_terwin"); register_clcmd("say /misje", "menu_questow"); register_clcmd("say /m", "menu_questow"); register_clcmd("say /z", "menu_questow"); register_clcmd("pokazquest", "wywolano"); register_clcmd("say /zadanie", "menu_questow"); vault=nvault_open("Questy"); } public client_connect(id){ zobaczylem[id]=0; wczytalomujuz[id]=0; wczytaj_aktualny_quest(id); g_damagedealt3[id]=0; } public client_disconnect(id){ zapisz_aktualny_quest(id) if(player_misja[id]==9){ player_expstat[id]=0; } } public fwSpawned(id){ if(!is_user_alive(id)) return HAM_IGNORED; if(player_misja[id]==0 && get_user_xp(id)>0 && player_expstat[id]==0 && wczytalomujuz[id]==1) player_misja[id]=1; set_task(5.0, "SprawdzMisje", id); if(player_misja[id]==4) player_expstat[id]++; else if(player_misja[id]==15) fm_give_item(id, "weapon_m3"); return HAM_IGNORED; } public fwTakeDamage(this, idinflictor, idattacker, Float:damage, damagebits){ if(!is_user_alive(this) || !is_user_connected(idattacker) || get_user_team(this)==get_user_team(idattacker)){ return HAM_IGNORED; } if(get_user_health(this)<15){ return HAM_IGNORED; } switch(player_misja[idattacker]){ case 9:{ g_damagedealt3[idattacker]+=floatround(damage); while(g_damagedealt3[idattacker]>500){ player_expstat[idattacker]++; g_damagedealt3[idattacker]-=500; } } case 10: if(zp_get_user_nemesis(this)) player_expstat[idattacker]+=floatround(damage); } item_take_dolicz(idattacker, this, damage, get_user_weapon(idattacker)) return HAM_IGNORED; } public DeathMsg(){ new kid=read_data(1); if(!is_user_connected(kid)) return; new vid=read_data(2); if(get_user_team(kid)==get_user_team(vid)) return; new hs=read_data(3); new weaponname[32]; read_data(4, weaponname, 31); switch(player_misja[kid]){ case 2: if(is_hkz_kill(kid, vid)) player_expstat[kid]++; case 4: if(equal(weaponname,"ak47")) player_expstat[kid]++; case 5,7: if(is_zkhps_kill(kid, vid)) player_expstat[kid]++; case 6: if(zp_get_user_zombie(vid) || zp_get_user_survivor(vid)) player_expstat[kid]++; case 8: if(equal(weaponname,"fiveseven")) player_expstat[kid]++; case 9: player_expstat[kid]++; case 11: if(is_hkn_kill(kid, vid)) player_expstat[kid]++; case 13: if(hs==1) player_expstat[kid]++; case 14: if(equal(weaponname,"m3")) player_expstat[kid]++; case 15: if(is_zks_kill(kid, vid)) player_expstat[kid]++; } } public WygranaTerro(){ WygranaRunda("TERRORIST"); } public WygranaRunda(const Team[]){ new Players[32], playerCount, id; get_players(Players, playerCount, "aeh", Team); if(get_playersnum()<3) return; for (new i=0; i<playerCount; i++){ id=Players[i]; if(player_misja[id]==12) player_expstat[id]++; } } public wywolano(id){ if(player_misja[id]>0 && get_user_xp(id)>0 && zobaczylem[id]==0) set_task(2.0, "menu_questow", id); } public menu_questow(id){ new MyMenu=menu_create("Zombie Plague Questy","questy_menu"); new aktywna=menu_makecallback("aktywna_func"); zobaczylem[id]=1; if(player_misja[id]>0){ menu_additem(MyMenu,"\yMisje \r| \wSilent Hill\r |","",0,aktywna); } else if(player_misja[id]>5){ menu_additem(MyMenu,"\wMisje \r| \wSilent Hill\r |","",0,aktywna); } else menu_additem(MyMenu,"\dMisje \r| \wSilent Hill\r |","",0,aktywna); if(player_misja[id]>5){ menu_additem(MyMenu,"\yMisje \r| \wJestem Legenda\r |","",0,aktywna); } else if(player_misja[id]>10){ menu_additem(MyMenu,"\wMisje \r| \wJestem Legenda\r |","",0,aktywna); } else menu_additem(MyMenu,"\dMisje \r| \wJestem Legenda\r |","",0,aktywna); if(player_misja[id]>10){ menu_additem(MyMenu,"\yMisje \r| \wResident Evil\r |","",0,aktywna); } else if(player_misja[id]>15){ menu_additem(MyMenu,"\wMisje \r| \wResident Evil\r |","",0,aktywna); } else menu_additem(MyMenu,"\dMisje \r| \wResident Evil\r |","",0,aktywna); menu_setprop(MyMenu, MPROP_EXITNAME, "Wyjscie"); menu_setprop(MyMenu, MPROP_BACKNAME, "Wroc"); menu_setprop(MyMenu, MPROP_NEXTNAME, "Nastepne"); menu_addtext(MyMenu, "^n\dQuesty, czyli zadania, tworza fabulew Zombie Apokalipsy^nW sumie do wykonania mamy 18 Questow^nNajczesciej polegaja na Zabiciu ilus wrogow w zaleznosci od polozenia^nZa wykonanie zadan otrzymujemy Bonusy Expa i AmmoPackow^nAby otworzyc ponownie Menu Questow wpisz \w/q \d lub \w/z"); menu_setprop(MyMenu, MPROP_EXIT, MEXIT_ALL); menu_setprop(MyMenu, MPROP_PERPAGE, 7); menu_display(id, MyMenu, 0); return PLUGIN_HANDLED; } public questy_menu(id, menu, item){ switch(item){ case MENU_EXIT: menu_destroy(menu); case 0: akt1(id); case 1: akt2(id); case 2: akt3(id); default: menu_destroy(menu); } } public aktywna_func(id, menu, item){ return ITEM_ENABLED; } public nieaktywna_func(id, menu, item){ return ITEM_DISABLED; } public akt1(id){ new MyMenu=menu_create("Silent Hill", "questy_akt1"); new aktywna=menu_makecallback("aktywna_func"); new nieaktywna=menu_makecallback("nieaktywna_func"); if(player_misja[id]==1){ menu_additem(MyMenu,"\yTrening","", 0,aktywna); } else if(player_misja[id]>1){ menu_additem(MyMenu,"\wTrening","", 0, nieaktywna); } else menu_additem(MyMenu,"\dTrening","", 0, nieaktywna); if(player_misja[id]==2){ menu_additem(MyMenu,"\yOdnajdywanie sciezki","", 0, aktywna); } else if(player_misja[id]>2){ menu_additem(MyMenu,"\wOdnajdywanie sciezki","", 0, nieaktywna); } else menu_additem(MyMenu,"\dOdnajdywanie sciezki","", 0, nieaktywna); if(player_misja[id]==3){ menu_additem(MyMenu,"\yPlonaca wioska","", 0, aktywna); } else if(player_misja[id]>3){ menu_additem(MyMenu,"\wPlonaca wioska","", 0, nieaktywna); } else menu_additem(MyMenu,"\dPlonaca wioska","", 0, nieaktywna); if(player_misja[id]==4){ menu_additem(MyMenu,"\yDwor Brecourt","", 0, aktywna); } else if(player_misja[id]>4){ menu_additem(MyMenu,"\wDwor Brecourt","", 0, nieaktywna); } else menu_additem(MyMenu,"\dDwor Brecourt","", 0, nieaktywna); if(player_misja[id]==5){ menu_additem(MyMenu,"\yZameczek Chateau","", 0, aktywna); } else if(player_misja[id]>5){ menu_additem(MyMenu,"\wZameczek Chateau","", 0, nieaktywna); } else menu_additem(MyMenu,"\dZameczek Chateau","", 0, nieaktywna); menu_additem(MyMenu,"\rMenu Glowne","", 0, aktywna); menu_setprop(MyMenu, MPROP_EXITNAME, "Wyjscie"); menu_setprop(MyMenu, MPROP_BACKNAME, "Wroc"); menu_setprop(MyMenu, MPROP_NEXTNAME, "Nastepne"); menu_setprop(MyMenu,MPROP_EXIT,MEXIT_ALL); menu_setprop(MyMenu,MPROP_PERPAGE,7); menu_display(id, MyMenu,0); return PLUGIN_HANDLED; } public questy_akt1(id, menu, item){ switch(item){ case MENU_EXIT: menu_destroy(menu); case 0..4: misja(id); case 5: menu_questow(id); default: menu_destroy(menu); } } public akt2(id){ new MyMenu=menu_create("Jestem Legenda","questy_akt2"); new aktywna=menu_makecallback("aktywna_func"); new nieaktywna=menu_makecallback("nieaktywna_func"); if(player_misja[id]==6){ menu_additem(MyMenu,"\yMost Pegasus","", 0, aktywna); } else if(player_misja[id]>6){ menu_additem(MyMenu,"\wMost Pegasus","", 0, nieaktywna); } else menu_additem(MyMenu,"\dMost Pegasus","", 0, nieaktywna); if(player_misja[id]==7){ menu_additem(MyMenu,"\yTama","", 0, aktywna); } else if(player_misja[id]>7){ menu_additem(MyMenu,"\wTama","", 0, nieaktywna); } else menu_additem(MyMenu,"\dTama","", 0, nieaktywna); if(player_misja[id]==8){ menu_additem(MyMenu,"\yZaginiona Ciezarowka","", 0, aktywna); } else if(player_misja[id]>8){ menu_additem(MyMenu,"\wZaginiona Ciezarowka","", 0, nieaktywna); } else menu_additem(MyMenu,"\dZaginiona Ciezarowka","", 0, nieaktywna); if(player_misja[id]==9){ menu_additem(MyMenu,"\yZniszczone Lotnisko","", 0, aktywna); } else if(player_misja[id]>9){ menu_additem(MyMenu,"\wZniszczone Lotnisko","", 0, nieaktywna); } else menu_additem(MyMenu,"\dZniszczone Lotnisko","", 0, nieaktywna); if(player_misja[id]==10){ menu_additem(MyMenu,"\yUprowadzony Okret","", 0, aktywna); } else if(player_misja[id]>10){ menu_additem(MyMenu,"\wUprowadzony Okret","", 0, nieaktywna); } else menu_additem(MyMenu,"\dUprowadzony Okret","", 0, nieaktywna); menu_additem(MyMenu,"\rMenu Glowne","", 0, aktywna); menu_setprop(MyMenu, MPROP_EXITNAME, "Wyjscie"); menu_setprop(MyMenu, MPROP_BACKNAME, "Wroc"); menu_setprop(MyMenu, MPROP_NEXTNAME, "Nastepne"); menu_setprop(MyMenu, MPROP_EXIT, MEXIT_ALL); menu_setprop(MyMenu, MPROP_PERPAGE, 7); menu_display(id, MyMenu,0); return PLUGIN_HANDLED; } public questy_akt2(id, menu, item){ switch(item){ case MENU_EXIT: menu_destroy(menu); case 0..4: misja(id); case 5: menu_questow(id); default: menu_destroy(menu); } } public akt3(id){ new MyMenu=menu_create("Resident Evil", "questy_akt3"); new aktywna=menu_makecallback("aktywna_func"); new nieaktywna=menu_makecallback("nieaktywna_func"); if(player_misja[id]==11){ menu_additem(MyMenu,"\yStalingrad","", 0, aktywna); } else if(player_misja[id]>11){ menu_additem(MyMenu,"\wStalingrad","", 0, nieaktywna); } else menu_additem(MyMenu,"\dStalingrad","", 0, nieaktywna); if(player_misja[id]==12){ menu_additem(MyMenu,"\yPlac Czerwony","", 0, aktywna); } else if(player_misja[id]>12){ menu_additem(MyMenu,"\wPlac Czerwony","", 0, nieaktywna); } else menu_additem(MyMenu,"\dPlac Czerwony","", 0, nieaktywna); if(player_misja[id]==13){ menu_additem(MyMenu,"\yStacja kolejowa","", 0, aktywna); } else if(player_misja[id]>13){ menu_additem(MyMenu,"\wStacja kolejowa","", 0, nieaktywna); } else menu_additem(MyMenu,"\dStacja kolejowa","", 0, nieaktywna); if(player_misja[id]==14){ menu_additem(MyMenu,"\yFabryka ","", 0, aktywna); } else if(player_misja[id]>14){ menu_additem(MyMenu,"\wFabryka","", 0, nieaktywna); } else menu_additem(MyMenu,"\dFabryka","", 0, nieaktywna); if(player_misja[id]==15){ menu_additem(MyMenu,"\yBerlin","", 0, aktywna); } else if(player_misja[id]>15){ menu_additem(MyMenu,"\wBerlin","", 0, nieaktywna); } else menu_additem(MyMenu,"\dBerlin","", 0, nieaktywna); menu_additem(MyMenu,"\rMenu Glowne","", 0, aktywna); menu_setprop(MyMenu, MPROP_EXITNAME, "Wyjscie"); menu_setprop(MyMenu, MPROP_BACKNAME, "Wroc"); menu_setprop(MyMenu, MPROP_NEXTNAME, "Nastepne"); menu_setprop(MyMenu, MPROP_EXIT, MEXIT_ALL); menu_setprop(MyMenu, MPROP_PERPAGE, 7); menu_display(id, MyMenu,0); return PLUGIN_HANDLED; } public questy_akt3(id, menu, item){ switch(item){ case MENU_EXIT: menu_destroy(menu); case 0..4: misja(id); case 5: menu_questow(id); default: menu_destroy(menu); } } public item_take_dolicz(id,kill,Float:damage,weapon){ switch(player_misja[id]){ case 1:{ player_expstat[id]+=floatround(damage,floatround_round); if(player_expstat[id]>2000) player_expstat[id]=2000; } case 3:{ if(weapon==CSW_USP) player_expstat[id]+=floatround(damage,floatround_round); if(player_expstat[id]>5000) player_expstat[id]=5000; } } } public SprawdzMisje(id){ switch(player_misja[id]){ case 1: if(player_expstat[id]>=2000) nagrodamisja(id); case 2: if(player_expstat[id]>=2) nagrodamisja(id); case 3: if(player_expstat[id]>=5000) nagrodamisja(id); case 4: if(player_expstat[id]>=50) nagrodamisja(id); case 5: if(player_expstat[id]>=15) nagrodamisja(id); case 6: if(player_expstat[id]>=4) nagrodamisja(id); case 7: if(player_expstat[id]>=50) nagrodamisja(id); case 8: if(player_expstat[id]>=20) nagrodamisja(id); case 9: if(player_expstat[id]>=50) nagrodamisja(id); case 10: if(player_expstat[id]>=10000) nagrodamisja(id); case 11: if(player_expstat[id]>=2) nagrodamisja(id); case 12: if(player_expstat[id]>=15) nagrodamisja(id); case 13: if(player_expstat[id]>=50) nagrodamisja(id); case 14: if(player_expstat[id]>=15) nagrodamisja(id); case 15: if(player_expstat[id]>=10) nagrodamisja(id); } } public nagrodamisja(id){ new name[32]; get_user_name(id, name, 31); new doswiadczenie_questa=questy_exp[player_misja[id]]; new ilosc_ap=questy_ap[player_misja[id]]; zm_daj_mu_xp(id, doswiadczenie_questa); zp_add_ammo_packs(id, ilosc_ap); ColorChat(0, GREEN, "^x04 %s^x01 Wykonal Misje nr %i | +^x04 %i ^x01oraz^x04 %i AP", name,player_misja[id],questy_exp[player_misja[id]],questy_ap[player_misja[id]]) player_misja[id]++ player_expstat[id]=0; zobaczylem[id]=0; zapisz_aktualny_quest(id); } public misja(id){ zobaczylem[id]=1; switch(player_misja[id]){ case 1: cmd_misja(id,"Trening","Sprawdzenie umiejetnosci strzeleckich","Zadaj 2000 DMG",player_expstat[id],"DMG"); case 2: cmd_misja(id,"Odnajdywanie sciezki ","Sztuka przetrwania","Musisz zabic 2 Zombiakow",player_expstat[id],"Zombiakow"); case 3: cmd_misja(id,"Płonaca wioska","Nie pozwol mieszkancom umrzec","Zadaj 5000 DMG z USP",player_expstat[id],"DMG"); case 4: cmd_misja(id,"Dwor Brecourt","Poznaj ludzi","Zagraj z nami 50 rund",player_expstat[id],"!"); case 5: cmd_misja(id,"Zameczek Chateau","Role sie odmienily","Zabij 15 ludzi",player_expstat[id],""); case 6: cmd_misja(id,"Surviwal Round","Pokaz sile ludzkich wynalazkow","bedąc Surviwalem zabij 4 Zombiakow",player_expstat[id],""); case 7: cmd_misja(id,"Tama","Przejscie dla pieszych","Zabij 50 Ludzi",player_expstat[id],""); case 8: cmd_misja(id,"Zaginiona Ciezarowka","Walka z dystansu","Zabij 20 z FIVESEVEN",player_expstat[id],""); case 9: cmd_misja(id,"Zniszczone Lotnisko","Mnostwo AmmoPackow","Zdobadz 50 AmmoPackow na 1 mapie",player_expstat[id],"AP"); case 10: cmd_misja(id,"Uprowadzony Okret","Obij nemesisa","Zadaj 10k Dmg w nemesisa",player_expstat[id],""); case 11: cmd_misja(id,"Stalingrad","Ostatnia nadzieja","Zabij 2 Nemesiow",player_expstat[id],""); case 12: cmd_misja(id,"Plac Czerwony","ZOMBIE VS HUMANS","Wraz ze swoim teamem wygraj 15rund",player_expstat[id],""); case 13: cmd_misja(id,"Stacja kolejowa","Wyrznij wszytskich w pien","Zabij 50 Za pomoca Headshota",player_expstat[id],""); case 14: cmd_misja(id,"Fabryka","Cisza i spokoj","Zabij z M3 15 razy",player_expstat[id],""); case 15: cmd_misja(id,"Droga do piekla","Zrob rozpierdol!","Zabij 10 Surviwalow",player_expstat[id],""); default: cmd_misja(id,"Poczekaj","Na razie questu brak","Poczekaj max 2dni",player_expstat[id],""); } } public cmd_misja(id,tytul[],opis2[],cozrobic[],ile[],przed[]){ new opis[416+MAX_WIELKOSC_OPISU]; format(opis, charsmax(opis), "\yQuest: \w%s^n\yOpis: \w%s^n\yCel: \w%s^n^n\yPostep: \w%i %s^n^n\yNagroda:^n\dExpa \r%i^n\dAmmoPackow \r%i",tytul,opis2,cozrobic,ile,przed,questy_exp[player_misja[id]],questy_ap[player_misja[id]]); show_menu(id, 1023, opis); } 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 zapisz_aktualny_quest(id){ if(player_misja[id]==0) return PLUGIN_CONTINUE new name[64]; get_user_name(id,name,63) strtolower(name) new key[256]; format(key,255,"questy-%s",name); new data[32] formatex(data,charsmax(data),"#%d#%d",player_misja[id],player_expstat[id]); nvault_set(vault,key,data); return PLUGIN_CONTINUE; } public wczytaj_aktualny_quest(id){ new name[64]; get_user_name(id,name,63) strtolower(name) new key[256]; format(key,255,"questy-%s",name); new data[32]; nvault_get(vault,key,data,31); replace_all(data,31,"#"," "); new questt[32],ile[32] parse(data,questt,31,ile,31) player_misja[id] = str_to_num(questt) player_expstat[id] = str_to_num(ile) wczytalomujuz[id]=1 } public is_hkz_kill(killer, victim){ if(!is_user_connected(killer) || !is_user_connected(victim)) return 0; if(!zp_get_user_zombie(killer) || zp_get_user_zombie(victim) || !zp_get_user_survivor(killer) || !zp_get_user_nemesis(victim) || !zp_is_nemesis_round() || !zp_is_survivor_round()) return 1; return 0; } public is_zkhps_kill(killer, victim){ if(!is_user_connected(killer) || !is_user_connected(victim)) return 0; if(zp_get_user_zombie(killer) || !zp_get_user_zombie(victim) || !zp_get_user_survivor(victim) || !zp_get_user_nemesis(killer)) return 1; return 0; } public is_hkn_kill(killer, victim){ if(!is_user_connected(killer) || !is_user_connected(victim)) return 0; if(!zp_get_user_zombie(killer) || zp_get_user_nemesis(victim) || zp_is_nemesis_round()) return 1 return 0; } public is_zks_kill(killer, victim){ if(!is_user_connected(killer) || !is_user_connected(victim)) return 0; if(zp_get_user_zombie(killer) || zp_get_user_survivor(victim) || zp_is_survivor_round() || !zp_get_user_nemesis(killer)) return 1 return 0; } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par } */