|
Стаж: 15 лет
Сообщений: 270
Благодарностей: 38
Полезность: 120
|
Здравствуйте. Пославил плагин админ и вип меню, но пишет ошибку при написании amxx plugins: ( 48) Load fails: Plugin uses an unknown function (name "give_jet_pack") - check your modules.ini. Код:
#include <amxmodx> #include <fakemeta_util> #include <zombieplague>
native give_jet_pack(id)
new bool:g_iPlayerAmmo[33] new g_iPlayerHealth[33] new g_iPlayerArmor[33]
public plugin_init() { register_plugin("[ZP] Admin & Vip Menu", "1.0", "heka / di.alyabev") register_clcmd("/admin_menu", "Show_AdminMenu") register_clcmd("/vip_menu", "Show_VipMenu") register_event( "HLTV" , "EventRoundStart" , "a" , "1=0" , "2=0" ) }
public EventRoundStart() { for(new i = 0; i < 33; i++) { if(!is_user_connected(i)) continue; if(g_iPlayerHealth[i] >0) g_iPlayerHealth[i]-- if(g_iPlayerArmor[i] >0) g_iPlayerArmor[i]-- } }
public Show_AdminMenu(id) { if(zp_get_user_survivor(id) || zp_get_user_nemesis(id)) { PrintChatColor(id, "!g[ZP] !yВыживший и Немезида не могут использовать !gАдмин меню!y!") return; }
new menu = menu_create("Админ меню", "Handler_AdminMenu") if(get_user_flags(id) & ADMIN_RESERVATION) { menu_additem(menu, "Сделать зомби", "1") menu_additem(menu, "Сделать Немезидой", "2") menu_additem(menu, "Сделать Выжившим", "3") menu_additem(menu, "Сделать Массовое заражение", "4") if(zp_get_user_ammo_packs(id)>= 50 && !zp_get_user_zombie(id)) menu_additem(menu, "Купить Джетпак \y[50 Аммо]", "5") else menu_additem(menu, "\dКупить Джетпак [50 Аммо]", "5") if(!g_iPlayerAmmo[id]) menu_additem(menu, "Взять \yАммо \r[+50]", "6") else menu_additem(menu, "\dВзять Аммо [+50]", "6") menu_additem(menu, "Управление AMXMODMENU", "7") } else { menu_additem(menu, "\dСделать зомби", "1") menu_additem(menu, "\dСделать Немезидой", "2") menu_additem(menu, "\dСделать Выжившим", "3") menu_additem(menu, "\dСделать Массовое заражение", "4") menu_additem(menu, "\dКупить Джетпак [50 аммо]", "5") menu_additem(menu, "\dВзять аммо [+50]", "6") menu_additem(menu, "\dУправление AMXMODMENU^n^n\yВы не \rАдмин\y!^n\wДля покупки пишите в \rSkype: \ydandyzp", "7") } menu_setprop(menu, MPROP_EXITNAME , "Выход") menu_setprop(menu, MPROP_EXIT , MEXIT_ALL) menu_display(id , menu, 0) }
public Handler_AdminMenu(id , menu, items) { if(items == MENU_EXIT) { menu_destroy(menu) return; } if(!(get_user_flags(id) & ADMIN_RESERVATION)) { PrintChatColor(id, "!g[ZP] !yУ Вас нет прав на использование !gАдмин меню!y!") Show_AdminMenu(id) return; }
new pData[6], pName[64], pAccess, pCallback, pName2[32] menu_item_getinfo(menu , items , pAccess , pData , charsmax(pData) , pName , charsmax(pName) , pCallback) get_user_name(id, pName2, charsmax(pName2)) new pKey = str_to_num(pData)
switch(pKey) { case 1: { if(zp_has_round_started()) { PrintChatColor(id, "!g[ZP] !yДелать себя !gзомби !yможно только в начале раунда!") Show_AdminMenu(id) return; } client_cmd(id, "zp_zombie %s", pName2) PrintChatColor(id, "!g[ZP] !yТы сделал себя !gзомби!y!") Show_AdminMenu(id) } case 2: { if(zp_has_round_started()) { PrintChatColor(id, "!g[ZP] !yДелать себя !gнемезидой !yможно только в начале раунда!") Show_AdminMenu(id) return; } client_cmd(id, "zp_nemesis %s", pName2) PrintChatColor(id, "!g[ZP] !yТы сделал себя !gнемезидой!y!") Show_AdminMenu(id) } case 3: { if(zp_has_round_started()) { PrintChatColor(id, "!g[ZP] !yДелать себя !gвыжившим !yможно только в начале раунда!") Show_AdminMenu(id) return; } client_cmd(id, "zp_survivor %s", pName2) PrintChatColor(id, "!g[ZP] !yТы сделал себя !gвыжившим!y!") Show_AdminMenu(id) } case 4: { if(zp_has_round_started()) { PrintChatColor(id, "!g[ZP] !yДелать !gмассовое заражение !yможно только в начале раунда!") Show_AdminMenu(id) return; } client_cmd(id, "zp_multi") PrintChatColor(id, "!g[ZP] !yТы сделал !gмассовое заражение!y!") Show_AdminMenu(id) } case 5: { if(zp_get_user_ammo_packs(id) <50) { PrintChatColor(id, "!g[ZP] !yНедостаточно Аммо для покупки !gДжетпака!y!") Show_VipMenu(id) return; } if(zp_get_user_zombie(id)) { PrintChatColor(id, "!g[ZP] !yЗомби не могут покупать !gДжетпак!y!") Show_VipMenu(id) return; } zp_set_user_ammo_packs(id , zp_get_user_ammo_packs(id) - 50) give_jet_pack(id) PrintChatColor(id, "!g[ZP] !yТы купил !gджетпак!y!") Show_AdminMenu(id) } case 6: { if(g_iPlayerAmmo[id]) { PrintChatColor(id, "!g[ZP] !yНа этой карте ты уже брал !gАммо!y!") Show_AdminMenu(id) return; } zp_set_user_ammo_packs(id , zp_get_user_ammo_packs(id) + 50) PrintChatColor(id, "!g[ZP] !yТы взял !gАммо!y!") g_iPlayerAmmo[id] = true Show_AdminMenu(id) } case 7: { client_cmd(id , "amxmodmenu") menu_destroy(menu) return } } menu_destroy(menu) }
public Show_VipMenu(id) { if(zp_get_user_survivor(id) || zp_get_user_nemesis(id)) { PrintChatColor(id, "!g[ZP] !yВыживший и Немезида не могут использовать !gВип меню!y!") return; }
new menu = menu_create("Вип меню", "Handler_VipMenu") if(get_user_flags(id) & ADMIN_LEVEL_H) { if(zp_get_user_ammo_packs(id)>= 50 && !zp_get_user_zombie(id)) menu_additem(menu, "Купить Джетпак \y[50 аммо]", "1") else menu_additem(menu, "\dКупить Джетпак [50 аммо]", "1") if(!g_iPlayerAmmo[id]) menu_additem(menu, "Взять \yАммо \r[+50]", "2") else menu_additem(menu, "\dВзять Аммо [+50]", "2") if(g_iPlayerHealth[id] <= 0) menu_additem(menu, "Взять \yЖизни \r[+100]", "3") else menu_additem(menu, "\dВзять Жизни [+100]", "3") if(g_iPlayerArmor[id] <= 0) menu_additem(menu, "Взять \yБроню \r[+200]", "4") else menu_additem(menu, "\dВзять Броню [+200]", "4") } else { menu_additem(menu, "\dКупить Джетпак [50 аммо]", "1") menu_additem(menu, "\dВзять Аммо [+50]", "2") menu_additem(menu, "\dВзять Жизни [+100]", "3") menu_additem(menu, "\dВзять Броню [+200]^n^n\yВы не \rВип\y!^n\wДля покупки пишите в \rSkype: \ydandyzp", "4") } menu_setprop(menu, MPROP_EXITNAME , "Выход") menu_setprop(menu, MPROP_EXIT , MEXIT_ALL) menu_display(id , menu, 0) }
public Handler_VipMenu(id , menu, items) { if(items == MENU_EXIT) { menu_destroy(menu) return; } if(!(get_user_flags(id) & ADMIN_LEVEL_H)) { PrintChatColor(id, "!g[ZP] !yУ Вас нет прав на использование !gВип меню!y!") Show_VipMenu(id) return; }
new pData[6], pName[64], pAccess, pCallback, pName2[32] menu_item_getinfo(menu , items , pAccess , pData , charsmax(pData) , pName , charsmax(pName) , pCallback) get_user_name(id, pName2, charsmax(pName2)) new pKey = str_to_num(pData)
switch(pKey) { case 1: { if(zp_get_user_ammo_packs(id) <50) { PrintChatColor(id, "!g[ZP] !yНедостаточно Аммо для покупки !gджетпака!y!") Show_VipMenu(id) return; } if(zp_get_user_zombie(id)) { PrintChatColor(id, "!g[ZP] !yЗомби не могут покупать !gджетпак!y!") Show_VipMenu(id) return; } zp_set_user_ammo_packs(id , zp_get_user_ammo_packs(id) - 50) give_jet_pack(id) PrintChatColor(id, "!g[ZP] !yТы купил !gджетпак!y!") Show_VipMenu(id) } case 2: { if(g_iPlayerAmmo[id]) { PrintChatColor(id, "!g[ZP] !yНа этой карте ты уже брал !gАммо!y!") Show_VipMenu(id) return; } zp_set_user_ammo_packs(id , zp_get_user_ammo_packs(id) + 50) PrintChatColor(id, "!g[ZP] !yТы взял !gАммо!y!") g_iPlayerAmmo[id] = true Show_VipMenu(id) } case 3: { if(g_iPlayerHealth[id] > 0) { PrintChatColor(id, "!g[ZP] !yБрать !gжизни !yможно 1 раз в 2 раунда!") Show_VipMenu(id) return; } PrintChatColor(id, "!g[ZP] !yТы взял !gжизни!y!") g_iPlayerHealth[id] = 2 fm_set_user_health(id, fm_get_user_health(id) + 100) Show_VipMenu(id) } case 4: { if(g_iPlayerArmor[id] > 0) { PrintChatColor(id, "!g[ZP] !yБрать !gброню !yможно 1 раз в 2 раунда!") Show_VipMenu(id) return; } PrintChatColor(id, "!g[ZP] !yТы взял !gброню!y!") g_iPlayerArmor[id] = 2 set_pev(id, pev_armorvalue, 200.0); Show_VipMenu(id) } } menu_destroy(menu) }
stock fm_get_user_health(id) { return pev(id, pev_health) }
stock PrintChatColor(const id , const input[], any:...) { new count = 1, players[32] static msg[191] vformat(msg, 190, input, 3) replace_all(msg, 190, "!g", "^4") // Green Color replace_all(msg, 190, "!y", "^1") // Default Color replace_all(msg, 190, "!team", "^3") // Team Color if(id) players[0] = id; else get_players(players, count, "ch") { for (new i = 0; i <count; i++) { if(is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]) write_byte(players[i]); write_string(msg); message_end(); } } } } Код:
#include <amxmodx> #include <fun> #include <engine> #include <fakemeta> #include <hamsandwich> #include <zombieplague>
#define PLUGINNAME "Extra Item Jetpack+Bazooka" #define VERSION "3.2" #define AUTHOR "B!gBud"
#define ACCESS_LEVEL ADMIN_LEVEL_A #define VOTE_ACCESS ADMIN_CFG
#define TE_EXPLOSION 3 #define TE_BEAMFOLLOW 22 #define TE_BEAMCYLINDER 21
#define JETPACK_COST 30 // set how may ammopacks the Jatpack+Rocket cost
new ROCKET_MDL[64] = "models/rpgrocket.mdl" new ROCKET_SOUND[64] = "weapons/rocketfire1.wav" new getrocket[64] = "items/9mmclip2.wav"
new bool:fly[33] = false new bool:rocket[33] = false new bool:rksound[33] = false new bool:shot[33] = false
new Float:gltime = 0.0 new Float:last_Rocket[33] = 0.0 new Float:jp_cal[33] = 0.0 new Float:jp_soun[33] = 0.0 new flame, explosion, trail, white new g_flyEnergy[33], hasjet[33] new cvar_jetpack, cvar_jetpackSpeed, cvar_jetpackUpSpeed, cvar_jetpackAcrate ,cvar_RocketDelay, cvar_RocketSpeed, cvar_RocketDmg, cvar_Dmg_range, cvar_fly_max_engery, cvar_fly_engery, cvar_regain_energy, g_item_jetpack, cvar_cal_time, cvar_oneround
public plugin_init() { register_plugin(PLUGINNAME, VERSION, AUTHOR) g_item_jetpack = zp_register_extra_item("Jetpack+Bazooka (one Round)", JETPACK_COST, ZP_TEAM_HUMAN) register_clcmd("drop","cmdDrop") register_clcmd("say /jphelp","cmdHelp",0,": Displays Jetpack help") new ver[64] format(ver,63,"%s v%s",PLUGINNAME,VERSION) register_cvar("zp_jp_version",ver,FCVAR_SERVER) cvar_jetpack = register_cvar("zp_jetpack", "2") cvar_jetpackSpeed=register_cvar("zp_jp_forward_speed","300.0") cvar_jetpackUpSpeed=register_cvar("zp_jp_up_speed","35.0") cvar_jetpackAcrate=register_cvar("zp_jp_accelerate","100.0") cvar_RocketDelay=register_cvar("zp_jp_rocket_delay","12.0") cvar_RocketSpeed=register_cvar("zp_jp_rocket_speed","1500") cvar_RocketDmg=register_cvar("zp_jp_rocket_damage","700") cvar_Dmg_range=register_cvar("zp_jp_damage_radius","300") cvar_fly_max_engery = register_cvar("zp_jp_max_engery", "100") cvar_fly_engery = register_cvar("zp_jp_engery", "10") cvar_regain_energy = register_cvar("zp_jp_regain_energy", "3") cvar_cal_time = register_cvar("zp_jp_energy_cal", "1.0") cvar_oneround = register_cvar("zp_jp_oneround", "0")
register_event("CurWeapon", "check_models", "be") register_event("DeathMsg", "player_die", "a") register_event("HLTV", "event_round_start", "a", "1=0", "2=0") register_forward(FM_StartFrame, "fm_startFrame") register_forward(FM_EmitSound, "emitsound") }
public plugin_precache() { precache_model("models/p_egon.mdl") precache_model("models/v_egon.mdl") precache_model("models/w_egon.mdl") precache_sound("jetpack.wav") precache_sound("jp_blow.wav") precache_model(ROCKET_MDL) precache_sound(ROCKET_SOUND) precache_sound(getrocket) explosion = precache_model("sprites/zerogxplode.spr") trail = precache_model("sprites/smoke.spr") flame = precache_model("sprites/xfireball3.spr") white = precache_model("sprites/white.spr") }
public zp_user_humanized_post(id, surv) { if(surv) hasjet[id] = 0 }
public client_putinserver(id) { fly[id] = false rocket[id] = false hasjet[id] = 0 g_flyEnergy[id] = 0 }
public client_disconnect(id) { fly[id] = false rocket[id] = false hasjet[id] = 0 g_flyEnergy[id] = 0 }
public event_round_start() { remove_jetpacks(); if (get_pcvar_num(cvar_oneround) == 1) { for (new id; id <= 32; id++) hasjet[id] = 0, g_flyEnergy[id] = 0, fly[id] = false; } }
public fm_startFrame(){ gltime = get_gametime() static id for (id = 1; id <= 32; id++) { jp_forward(id) } }
public jp_forward(player) { if (!hasjet[player]) return FMRES_IGNORED
if (!is_user_alive(player) && (zp_get_user_zombie(player) || zp_get_user_nemesis(player) || zp_get_user_survivor(player))) return FMRES_IGNORED if(jp_cal[player] < gltime){ jp_energy(player); jp_cal[player] = gltime + get_pcvar_float(cvar_cal_time) } check_rocket(player) static clip, ammo, wpnid wpnid = get_user_weapon(player,clip,ammo) if (wpnid == CSW_KNIFE){ if(get_pcvar_num(cvar_jetpack) == 1){ if(!(pev(player, pev_flags)&FL_ONGROUND) && pev(player,pev_button)&IN_ATTACK){ if((g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.3) && (g_flyEnergy[player] <= get_pcvar_num(cvar_fly_max_engery))){ if(jp_soun[player] < gltime){ emit_sound(player,CHAN_ITEM,"jetpack.wav",1.0,ATTN_NORM,1,PITCH_HIGH) jp_soun[player] = gltime + 1.0 } } else if((g_flyEnergy[player] > 0) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.3)){ if(jp_soun[player] < gltime){ emit_sound(player,CHAN_ITEM,"jp_blow.wav",1.0,ATTN_NORM,1,PITCH_HIGH) jp_soun[player] = gltime + 1.0 } } } human_fly(player) attack(player) } if((pev(player,pev_button)&IN_ATTACK2)){ attack2(player) } } if((get_pcvar_num(cvar_jetpack) == 2 && !(pev(player, pev_flags)&FL_ONGROUND)) && (pev(player,pev_button)&IN_JUMP && pev(player,pev_button)&IN_DUCK)){ if((g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.3) && (g_flyEnergy[player] <= get_pcvar_num(cvar_fly_max_engery))){ if(jp_soun[player] < gltime){ emit_sound(player,CHAN_ITEM,"jetpack.wav",1.0,ATTN_NORM,1,PITCH_HIGH) jp_soun[player] = gltime + 1.0 } } else if((g_flyEnergy[player] > 0) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.3)){ if(jp_soun[player] < gltime){ emit_sound(player,CHAN_ITEM,"jp_blow.wav",1.0,ATTN_NORM,1,PITCH_HIGH) jp_soun[player] = gltime + 1.0 } } human_fly(player) attack(player) } // Icon Show system /*if (!is_user_alive(player) && zp_get_user_zombie(player) && zp_get_user_nemesis(player) && zp_get_user_survivor(player)) Icon_Energy({0, 255, 0}, 0, player); //Icon_Energy({128, 128, 0}, 0, player); //Icon_Energy({255, 255, 0}, 0, player); }*/ if((g_flyEnergy[player] >= get_pcvar_num(cvar_fly_max_engery)*0.8) && (g_flyEnergy[player] <= get_pcvar_num(cvar_fly_max_engery))){ Icon_Energy({0, 255, 0}, 1, player); // Green } else if((g_flyEnergy[player] >= get_pcvar_num(cvar_fly_max_engery)*0.5) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.8)){ Icon_Energy({255, 255, 0}, 1, player); // yellow } else if((g_flyEnergy[player] >= get_pcvar_num(cvar_fly_max_engery)*0.3) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.5)){ Icon_Energy({255, 215, 0}, 2, player); } else if((g_flyEnergy[player] > 0) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.3)){ Icon_Energy({255, 0, 0}, 1, player); } return FMRES_IGNORED }
public jp_energy(player) { if (!(pev(player, pev_flags)&FL_ONGROUND) && pev(player,pev_button)&IN_ATTACK) { // Get our current velocity static clip, ammo, wpnid wpnid = get_user_weapon(player,clip,ammo) if (wpnid == CSW_KNIFE) { // flying if(g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.09) g_flyEnergy[player] = g_flyEnergy[player] - get_pcvar_num(cvar_fly_engery); // Increase distance counter } } else if ((get_pcvar_num(cvar_jetpack) == 2 && !(pev(player, pev_flags)&FL_ONGROUND)) && (pev(player,pev_button)&IN_JUMP && pev(player,pev_button)&IN_DUCK)) { if(g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.09) g_flyEnergy[player] = g_flyEnergy[player] - get_pcvar_num(cvar_fly_engery); // Increase distance counter } // Walking/Runnig if (pev(player, pev_flags) & FL_ONGROUND) g_flyEnergy[player] = g_flyEnergy[player] + get_pcvar_num(cvar_regain_energy);// Decrease distance counter }
public attack(player) { //code snippa from TS_Jetpack 1.0 - Jetpack plugin for The Specialists. //http://forums.alliedmods.net/showthread.php?t=55709&highlight=jetpack //By: Bad_Bud if(fly[player]) { static Float:JetpackData[3], fOrigin[3],Float:Aim[3], Float:Speed, Float:JetpackData2[3] pev(player,pev_velocity,JetpackData) VelocityByAim(player, 10, Aim) get_user_origin(player,fOrigin) fOrigin[0] -= floatround(Aim[0]) fOrigin[1] -= floatround(Aim[1]) fOrigin[2] -= floatround(Aim[2]) if((pev(player,pev_button)&IN_FORWARD) && !(pev(player, pev_flags) & FL_ONGROUND)) { message_begin(MSG_ALL,SVC_TEMPENTITY) write_byte(17) write_coord(fOrigin[0]) write_coord(fOrigin[1]) write_coord(fOrigin[2]) write_short(flame) write_byte(10) write_byte(255) message_end() Speed=floatsqroot(JetpackData[0]*JetpackData[0]+JetpackData[1]*JetpackData[1]) if(Speed!=0.0)//Makes players only lay down if their speed isn't 0; if they are thrusting forward. { set_pev(player,pev_gaitsequence,0) set_pev(player,pev_sequence,111) } if(Speed<get_pcvar_float(cvar_jetpackSpeed)) Speed+=get_pcvar_float(cvar_jetpackAcrate) pev(player,pev_angles,JetpackData2) JetpackData2[2]=0.0//Remove the Z value/ angle_vector(JetpackData2,ANGLEVECTOR_FORWARD,JetpackData2) JetpackData2[0]*=Speed JetpackData2[1]*=Speed JetpackData[0]=JetpackData2[0] JetpackData[1]=JetpackData2[1] } if(JetpackData[2]<get_pcvar_float(cvar_jetpackSpeed)&&JetpackData[2]>0.0)//Jetpacks get more power on the way down -- it helps landing. JetpackData[2]+=get_pcvar_float(cvar_jetpackUpSpeed) else if(JetpackData[2]<0.0) JetpackData[2]+=(get_pcvar_float(cvar_jetpackUpSpeed)*1.15) set_pev(player,pev_velocity,JetpackData) } }
public attack2(player) { if (rocket[player]) { static rocket, Float:vSrc[3], Float:Aim[3],Float:origin[3], Float:velocity[3], Float:angles[3] rocket = create_entity("info_target") if(!is_valid_ent(rocket)) return PLUGIN_CONTINUE entity_set_string(rocket, EV_SZ_classname, "zp_jp_rocket") entity_set_model(rocket, ROCKET_MDL) entity_set_size(rocket, Float:{0.0, 0.0, 0.0}, Float:{0.0, 0.0, 0.0}) entity_set_int(rocket, EV_INT_movetype, MOVETYPE_FLY) entity_set_int(rocket, EV_INT_solid, SOLID_BBOX) entity_get_vector(player, EV_VEC_origin, vSrc) VelocityByAim(player, 64, Aim) entity_get_vector(player,EV_VEC_origin,origin) vSrc[0] += Aim[0] vSrc[1] += Aim[1] entity_set_origin(rocket, vSrc) VelocityByAim(player, get_pcvar_num(cvar_RocketSpeed), velocity) entity_set_vector(rocket, EV_VEC_velocity, velocity) vector_to_angle(velocity, angles) entity_set_vector(rocket, EV_VEC_angles, angles) entity_set_edict(rocket,EV_ENT_owner,player) entity_set_float(rocket, EV_FL_takedamage, 1.0) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BEAMFOLLOW) write_short(rocket) write_short(trail) write_byte(25) write_byte(5) write_byte(224) write_byte(224) write_byte(255) write_byte(255) message_end()
emit_sound(rocket, CHAN_WEAPON, ROCKET_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM) shot[player] = true last_Rocket[player] = gltime + get_pcvar_num(cvar_RocketDelay) } return PLUGIN_CONTINUE }
public check_models(id) {
if (zp_get_user_zombie(id) || zp_get_user_nemesis(id) || zp_get_user_survivor(id)) return FMRES_IGNORED if(hasjet[id]) { static clip,ammo, wpnid wpnid = get_user_weapon(id,clip,ammo) if ( wpnid == CSW_KNIFE ) { switchmodel(id) } return PLUGIN_CONTINUE } return PLUGIN_CONTINUE }
public switchmodel(id) { entity_set_string(id,EV_SZ_viewmodel,"models/v_egon.mdl") entity_set_string(id,EV_SZ_weaponmodel,"models/p_egon.mdl") }
public remove_jetpacks() { static nextitem nextitem = find_ent_by_class(-1,"zp_jp_jetpack") while(nextitem) { remove_entity(nextitem) nextitem = find_ent_by_class(-1,"zp_jp_jetpack") } return PLUGIN_CONTINUE }
public emitsound(entity, channel, const sample[]) { if(is_user_alive(entity)) { static clip,ammo,weapon weapon = get_user_weapon(entity,clip,ammo) if(hasjet[entity] && weapon == CSW_KNIFE) { if(equal(sample,"weapons/knife_slash1.wav")) return FMRES_SUPERCEDE if(equal(sample,"weapons/knife_slash2.wav")) return FMRES_SUPERCEDE if(equal(sample,"weapons/knife_deploy1.wav")) return FMRES_SUPERCEDE if(equal(sample,"weapons/knife_hitwall1.wav")) return FMRES_SUPERCEDE if(equal(sample,"weapons/knife_hit1.wav")) return FMRES_SUPERCEDE if(equal(sample,"weapons/knife_hit2.wav")) return FMRES_SUPERCEDE if(equal(sample,"weapons/knife_hit3.wav")) return FMRES_SUPERCEDE if(equal(sample,"weapons/knife_hit4.wav")) return FMRES_SUPERCEDE if(equal(sample,"weapons/knife_stab.wav")) return FMRES_SUPERCEDE } } return FMRES_IGNORED }
public Icon_Show(icon[], color[3], mode, player) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("StatusIcon"), {0,0,0}, player); write_byte(mode); // status (0=hide, 1=show, 2=flash) write_string(icon); // sprite name write_byte(color[0]); // red write_byte(color[1]); // green write_byte(color[2]); // blue message_end();
}
public Icon_Energy(color[3], mode, player) { Icon_Show("item_longjump", color, mode, player) }
public human_fly(player) { if (g_flyEnergy[player] <= get_pcvar_num(cvar_fly_max_engery)*0.1) { jp_off(player); } if (g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.1) { jp_on(player); } }
public jp_on(player) {
fly[player] = true }
public jp_off(player) {
fly[player] = false }
public check_rocket(player) { if (last_Rocket[player] > gltime) { rk_forbidden(player) rksound[player] = true } else {
if (shot[player]) { rksound[player] = false shot[player] = false } rk_sound(player) rk_allow(player) } }
public rk_allow(player) { rocket[player] = true }
public rk_forbidden(player) {
rocket[player] = false }
public rk_sound(player) {
if (!rksound[player]) { engfunc(EngFunc_EmitSound, player, CHAN_WEAPON, getrocket, 1.0, ATTN_NORM, 0, PITCH_NORM) client_print(player, print_center, "Ракета готова к запуску!") rksound[player] = true } else if (rksound[player]) { } } public cmdHelp(id) { new g_max = get_pcvar_num(cvar_fly_max_engery) new g_lost = get_pcvar_num(cvar_fly_engery) new g_back = get_pcvar_num(cvar_regain_energy) new g_dmg = get_pcvar_num(cvar_RocketDmg) new g_delay = get_pcvar_num(cvar_RocketDelay) new jpmotd[2048], title[64], dpos = 0 format(title,63,"[ZP] %s ver.%s",PLUGINNAME,VERSION) dpos += format(jpmotd[dpos],2047-dpos,"<html><head><style type=^"text/css^">pre{color:#FF0505;}body{background:#000000;margin-left:16px;margin-top:1px;}</style></head><pre><body>") dpos += format(jpmotd[dpos],2047-dpos,"<b>%s</b>^n^n",title) dpos += format(jpmotd[dpos],2047-dpos,"How to use:^n") dpos += format(jpmotd[dpos],2047-dpos,"=============^n^n") if(get_pcvar_num(cvar_jetpack) == 1) { dpos += format(jpmotd[dpos],2047-dpos,"- choose/have Knive & use/hold ATTACK to fly^n") dpos += format(jpmotd[dpos],2047-dpos,"^n") dpos += format(jpmotd[dpos],2047-dpos,"- choose/have Knive(Bazooka) & use ATTACK2 to shoot a Rocket^n^n") } else if(get_pcvar_num(cvar_jetpack) == 2){ dpos += format(jpmotd[dpos],2047-dpos,"- use/hold JUMP & DUCK to flyn") dpos += format(jpmotd[dpos],2047-dpos,"^n") dpos += format(jpmotd[dpos],2047-dpos,"choose/have Knive(Bazooka) & use ATTACK2 to shoot a Rocket^n^n") } dpos += format(jpmotd[dpos],2047-dpos,"INFO's^n") dpos += format(jpmotd[dpos],2047-dpos,"MAX Energy set to : <b>%i Units</b>^n^n", g_max) dpos += format(jpmotd[dpos],2047-dpos,"Jetpack need %i Units per 1 Sec. to work^n", g_lost) dpos += format(jpmotd[dpos],2047-dpos,"Energy regain %i Units per 1 Sec. (when you are on the ground)^n^n", g_back) dpos += format(jpmotd[dpos],2047-dpos,"MAX Rocket Dmg set to: <b>%i dmg</b>^n",g_dmg) dpos += format(jpmotd[dpos],2047-dpos,"New Rocket comes ervry <b>%i Sec.</b>^n^n", g_delay ) dpos += format(jpmotd[dpos],2047-dpos,"-Have Fun!^n")
show_motd(id,jpmotd,title) }
public player_die() { static id id = read_data(2) if(hasjet[id]) { drop_jetpack(id) hasjet[id] = 0 rocket[id] = false g_flyEnergy[id] = 0 } return PLUGIN_CONTINUE }
public cmdDrop(id) {
if(hasjet[id]) { static clip,ammo,weapon weapon = get_user_weapon(id,clip,ammo) if(weapon == CSW_KNIFE) { drop_jetpack(id) if(!zp_get_user_zombie(id)){ entity_set_string(id,EV_SZ_viewmodel,"models/v_knife.mdl") entity_set_string(id,EV_SZ_weaponmodel,"models/p_knife.mdl") } return PLUGIN_HANDLED } } return PLUGIN_CONTINUE }
public drop_jetpack(player) { if(hasjet[player]) { static Float:Aim[3],Float:origin[3], jetpack VelocityByAim(player, 64, Aim) entity_get_vector(player,EV_VEC_origin,origin) origin[0] += Aim[0] origin[1] += Aim[1] jetpack = create_entity("info_target") if(!is_valid_ent(jetpack)) { return; } entity_set_string(jetpack,EV_SZ_classname,"zp_jp_jetpack") entity_set_model(jetpack,"models/w_egon.mdl") entity_set_size(jetpack,Float:{-16.0,-16.0,-16.0},Float:{16.0,16.0,16.0}) entity_set_int(jetpack,EV_INT_solid,1) entity_set_int(jetpack,EV_INT_movetype,6) entity_set_vector(jetpack,EV_VEC_origin,origin) Icon_Energy({255, 255, 0}, 0, player) Icon_Energy({128, 128, 0}, 0, player ) Icon_Energy({0, 255, 0}, 0, player) hasjet[player] = 0 rocket[player] = false } }
public pfn_touch(ptr, ptd) { if(is_valid_ent(ptr)) { static classname[32], id, Float:fOrigin[3], iOrigin[3] entity_get_string(ptr,EV_SZ_classname,classname,31) if(equal(classname, "zp_jp_jetpack")) { if(is_valid_ent(ptd)) { id = ptd if(id > 0 && id < 34) { if(!hasjet[id] && !zp_get_user_zombie(id) && is_user_alive(id)) { hasjet[id] = 1 g_flyEnergy[id] = get_pcvar_num(cvar_fly_max_engery) rocket[id] = true client_cmd(id,"spk items/gunpickup2.wav") engclient_cmd(id,"weapon_knife") switchmodel(id) remove_entity(ptr) } } } }else if(equal(classname, "zp_jp_rocket")) { entity_get_vector(ptr, EV_VEC_origin, fOrigin) FVecIVec(fOrigin,iOrigin) jp_radius_damage(ptr) message_begin(MSG_BROADCAST,SVC_TEMPENTITY,iOrigin) write_byte(TE_EXPLOSION) write_coord(iOrigin[0]) write_coord(iOrigin[1]) write_coord(iOrigin[2]) write_short(explosion) write_byte(30) write_byte(15) write_byte(0) message_end() message_begin(MSG_ALL,SVC_TEMPENTITY,iOrigin) write_byte(TE_BEAMCYLINDER) write_coord(iOrigin[0]) write_coord(iOrigin[1]) write_coord(iOrigin[2]) write_coord(iOrigin[0]) write_coord(iOrigin[1]) write_coord(iOrigin[2]+200) write_short(white) write_byte(0) write_byte(1) write_byte(6) write_byte(8) write_byte(1) write_byte(255) write_byte(255) write_byte(192) write_byte(128) write_byte(5) message_end() if(is_valid_ent(ptd)) { entity_get_string(ptd,EV_SZ_classname,classname,31) if(equal(classname,"func_breakable")) force_use(ptr,ptd) } remove_entity(ptr) } } return PLUGIN_CONTINUE }
public zp_user_infected_pre(player, infector) { Icon_Energy({0, 255, 0}, 0, player); cmdDrop(player); hasjet[player] = 0; g_flyEnergy[player] = 0; rocket[player] = false; }
public zp_extra_item_selected(player, itemid) { static clip,ammo,weapon weapon = get_user_weapon(player,clip,ammo) if (itemid == g_item_jetpack) { if(get_user_flags(player) & ADMIN_RESERVATION || get_user_flags(player) & ADMIN_LEVEL_H) { client_print(player, print_chat, "[ZP] Напишите /jphelp чтобы открыть страницу помощи по джетпаку") print_col_chat(player, "^4[ZP] ^1Вы купили джетпак!") hasjet[player] = 1 g_flyEnergy[player] = get_pcvar_num(cvar_fly_max_engery) rocket[player] = true client_cmd(player,"spk items/gunpickup2.wav") if(weapon == CSW_KNIFE){ switchmodel(player) } else { engclient_cmd(player,"weapon_knife"),switchmodel(player) } } else { print_col_chat(player, "^4[ZP] ^1Доступно только для Админов и Вип!") return ZP_PLUGIN_HANDLED; } } return PLUGIN_HANDLED; }
stock jp_radius_damage(entity) { static id, dist, i, hp, Float:damage, Origin[3] id = entity_get_edict(entity,EV_ENT_owner) for(i = 1; i < 33; i++) { if(is_user_alive(i)) { dist = floatround(entity_range(entity,i)) if(dist <= get_pcvar_num(cvar_Dmg_range)) { hp = get_user_health(i) damage = get_pcvar_float(cvar_RocketDmg)-(get_pcvar_float(cvar_RocketDmg)/get_pcvar_float(cvar_Dmg_range))*float(dist) get_user_origin(i,Origin) if(zp_get_user_zombie(id) != zp_get_user_zombie(i)) { if(hp > damage) jp_take_damage(i,floatround(damage),Origin,DMG_BLAST) else log_kill(id,i,"Jetpack Rocket",0) } } } } }
stock log_kill(killer, victim, weapon[], headshot) { // code from MeRcyLeZZ set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET) ExecuteHamB(Ham_Killed, victim, killer, 2) // set last param to 2 if you want victim to gib set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)
message_begin(MSG_BROADCAST, get_user_msgid("DeathMsg")) write_byte(killer) write_byte(victim) write_byte(headshot) write_string(weapon) message_end() // if(get_user_team(killer)!=get_user_team(victim)) set_user_frags(killer,get_user_frags(killer) +1) if(get_user_team(killer)==get_user_team(victim)) set_user_frags(killer,get_user_frags(killer) -1) new kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10]
get_user_name(killer, kname, 31) get_user_team(killer, kteam, 9) get_user_authid(killer, kauthid, 31) get_user_name(victim, vname, 31) get_user_team(victim, vteam, 9) get_user_authid(victim, vauthid, 31) log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"", kname, get_user_userid(killer), kauthid, kteam, vname, get_user_userid(victim), vauthid, vteam, weapon)
return PLUGIN_CONTINUE; }
stock jp_take_damage(victim,damage,origin[3],bit) { message_begin(MSG_ONE,get_user_msgid("Damage"),{0,0,0},victim) write_byte(21) write_byte(20) write_long(bit) write_coord(origin[0]) write_coord(origin[1]) write_coord(origin[2]) message_end() set_user_health(victim,get_user_health(victim)-damage) }
stock print_col_chat(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!g", "^4"); replace_all(msg, 190, "!y", "^1"); replace_all(msg, 190, "!team", "^3"); if (id) players[0] = id; else get_players(players, count, "ch"); { for ( new i = 0; i < count; i++ ) { if ( is_user_connected(players[i]) ) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText") , _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } } } Прошу помочь разобраться в чем проблема. Что в modules.ini должно быть? Или каким-то другим способом джетпак выдавать?
Отредактировал: Bloo, - 25.12.2015, 20:36
Причина: Выдано устное предупреждение!
|