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 }
*/


Dodatki SourceMod














