/* Plugin generated by AMXX-Studio */ #include #include #include #include #include #include #include #include #include #include new zobaczylem[33] new player_misja[33] new player_expstat[33] new g_damagedealt3[33] new wczytalomujuz[33] #define MAX_WIELKOSC_OPISU 512 native zp_add_ammo_packs(id,amount) new vault public plugin_init() { register_plugin("[Zombie] Quest", "1.0", "SoSerious?") RegisterHam(Ham_Spawn,"player","fwSpawned",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"); RegisterHam(Ham_TakeDamage, "player","fwTakeDamage",1); vault = nvault_open("Questy"); } public plugin_precache() { precache_sound("QTM_CodMod/select.wav"); precache_sound("QTM_CodMod/start.wav"); precache_sound("QTM_CodMod/start2.wav"); precache_sound("QTM_CodMod/levelup.wav"); } public fwSpawned(id){ if(!is_user_alive(id)) return HAM_IGNORED; set_task(5.0, "SprawdzMisje", id) if(player_misja[id]==15) fm_give_item(id, "weapon_m3"); rundy_pkt(id) return PLUGIN_CONTINUE } public rundy_pkt(id) { switch(player_misja[id]) { case 4: { } } } public client_putinserver(id) { } public DeathMsg() { new kid = read_data(1); new vid = read_data(2) new hs = read_data(3); new weaponname[20] if( is_user_connected(kid) && get_user_team(kid) != get_user_team(vid) ) { read_data(4,weaponname,31) add_bonus_misja(kid,vid,weaponname) } if(is_hkz_kill(kid, vid) && player_misja[kid] == 2 ) { player_expstat[kid]++ } if(is_zkhps_kill(kid, vid)&& (player_misja[kid] == 5||player_misja[kid] == 7)) { player_expstat[kid]++ } if(is_hkn_kill(kid, vid)&& player_misja[kid] == 11) { player_expstat[kid]++ } if(is_zks_kill(kid, vid)&& player_misja[kid] == 15) { player_expstat[kid]++ } if(player_misja[kid] == 11) player_expstat[kid]+=15 if(player_misja[kid]==9) przydziel_pkt(kid) if(player_misja[kid] == 13){ if(hs == 1) player_expstat[kid]++ } if((zp_get_user_survivor(kid) && zp_get_user_zombie(vid))&&player_misja[kid]==6) { player_expstat[kid]++ } } 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 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; i0){ menu_additem(MyMenu,"yMisje r| wSilent Hillr |","",0,aktywna); } else if(player_misja[id] >5){ menu_additem(MyMenu,"wMisje r| wSilent Hillr |","",0,aktywna); } else menu_additem(MyMenu,"dMisje r| wSilent Hillr |","",0,aktywna); if(player_misja[id] >5){ menu_additem(MyMenu,"yMisje r| wJestem Legendar |","",0,aktywna); } else if(player_misja[id] >10){ menu_additem(MyMenu,"wMisje r| wJestem Legendar |","",0,aktywna); } else menu_additem(MyMenu,"dMisje r| wJestem Legendar |","",0,aktywna); if(player_misja[id] >10){ menu_additem(MyMenu,"yMisje r| wResident Evilr |","",0,aktywna); } else if(player_misja[id] >15){ menu_additem(MyMenu,"wMisje r| wResident Evilr |","",0,aktywna); } else menu_additem(MyMenu,"dMisje r| wResident Evilr |","",0,aktywna); menu_setprop(MyMenu,MPROP_EXITNAME,"Wyjscie"); menu_setprop(MyMenu,MPROP_BACKNAME,"Wroc") menu_setprop(MyMenu,MPROP_NEXTNAME,"Nastepne") menu_addtext(MyMenu, "^ndQuesty, czyli zadania, tworza fabule Zombie W 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"); //zawsze pokaż opcję wyjścia 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){ if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_HANDLED; } switch(item){ case 0:{ akt1(id) } case 1:{ akt2(id) } case 2:{ akt3(id) } } return PLUGIN_HANDLED; } 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") //zawsze pokaż opcję wyjścia 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){ if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_HANDLED; } switch(item){ case 0..4:{ misja(id) } case 5:{ menu_questow(id) } } return PLUGIN_HANDLED; } 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") //zawsze pokaż opcję wyjścia 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){ if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_HANDLED; } switch(item){ case 0..4:{ misja(id) } case 5:{ menu_questow(id) } } return PLUGIN_HANDLED; } 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") //zawsze pokaż opcję wyjścia 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){ if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_HANDLED; } switch(item){ case 0..4:{ misja(id) } case 5:{ menu_questow(id) } } return PLUGIN_HANDLED; } public item_take_dolicz(id,kill,Float:damage,weapon) { switch(player_misja[id]) { case 1: { player_expstat[id]+=floatround(damage,floatround_round) } case 3: { if(weapon == CSW_USP ) player_expstat[id]+=floatround(damage,floatround_round) } } } public add_bonus_misja(id,kill,weapon[]) { switch(player_misja[id]) { case 4: { if(equal(weapon,"ak47")) player_expstat[id]++ } case 8: { if(equal(weapon,"fiveseven")) player_expstat[id]++ } case 14: { if(equal(weapon,"m3")) player_expstat[id]++ } } } public fwTakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_alive(this) || !is_user_connected(this) || !is_user_connected(idattacker) || get_user_team(this) == get_user_team(idattacker)){ return HAM_IGNORED; } new health = get_user_health(this); new weapon = get_user_weapon(idattacker); if(health < 15){ return HAM_IGNORED; } if(player_misja[idattacker]==9){ g_damagedealt3[idattacker] += floatround(damage) while (g_damagedealt3[idattacker] > 500) { player_expstat[idattacker]++ g_damagedealt3[idattacker] -= 500 } } if(player_misja[idattacker]==10&& zp_get_user_nemesis(this) ){ player_expstat[idattacker] +=floatround(damage) } item_take_dolicz(idattacker,this,damage,weapon) SetHamParamFloat(4, damage); return HAM_IGNORED; } 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 } ///////////// od sprawdzania misij public SprawdzMisje(id) { /////player_expstat to jedna z zmiennych liczaca postep | player misja to nr misij new name[32] get_user_name(id, name, 31) 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] >= 30) 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] >= 10) 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) } } } /////////////// dawanie nagrody public nagrodamisja(id) { new name[32] get_user_name(id, name, 31) new ilosc_ap = questy_ap[player_misja[id]] 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) } /////teraz wg mnie najgorsze czyli opisy (najgorsze = pracochlonne public misja(id) { zobaczylem[id]=1 ///////// do pokazywanie przy starcie rundy 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","Zainfekuj/Zabij 30 ludzi",player_expstat[id],"") } case 6: { cmd_misja(id,"Surviwal Round","Pokaz sile ludzkich wynalazkow","Bedac Surviwalem zabij 4 Zombiakow",player_expstat[id],"") } case 7: { cmd_misja(id,"Tama","Przejscie dla pieszych","Zainfekuj 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",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],"") } } //////////////to co lubisz czyli tabelka public cmd_misja(id,tytul[],opis2[],cozrobic[],ile[],przed[]){ new opis[416+MAX_WIELKOSC_OPISU]; format(opis, charsmax(opis), "yQuest: w%s^nyOpis: w%s^nyCel: w%s^n^nyPostep: w%i %s^n^nyNagroda:^ndExpa r%i^ndAmmoPackow r%i",tytul,opis2,cozrobic,ile,przed,questy_exp[player_misja[id]],questy_ap[player_misja[id]]); show_menu(id, 1023, opis); } /////////////////////////////////teraz czytaj uwaznie///////////// ////////beda to publiki ktore zliczaja postep///////////////////// /////////////////////////paka rozbroienie /podlozenie/////////////// //////np /////////////////////// ///////////////////////////przykladowe uzycie public przydziel_pkt(id) { player_expstat[id]++ ColorChat(id, GREEN, "+1 Punkt do Twojego questa") } 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(!zp_get_user_zombie(killer) && !zp_get_user_survivor(killer) && !zp_get_user_nemesis(victim) && zp_get_user_zombie(victim) && !zp_is_nemesis_round() && !zp_is_survivor_round()) return 1 else return 0 return PLUGIN_CONTINUE } public is_zkhps_kill(killer, victim) { if(zp_get_user_zombie(killer) && !zp_get_user_zombie(victim) && !zp_get_user_survivor(victim) && !zp_get_user_nemesis(killer)) return 1 else return 0 return PLUGIN_CONTINUE } public is_hkn_kill(killer, victim) { if(!zp_get_user_zombie(killer) && zp_get_user_nemesis(victim) && zp_is_nemesis_round()) return 1 else return 0 return PLUGIN_CONTINUE } public is_zks_kill(killer, victim) { if(zp_get_user_zombie(killer) && zp_get_user_survivor(victim) && zp_is_survivor_round() && !zp_get_user_nemesis(killer)) return 1 else return 0 return PLUGIN_CONTINUE } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\ rtf1\ ansi\ deff0{\ fonttbl{\ f0\ fnil Tahoma;}}n\ viewkind4\ uc1\ pard\ lang1045\ f0\ fs16 n\ par } */