| FloorenTIbraimi |
07-25-2014 05:59 |
[Zp] Flying Eggs
2 Attachment(s)
PHP Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <zombieplague>
#define PLUGIN "[ZP] Flying eggs"
#define VERSION "1.4"
#define AUTHOR "FloorenTIbraimi"
new model[] = "models/zombie_plague/w_egg.mdl"
new sound[] = "zombie_plague/egg_pick_up.wav"
new sprite_grenade_trail[] = "sprites/laserbeam.spr"
new g_trailSpr
new g_msgScreenFade
new cvar_eggs, cvar_eggs_limit, cvar_eggs_new_round, cvar_eggs_colors
new bool:can_pickup[33]
new g_eggs
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
cvar_eggs = register_cvar("zp_eggs_turn","1")
cvar_eggs_new_round = register_cvar("zp_new_eggs_round_remover","1")
cvar_eggs_colors = register_cvar("zp_color_eggs","5")
cvar_eggs_limit = register_cvar("zp_eggs_limite","100")
set_task(58.3, "anuncio", 100, _,_, "b")
set_task(1.0, "check_status", 20000, _,_, "b")
register_clcmd("say /egg", "menu_egg")
register_clcmd("say_team /egg", "menu_egg")
register_forward(FM_Touch, "player_Touch")
register_logevent("round_start", 2, "1=Round_Start")
g_msgScreenFade = get_user_msgid("ScreenFade")
}
public plugin_precache() {
precache_model(model)
precache_sound(sound)
g_trailSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_trail)
}
public anuncio() {
client_print_color(0, "!g[ZP] !yFlying eggs: !tPower By FloorentIbraimi")
}
public client_putinserver(id) {
can_pickup[id] = true
}
public client_disconnect(id) {
can_pickup[id] = false
}
public reset_pick(id) {
can_pickup[id] = true
}
public round_start() {
if(get_pcvar_num(cvar_eggs_new_round)) {
remove()
}
}
public check_status() {
if(!get_pcvar_num(cvar_eggs)) {
remove()
}
}
public remove() {
new ent = -1
while ((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "eggs_flying")) != 0) {
engfunc(EngFunc_RemoveEntity, ent)
g_eggs = 0
}
}
public menu_egg(id) {
if(!(get_user_flags(id) & ADMIN_RCON) || !get_pcvar_num(cvar_eggs)) return PLUGIN_HANDLED
new szMenu[128]
formatex(szMenu,127,"\rMenu Eggs")
new Menu = menu_create(szMenu,"handler_menu_egg")
menu_additem(Menu, "Throw eggs on map", "1")
menu_additem(Menu, "Remove eggs map", "2")
menu_additem(Menu, "Select color eggs", "3")
menu_setprop(Menu, MPROP_EXIT, MEXIT_NORMAL)
menu_display(id,Menu,0)
return PLUGIN_HANDLED
}
public handler_menu_egg(id,menu,item) {
if(item == MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
switch(item) {
case 0: {
egg_drop(id)
menu_egg(id)
}
case 1: {
remove()
menu_egg(id)
}
case 2: {
menu_egg_color(id)
}
}
return PLUGIN_HANDLED
}
public menu_egg_color(id) {
new szMenu[128]
formatex(szMenu,127,"\rSelect the color of the egg")
new Menu = menu_create(szMenu,"handler_menu_egg_color")
menu_additem(Menu, "White", "1")
menu_additem(Menu, "Red", "2")
menu_additem(Menu, "Green", "3")
menu_additem(Menu, "Blue^n", "4")
menu_additem(Menu, "All", "5")
menu_setprop(Menu, MPROP_EXIT, MEXIT_NORMAL)
menu_display(id,Menu,0)
return PLUGIN_HANDLED
}
public handler_menu_egg_color(id,menu,item) {
if(item == MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
switch(item) {
case 0: {
server_cmd("zp_color_eggs 1")
menu_egg(id)
}
case 1: {
server_cmd("zp_color_eggs 2")
menu_egg(id)
}
case 2: {
server_cmd("zp_color_eggs 3")
menu_egg(id)
}
case 3: {
server_cmd("zp_color_eggs 4")
menu_egg(id)
}
case 4: {
server_cmd("zp_color_eggs 5")
menu_egg(id)
}
}
return PLUGIN_HANDLED
}
public egg_drop(id) {
if(!is_user_alive(id)) return PLUGIN_HANDLED
if(g_eggs >= get_pcvar_num(cvar_eggs_limit)) {
set_hudmessage(255, 0, 0, -1.00, -0.45, 0, 6.0, 12.0)
show_hudmessage(id, "Limit eggs hit!")
return PLUGIN_HANDLED
}
if(can_pickup[id] != false) {
can_pickup[id] = false
set_task(0.1, "reset_pick", id)
new Float:Speed[3]
velocity_by_aim(id, 10 * 100, Speed)
drop_egg(id, Speed)
g_eggs++
set_hudmessage(255, 255, 255, -1.00, -0.45, 0, 6.0, 12.0)
show_hudmessage(id, "Eggs on map [ %d ]", g_eggs)
}
return PLUGIN_HANDLED
}
public drop_egg(id, Float:Speed[]) {
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
new Float:origin[3]
pev(id, pev_origin, origin)
set_pev(ent, pev_origin, origin)
Speed[2] += 100.0
set_pev(ent, pev_velocity, Speed)
new Float:angles[3]
pev(ent, pev_angles,angles)
angles[1] += random_num(1,360)
set_pev(ent, pev_angles, angles)
set_pev(ent, pev_classname, "eggs_flying")
engfunc(EngFunc_SetModel, ent, model)
engfunc(EngFunc_SetSize, ent, Float:{-2.79, -0.0, -6.14}, Float:{2.42, 1.99, 6.35})
set_pev(ent, pev_solid, SOLID_TRIGGER)
set_pev(ent, pev_movetype, MOVETYPE_BOUNCE)
engfunc(EngFunc_DropToFloor, ent)
colors(ent)
}
public colors(ent) {
set_pev(ent, pev_renderfx, kRenderFxGlowShell)
new cvar = get_pcvar_num(cvar_eggs_colors)
new r, g, b
if(cvar == 1) {
set_pev(ent, pev_rendercolor, Float:{255.0, 255.0, 255.0})
r = 255
g = 255
b = 255
}
else if(cvar == 2) {
set_pev(ent, pev_rendercolor, Float:{255.0, 000.0, 000.0})
r = 255
g = 0
b = 0
}
else if(cvar == 3) {
set_pev(ent, pev_rendercolor, Float:{000.0, 255.0, 000.0})
r = 000
g = 255
b = 000
}
else if(cvar == 4) {
set_pev(ent, pev_rendercolor, Float:{000.0, 000.0, 255.0})
r = 000
g = 000
b = 255
}
else {
switch (random(4)) {
case 0: {
set_pev(ent, pev_rendercolor, Float:{255.0, 255.0, 255.0})
r = 255
g = 255
b = 255
}
case 1: {
set_pev(ent, pev_rendercolor, Float:{255.0, 000.0, 000.0})
r = 255
g = 000
b = 000
}
case 2:{
set_pev(ent, pev_rendercolor, Float:{000.0, 255.0, 000.0})
r = 000
g = 255
b = 000
}
case 3: {
set_pev(ent, pev_rendercolor, Float:{000.0, 000.0, 255.0})
r = 000
g = 000
b = 255
}
}
}
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(ent)
write_short(g_trailSpr)
write_byte(5)
write_byte(1)
write_byte(r)
write_byte(g)
write_byte(b)
write_byte(255)
message_end()
}
public screen_fade(id) {
message_begin(MSG_ONE, g_msgScreenFade, {0, 0, 0}, id)
write_short(1<<12)
write_short(1<<12)
write_short(1<<12)
write_byte(200)
write_byte(200)
write_byte(200)
write_byte(20)
message_end()
}
public player_Touch(ent, id) {
if(!pev_valid(ent) || !is_user_alive(id) || !get_pcvar_num(cvar_eggs) || !can_pickup[id]) return FMRES_IGNORED
new classname[32]
pev(ent, pev_classname, classname, charsmax(classname))
if(equali(classname, "eggs_flying")) {
g_eggs--
item(id)
screen_fade(id)
emit_sound(id, CHAN_AUTO, sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
if(pev_valid(ent)) {
engfunc(EngFunc_RemoveEntity, ent)
}
}
return FMRES_IGNORED
}
public item(id) {
switch (random_num(0, 5)) {
case 0, 1, 2: {
client_print(id, print_center, "+ 1 AP")
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 1)
}
case 3: {
client_print(id, print_center, "+ 2 AP")
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 2)
}
case 4: {
client_print(id, print_center, "+ 0 AP")
}
case 5: {
client_print(id, print_center, "- 1 AP")
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - 1)
}
}
}
stock client_print_color(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, "!t", "^3")
replace_all(msg, 190, "!team2", "^0")
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();
}
}
}
|