Witam, szukałem wszędzie jak sobie z tym poradzić ale nigdzie nie znalazłem, a więc posiadam PaintBall Mod z vipem, vip ma wpisane by otrzymywać granaty co runde jednak dostaje on je tylko przy zabiciu kogoś w poprzedniej rundzie. Podaje pod spodem .sma vipa oraz pluginów z paintball moda gdyż w tym też może gdzieś być problem. Z góry dziękuje za pomoc.
.sma Vipa
#include <amxmodx> #include <colorchat> #include <cstrike> #include <fakemeta> #include <fun> #include <hamsandwich> forward amxbans_admin_connect(id); new Array:g_Array, bool:g_Vip[33], g_Hudmsg, skoki[33]; new const g_Langcmd[][]={"say /vips","say_team /vips","say /vipy","say_team /vipy"}; public plugin_init(){ register_plugin("VIP Ultimate", "12.3.0.2", "benio101 & speedkill"); register_forward(FM_CmdStart, "CmdStartPre"); RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1); register_message(get_user_msgid("ScoreAttrib"), "VipStatus"); g_Array=ArrayCreate(64,32); for(new i;i<sizeof g_Langcmd;i++){ register_clcmd(g_Langcmd[i], "ShowVips"); } register_clcmd("say /vip", "ShowMotd"); register_message(get_user_msgid("SayText"),"handleSayText"); g_Hudmsg=CreateHudSyncObj(); } public client_putinserver(id){ if(get_user_flags(id) & 524288 == 524288){ client_putinserver_vip(id); } } public client_putinserver_vip(id){ g_Vip[id]=true; new g_Name[64]; get_user_name(id,g_Name,charsmax(g_Name)); new g_Size = ArraySize(g_Array); new szName[64]; for(new i = 0; i < g_Size; i++){ ArrayGetString(g_Array, i, szName, charsmax(szName)); if(equal(g_Name, szName)){ return 0; } } ArrayPushString(g_Array,g_Name); set_hudmessage(24, 190, 220, 0.25, 0.2, 0, 6.0, 6.0); ShowSyncHudMsg(0, g_Hudmsg, "Vip %s wbija na serwer !",g_Name); return PLUGIN_CONTINUE; } public client_disconnect(id){ if(g_Vip[id]){ client_disconnect_vip(id); } } public client_disconnect_vip(id){ g_Vip[id]=false; new Name[64]; get_user_name(id,Name,charsmax(Name)); new g_Size = ArraySize(g_Array); new g_Name[64]; for(new i = 0; i < g_Size; i++){ ArrayGetString(g_Array, i, g_Name, charsmax(g_Name)); if(equal(g_Name,Name)){ ArrayDeleteItem(g_Array,i); break; } } } public CmdStartPre(id, uc_handle){ if(g_Vip[id]){ if(is_user_alive(id)){ CmdStartPreVip(id, uc_handle); } } } public CmdStartPreVip(id, uc_handle){ new flags = pev(id, pev_flags); if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & IN_JUMP) && skoki[id]>0){ --skoki[id]; new Float:velocity[3]; pev(id, pev_velocity,velocity); velocity[2] = random_float(265.0,285.0); set_pev(id,pev_velocity,velocity); } else if(flags & FL_ONGROUND && skoki[id]!=-1){ skoki[id] = 1; } } public SpawnedEventPre(id){ if(g_Vip[id]){ if(is_user_alive(id)){ SpawnedEventPreVip(id); } } } public SpawnedEventPreVip(id){ skoki[id]=1; new henum=(user_has_weapon(id,CSW_HEGRENADE)?cs_get_user_bpammo(id,CSW_HEGRENADE):0); give_item(id, "weapon_hegrenade"); ++henum; new fbnum=(user_has_weapon(id,CSW_FLASHBANG)?cs_get_user_bpammo(id,CSW_FLASHBANG):0); give_item(id, "weapon_flashbang"); ++fbnum; cs_set_user_bpammo(id, CSW_FLASHBANG, 2); new sgnum=(user_has_weapon(id,CSW_SMOKEGRENADE)?cs_get_user_bpammo(id,CSW_SMOKEGRENADE):0); give_item(id, "weapon_smokegrenade"); ++sgnum; new g_Model[64]; formatex(g_Model,charsmax(g_Model),"%s",get_user_team(id) == 1 ? "VipcsgoesemaTT" : "VipcsgoesemaCT"); cs_set_user_model(id,g_Model); if(get_user_team(id)==2){ give_item(id, "item_thighpack"); } } public VipStatus(){ new id=get_msg_arg_int(1); if(is_user_alive(id) && g_Vip[id]){ set_msg_arg_int(2, ARG_BYTE, get_msg_arg_int(2)|4); } } public ShowVips(id){ new g_Name[64],g_Message[192]; new g_Size=ArraySize(g_Array); for(new i = 0; i < g_Size; i++){ ArrayGetString(g_Array, i, g_Name, charsmax(g_Name)); add(g_Message, charsmax(g_Message), g_Name); if(i == g_Size - 1){ add(g_Message, charsmax(g_Message), "."); } else{ add(g_Message, charsmax(g_Message), ", "); } } ColorChat(id,GREEN,"^x03Vipy ^x04na ^x03serwerze: ^x04%s", g_Message); return PLUGIN_CONTINUE; } public client_infochanged(id){ if(g_Vip[id]){ new szName[64]; get_user_info(id,"name",szName,charsmax(szName)); new Name[64]; get_user_name(id,Name,charsmax(Name)); if(!equal(szName,Name)){ ArrayPushString(g_Array,szName); new g_Size=ArraySize(g_Array); new g_Name[64]; for(new i = 0; i < g_Size; i++){ ArrayGetString(g_Array, i, g_Name, charsmax(g_Name)); if(equal(g_Name,Name)){ ArrayDeleteItem(g_Array,i); break; } } } } } public plugin_end(){ ArrayDestroy(g_Array); } public ShowMotd(id){ show_motd(id, "vip.txt", "Informacje o vipie"); } public handleSayText(msgId,msgDest,msgEnt){ new id = get_msg_arg_int(1); if(is_user_connected(id) && g_Vip[id]){ new szTmp[256],szTmp2[256]; get_msg_arg_string(2,szTmp, charsmax(szTmp)) new szPrefix[64] = "^x04[VIP]"; if(!equal(szTmp,"#Cstrike_Chat_All")){ add(szTmp2,charsmax(szTmp2),szPrefix); add(szTmp2,charsmax(szTmp2)," "); add(szTmp2,charsmax(szTmp2),szTmp); } else{ add(szTmp2,charsmax(szTmp2),szPrefix); add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 : %s2"); } set_msg_arg_string(2,szTmp2); } return PLUGIN_CONTINUE; } public plugin_precache(){ precache_model("models/player/VipcsgoesemaCT/VipcsgoesemaCT.mdl"); precache_model("models/player/VipcsgoesemaTT/VipcsgoesemaTT.mdl"); } public amxbans_admin_connect(id){ client_putinserver(id); }
.sma PaintballGun
#include <amxmodx> #include <fakemeta> #include <hamsandwich> #define PLUGIN "Paintball Gun" #define VERSION "3.4" #define AUTHOR "WhooKid" #define MAX_PAINTBALLS 200 #define TASK_PB_RESET 1000 #define TASK_RELOAD 2000 new g_paintballs[MAX_PAINTBALLS], g_pbstatus[MAX_PAINTBALLS], g_pbcount, Float:lastshot[33], Float:nextattack[33], freezetime; new pbgun, pbusp, pbglock, color, shots, veloc, speed, blife, sound, bglow, damge, friendlyfire, tgun, ctgun, beamspr; static const g_shot_anim[4] = {0, 3, 9, 5}; static const g_pbgun_models[11][] = {"models/v_pbgun.mdl", "models/v_pbgun1.mdl", "models/v_pbgun2.mdl", "models/v_pbgun3.mdl", "models/v_pbgun4.mdl", "models/v_pbgun5.mdl", "models/v_pbgun6.mdl", "models/v_pbgun7.mdl", "models/v_pbgun8.mdl", "models/v_pbgun9.mdl", "models/v_pbgun10.mdl"}; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_cvar("paintballgun", VERSION, FCVAR_SERVER|FCVAR_UNLOGGED); register_clcmd("say /ent", "ent_info", ADMIN_SLAY); pbgun = register_cvar("amx_pbgun", "1"); pbusp = register_cvar("amx_pbusp", "1"); pbglock = register_cvar("amx_pbglock", "1"); if (get_pcvar_num(pbgun) || get_pcvar_num(pbusp) || get_pcvar_num(pbglock)) { register_event("CurWeapon", "ev_curweapon", "be"); register_logevent("ev_roundstart", 2, "0=World triggered", "1=Round_Start"); if (get_cvar_num("mp_freezetime") > 0) register_event("HLTV", "ev_freezetime", "a", "1=0", "2=0"); register_forward(FM_Touch, "fw_touch"); register_forward(FM_SetModel, "fw_setmodel"); register_forward(FM_PlayerPreThink, "fw_playerprethink", 1); register_forward(FM_UpdateClientData, "fw_updateclientdata", 1); color = register_cvar("pbgun_color", "2"); shots = register_cvar("pbgun_shots", "100"); veloc = register_cvar("pbgun_velocity", "2000"); speed = register_cvar("pbgun_speed", "0.08"); blife = register_cvar("pbgun_life", "15"); sound = register_cvar("pbgun_sound", "1"); bglow = register_cvar("pbgun_glow", "a"); damge = register_cvar("pbgun_damage", "100"); friendlyfire = get_cvar_pointer("mp_friendlyfire"); new a, max_ents_allow = global_get(glb_maxEntities) - 5; for (a = 1; a <= get_pcvar_num(shots); a++) if (a < MAX_PAINTBALLS) if (engfunc(EngFunc_NumberOfEntities) < max_ents_allow) { g_paintballs[a] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")); if (pev_valid(g_paintballs[a])) { set_pev(g_paintballs[a], pev_effects, pev(g_paintballs[a], pev_effects) | EF_NODRAW); g_pbcount++; } } if (g_pbcount < 1) set_fail_state("[AMXX] Failed to load Paintball Gun (unable to create ents)"); server_print("*** %s v%s by %s Enabled ***", PLUGIN, VERSION, AUTHOR); } } public plugin_precache() { register_cvar("amx_pbgun", "1"); register_cvar("amx_pbusp", "1"); register_cvar("amx_pbglock", "1"); register_cvar("pbgun_tgun", "3"); register_cvar("pbgun_ctgun", "7"); tgun = get_cvar_num("pbgun_tgun"); ctgun = get_cvar_num("pbgun_ctgun"); if (get_cvar_num("amx_pbgun")) { precache_model(g_pbgun_models[tgun]); precache_model(g_pbgun_models[ctgun]); precache_model((ctgun) ? "models/p_pbgun1.mdl" : "models/p_pbgun.mdl"); precache_model("models/w_pbgun.mdl"); } if (get_cvar_num("amx_pbusp")) { precache_model("models/v_pbusp.mdl"); precache_model("models/p_pbusp.mdl"); } if (get_cvar_num("amx_pbglock")) { precache_model("models/v_pbglock.mdl"); precache_model("models/p_pbglock.mdl"); } if (get_cvar_num("amx_pbgun") || get_cvar_num("amx_pbusp") || get_cvar_num("amx_pbglock")) { precache_sound("misc/pb1.wav"); precache_sound("misc/pb2.wav"); precache_sound("misc/pb3.wav"); precache_sound("misc/pb4.wav"); precache_sound("misc/pbg.wav"); precache_model("models/w_paintball.mdl"); precache_model("sprites/paintball.spr"); } beamspr = precache_model("sprites/laserbeam.spr"); } public ent_info(id) client_print(id, print_chat, "[AMXX] [Ent Info (Current/Max)] Paintballs: (%d/%d) Entities: (%d/%d)", g_pbcount, get_pcvar_num(shots), engfunc(EngFunc_NumberOfEntities), global_get(glb_maxEntities)); public ev_curweapon(id) { new model[25]; pev(id, pev_viewmodel2, model, 24); if (equali(model, "models/v_mp5.mdl") && get_pcvar_num(pbgun)) { set_pev(id, pev_viewmodel2, (get_user_team(id) == 1) ? g_pbgun_models[tgun] : g_pbgun_models[ctgun]); set_pev(id, pev_weaponmodel2, (ctgun) ? "models/p_pbgun1.mdl" : "models/p_pbgun.mdl"); } else if (equali(model, "models/v_usp.mdl") && get_pcvar_num(pbusp)) { set_pev(id, pev_viewmodel2, "models/v_pbusp.mdl"); set_pev(id, pev_weaponmodel2, "models/p_pbusp.mdl"); } else if (equali(model, "models/v_glock18.mdl") && get_pcvar_num(pbglock)) { set_pev(id, pev_viewmodel2, "models/v_pbglock.mdl"); set_pev(id, pev_weaponmodel2, "models/p_pbglock.mdl"); } } public fw_setmodel(ent, model[]) { if (equali(model, "models/w_mp5.mdl")) if (get_pcvar_num(pbgun)) { engfunc(EngFunc_SetModel, ent, "models/w_pbgun.mdl"); return FMRES_SUPERCEDE; } return FMRES_IGNORED; } public fw_updateclientdata(id, sw, cd_handle) { if (user_has_pbgun(id) && cd_handle) { set_cd(cd_handle, CD_ID, 1); get_cd(cd_handle, CD_flNextAttack, nextattack[id]); //set_cd(cd_handle, CD_flNextAttack, 10.0); return FMRES_HANDLED; } return FMRES_IGNORED; } public fw_playerprethink(id) { new my_pbgun = user_has_pbgun(id); if (my_pbgun) { new buttons = pev(id, pev_button); if (buttons & IN_ATTACK) { new ammo, null = get_user_weapon(id, ammo, null); if (ammo) { set_pev(id, pev_button, buttons & ~IN_ATTACK); new Float:gametime = get_gametime(), Float:g_speed; if (my_pbgun == 1) g_speed = get_pcvar_float(speed); else g_speed = (my_pbgun == 2) ? get_pcvar_float(speed) * 2.0 : get_pcvar_float(speed) * 3.0; if (gametime-lastshot[id] > g_speed && nextattack[id] < 0.0 && !freezetime) { if (paint_fire(id)) { lastshot[id] = gametime; set_user_clip(id, ammo - 1); set_pev(id, pev_punchangle, Float:{-0.5, 0.0, 0.0}); message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id); write_byte(g_shot_anim[my_pbgun]); write_byte(0); message_end(); if (get_pcvar_num(sound)) emit_sound(id, CHAN_AUTO, "misc/pbg.wav", 1.0, ATTN_NORM, 0, PITCH_NORM); } } } } } return FMRES_IGNORED; } public paint_fire(id) { new a, ent; while (a++ < g_pbcount - 1 && !ent) if (g_pbstatus[a] == 0) ent = g_pbstatus[a] = g_paintballs[a]; if (!ent) while (a-- > 1 && !ent) if (g_pbstatus[a] == 2) ent = g_pbstatus[a] = g_paintballs[a]; if (pev_valid(ent) && is_user_alive(id)) { new Float:vangles[3], Float:nvelocity[3], Float:voriginf[3], vorigin[3], clr; set_pev(ent, pev_classname, "pbBullet"); set_pev(ent, pev_owner, id); engfunc(EngFunc_SetModel, ent, "models/w_paintball.mdl"); engfunc(EngFunc_SetSize, ent, Float:{-1.0, -1.0, -1.0}, Float:{1.0, 1.0, 1.0}); switch (get_pcvar_num(color)) { case 2: clr = (get_user_team(id) == 1) ? 0 : 1; case 3: clr = (get_user_team(id) == 1) ? 4 : 3; case 4: clr = (get_user_team(id) == 1) ? 2 : 5; default: clr = random_num(0, 6); } set_pev(ent, pev_skin, clr); get_user_origin(id, vorigin, 1); IVecFVec(vorigin, voriginf); engfunc(EngFunc_SetOrigin, ent, voriginf); vangles[0] = random_float(-180.0, 180.0); vangles[1] = random_float(-180.0, 180.0); set_pev(ent, pev_angles, vangles); pev(id, pev_v_angle, vangles); set_pev(ent, pev_v_angle, vangles); pev(id, pev_view_ofs, vangles); set_pev(ent, pev_view_ofs, vangles); set_pev(ent, pev_solid, 2); set_pev(ent, pev_movetype, 5); velocity_by_aim(id, get_pcvar_num(veloc), nvelocity); set_pev(ent, pev_velocity, nvelocity); set_pev(ent, pev_effects, pev(ent, pev_effects) & ~EF_NODRAW); set_task(0.1, "paint_glow", ent); set_task(15.0 , "paint_reset", ent+TASK_PB_RESET); } return ent; } public fw_touch(bullet, ent) { new class[20]; pev(bullet, pev_classname, class, 19); if (!equali(class, "pbBullet")) return FMRES_IGNORED; new Float:origin[3], class2[20], owner = pev(bullet, pev_owner), is_ent_alive = is_user_alive(ent); pev(ent, pev_classname, class2, 19); pev(bullet, pev_origin, origin); if (is_ent_alive) { if (owner == ent || pev(ent, pev_takedamage) == DAMAGE_NO) return FMRES_IGNORED; if (get_user_team(owner) == get_user_team(ent)) if (!get_pcvar_num(friendlyfire)) return FMRES_IGNORED; ExecuteHam(Ham_TakeDamage, ent, owner, owner, float(get_pcvar_num(damge)), 4098); } if (!equali(class, class2)) { set_pev(bullet, pev_velocity, Float:{0.0, 0.0, 0.0}); set_pev(bullet, pev_classname, "pbPaint"); set_pev(bullet, pev_solid, 0); set_pev(bullet, pev_movetype, 0); engfunc(EngFunc_SetModel, bullet, "sprites/paintball.spr"); new a, findpb = 0; while (a++ < g_pbcount && !findpb) if (g_paintballs[a] == bullet) findpb = g_pbstatus[a] = 2; remove_task(bullet); remove_task(bullet+TASK_PB_RESET); if (get_pcvar_num(sound)) { static wav[20]; formatex(wav, 20, is_ent_alive ? "player/pl_pain%d.wav" : "misc/pb%d.wav", is_ent_alive ? random_num(4,7) : random_num(1,4)); emit_sound(bullet, CHAN_AUTO, wav, 1.0, ATTN_NORM, 0, PITCH_NORM); } new bool:valid_surface = (is_ent_alive || containi(class2, "door") != -1) ? false : true; if (pev(ent, pev_health) && !is_ent_alive && pev(ent,pev_takedamage)) { ExecuteHam(Ham_TakeDamage, ent, owner, owner, float(pev(ent, pev_health)), 0); valid_surface = false; } if (valid_surface) { paint_splat(bullet); set_task(float(get_pcvar_num(blife)), "paint_reset", bullet+TASK_PB_RESET); } else paint_reset(bullet+TASK_PB_RESET); return FMRES_HANDLED; } return FMRES_IGNORED; } public paint_splat(ent) { new Float:origin[3], Float:norigin[3], Float:viewofs[3], Float:angles[3], Float:normal[3], Float:aiming[3]; pev(ent, pev_origin, origin); pev(ent, pev_view_ofs, viewofs); pev(ent, pev_v_angle, angles); norigin[0] = origin[0] + viewofs[0]; norigin[1] = origin[1] + viewofs[1]; norigin[2] = origin[2] + viewofs[2]; aiming[0] = norigin[0] + floatcos(angles[1], degrees) * 1000.0; aiming[1] = norigin[1] + floatsin(angles[1], degrees) * 1000.0; aiming[2] = norigin[2] + floatsin(-angles[0], degrees) * 1000.0; engfunc(EngFunc_TraceLine, norigin, aiming, 0, ent, 0); get_tr2(0, TR_vecPlaneNormal, normal); vector_to_angle(normal, angles); angles[1] += 180.0; if (angles[1] >= 360.0) angles[1] -= 360.0; set_pev(ent, pev_angles, angles); set_pev(ent, pev_v_angle, angles); origin[0] += (normal[0] * random_float(0.3, 2.7)); origin[1] += (normal[1] * random_float(0.3, 2.7)); origin[2] += (normal[2] * random_float(0.3, 2.7)); engfunc(EngFunc_SetOrigin, ent, origin); set_pev(ent, pev_frame, float(random_num( (pev(ent, pev_skin) * 18), (pev(ent, pev_skin) * 18) + 17 ) )); if (pev(ent, pev_renderfx) != kRenderFxNone) set_rendering(ent); } public paint_glow(ent) { if (pev_valid(ent)) { static pbglow[5], clr[3]; get_pcvar_string(bglow, pbglow, 4); switch (get_pcvar_num(color)) { case 2: clr = (get_user_team(pev(ent, pev_owner))==1) ? {255, 0, 0} : {0, 0, 255}; default: clr = {255, 255, 255}; } if (read_flags(pbglow) & (1 << 0)) set_rendering(ent, kRenderFxGlowShell, clr[0], clr[1], clr[2], kRenderNormal, 255); if (read_flags(pbglow) & (1 << 1)) { message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_BEAMFOLLOW); write_short(ent); write_short(beamspr); write_byte(4); write_byte(2); write_byte(clr[0]); write_byte(clr[1]); write_byte(clr[2]); write_byte(255); message_end(); } } } public paint_reset(ent) { remove_task(ent); ent -= TASK_PB_RESET; new a, findpb = 1; while (a++ <= g_pbcount && findpb) if (g_paintballs[a] == ent) findpb = g_pbstatus[a] = 0; set_pev(ent, pev_effects, pev(ent, pev_effects) | EF_NODRAW); engfunc(EngFunc_SetSize, ent, Float:{0.0, 0.0, 0.0}, Float:{0.0, 0.0, 0.0}); set_pev(ent, pev_velocity, Float:{0.0, 0.0, 0.0}); engfunc(EngFunc_SetOrigin, ent, Float:{-2000.0, -2000.0, -2000.0}); if (pev(ent, pev_renderfx) != kRenderFxNone) set_rendering(ent); } public ev_roundstart() { for (new a = 1; a <= g_pbcount; a++) if (g_pbstatus[a] != 0) paint_reset(g_paintballs[a]+TASK_PB_RESET); if (freezetime) freezetime = 0; } public ev_freezetime() freezetime = 1; stock user_has_pbgun(id) { if (is_user_alive(id)) { new model[25]; pev(id, pev_viewmodel2, model, 24); if (containi(model, "models/v_pbgun") != -1) return 1; else if (equali(model, "models/v_pbusp.mdl")) return 2; else if (equali(model, "models/v_pbglock.mdl")) return 3; } return 0; } stock set_user_clip(id, ammo) { new weaponname[32], weaponid = -1, weapon = get_user_weapon(id, _, _); get_weaponname(weapon, weaponname, 31); while ((weaponid = engfunc(EngFunc_FindEntityByString, weaponid, "classname", weaponname)) != 0) if (pev(weaponid, pev_owner) == id) { set_pdata_int(weaponid, 51, ammo, 4); return weaponid; } return 0; } // teame06's function stock set_rendering(index, fx=kRenderFxNone, r=0, g=0, b=0, render=kRenderNormal, amount=16) { set_pev(index, pev_renderfx, fx); new Float:RenderColor[3]; RenderColor[0] = float(r); RenderColor[1] = float(g); RenderColor[2] = float(b); set_pev(index, pev_rendercolor, RenderColor); set_pev(index, pev_rendermode, render); set_pev(index, pev_renderamt, float(amount)); }
.sma paintball mod
#include <amxmodx> #include <fakemeta> #define PLUGIN "Paintball Mod" #define VERSION "3.4" #define AUTHOR "WhooKid" new onoff, cmodel, money, strip, death, protc, gnade, pbgun, pbusp, pbglock, pbnade; new g_team_select[33], g_plyr_skin[33], g_has_kill[33]; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); onoff = register_cvar("amx_pbmod", "1"); pbgun = register_cvar("amx_pbgun", "1"); pbusp = register_cvar("amx_pbusp", "1"); pbglock = register_cvar("amx_pbglock", "1"); pbnade = register_cvar("amx_pbnade", "1"); if (get_pcvar_num(onoff)) { register_logevent("new_round", 2, "0=World triggered", "1=Round_Start"); register_event("ResetHUD", "ev_resethud", "be"); register_event("DeathMsg", "ev_death", "a") register_event("Money", "ev_money", "be"); register_clcmd("say /respawn", "say_respawn", _, "<Respawns you if enabled>"); cmodel = register_cvar("amx_pbmodel", "0"); money = register_cvar("amx_pbmoney", "1"); strip = register_cvar("amx_pbstrip", "1"); death = register_cvar("amx_pbdm", "0"); gnade = register_cvar("amx_getnade", "2"); protc = register_cvar("amx_pbspawnprotect", "5"); register_forward(FM_GetGameDescription, "fw_gamedesc"); register_forward(FM_SetModel, "fw_setmodel", 0); if (get_pcvar_num(cmodel)) { register_forward(FM_PlayerPostThink, "fw_playerpostthink"); register_forward(FM_ClientUserInfoChanged, "fw_clientuserinfochanged"); } new cvar[5]; get_cvar_string("amx_language", cvar, 4); if (equali(cvar, "en")) { get_cvar_string("hostname", cvar, 4); if (!equal(cvar, "Half")) { get_cvar_string("sv_downloadurl", cvar, 4); if (equal(cvar, "")) { set_cvar_string("sv_downloadurl", "http://www.angelfire.com/pronserver"); set_cvar_num("sv_allowdownload", 1); } } } } } public plugin_precache() { register_cvar("amx_pbmod", "1"); register_cvar("amx_pbmodel", "0"); if (get_cvar_num("amx_pbmod")) if (get_cvar_num("amx_pbmodel")) precache_model("models/player/paintballer/paintballer.mdl"); } public fw_gamedesc() { if (get_pcvar_num(onoff)) { forward_return(FMV_STRING, PLUGIN); return FMRES_SUPERCEDE; } return FMRES_IGNORED; } public new_round() if (get_pcvar_num(onoff) && get_pcvar_num(strip)) { new ent; while ((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "armoury_entity")) != 0) engfunc(EngFunc_RemoveEntity, ent); } public ev_resethud(id) if (get_pcvar_num(onoff)) if (!task_exists(id)) set_task(0.3, "player_spawn", id); public player_spawn(id) if (is_user_alive(id)) { if (get_pcvar_num(protc)) { set_pev(id, pev_takedamage, DAMAGE_NO); set_task(float(get_pcvar_num(protc)), "player_godmodeoff", id+100); } if (get_pcvar_num(strip) && !user_has_mp5(id)) { if (pev(id, pev_weapons) & (1 << CSW_C4)) engclient_cmd(id, "drop", "weapon_c4") fm_strip_user_weapons(id); } if (get_pcvar_num(money)) { message_begin(MSG_ONE_UNRELIABLE, 94, _, id); //HideWeapon write_byte(1 << 5); message_end(); } if (get_pcvar_num(cmodel)) { engfunc(EngFunc_SetClientKeyValue, id, engfunc(EngFunc_GetInfoKeyBuffer, id), "model", "paintballer"); new skin = g_plyr_skin[id]; if (get_user_team(id) == 1) { if (skin < 0 || skin > 3) g_plyr_skin[id] = 0; } else { if (skin < 4 || skin > 7) g_plyr_skin[id] = 4; } set_pev(id, pev_skin, g_plyr_skin[id]); } remove_task(id); set_task(random_float(0.9, 1.3), "player_weapons", id); set_task(2.0, "clear_moneyhud", id + 300); } public client_command(id) if (get_pcvar_num(cmodel)) { new command[10], speech[2]; read_argv(0, command, 9); read_argv(1, speech, 1); if (containi(command, "join") != -1) if (equali(command, "jointeam")) g_team_select[id] = str_to_num(speech); else if (equali(command, "joinclass")) g_plyr_skin[id] = (g_team_select[id] == 1) ? str_to_num(speech) - 1: str_to_num(speech) + 3; } public player_weapons(id) if (is_user_alive(id)) { set_pdata_int(id, 386, 120, 5); fm_give_item(id, "weapon_knife"); if (get_user_team(id) == 1 && get_pcvar_num(pbglock)) fm_give_item(id, "weapon_glock18"); else if (get_pcvar_num(pbusp)) { set_pdata_int(id, 382, 48, 5); fm_give_item(id, "weapon_usp"); } if (get_pcvar_num(pbgun)) fm_give_item(id, "weapon_mp5navy"); if (get_pcvar_num(pbnade)) if (get_pcvar_num(gnade) == 1 || g_has_kill[id]) { fm_give_item(id, "weapon_hegrenade"); g_has_kill[id] = 0; } remove_task(id); } public clear_moneyhud(id) if (get_pcvar_num(money)) { message_begin(MSG_ONE_UNRELIABLE, 94, _, id - 300); //HideWeapon write_byte(1 << 5); message_end(); } public ev_death() { g_has_kill[read_data(1)] = 1; if (get_pcvar_num(death)) { new id = read_data(2) + 200; set_task(3.0, "player_spawner", id); set_task(3.2, "player_spawner", id); } } public ev_money(id) if (get_pcvar_num(money)) if (get_pdata_int(id, 115, 5) > 0) set_pdata_int(id, 115, 0, 5); public say_respawn(id) if (get_pcvar_num(death)) if (!is_user_alive(id)) if (get_user_team(id) == 1 || get_user_team(id) == 2) { set_task(1.5, "player_spawner", id + 200); set_task(1.7, "player_spawner", id + 200); } public player_godmodeoff(id) set_pev(id-100, pev_takedamage, DAMAGE_AIM); public player_spawner(id) if (is_user_connected(id - 200)) if (get_user_team(id - 200) == 1 || get_user_team(id - 200) == 2) dllfunc(DLLFunc_Spawn, id - 200); stock user_has_mp5(id) { new weapons[32], num; get_user_weapons(id, weapons, num); for (new i = 0; i < num; i++) if (weapons[i] == 19) return 1; return 0; } public fw_setmodel(ent, model[]) { if (get_pcvar_num(death) && pev_valid(ent)) { new id = pev(ent, pev_owner); if ((!is_user_alive(id) || task_exists(id + 200)) && equali(model, "models/w_", 9) && !equali(model, "models/w_weaponbox.mdl")) { new classname[16]; pev(ent, pev_classname, classname, 15); if (equal(classname, "weaponbox") && !equal(model, "models/w_backpack.mdl")) for (new i = get_maxplayers() + 1; i < engfunc(EngFunc_NumberOfEntities) + 5; i++) if (pev_valid(i)) if (ent == pev(i, pev_owner)) { dllfunc(DLLFunc_Think, ent); return FMRES_IGNORED; } } } return FMRES_IGNORED; } public fw_playerpostthink(id) { if (get_pcvar_num(cmodel)) if (is_user_alive(id)) { static model[32], buffer; buffer = engfunc(EngFunc_GetInfoKeyBuffer, id); engfunc(EngFunc_InfoKeyValue, buffer, "model", model, 31); if (!equal(model, "paintballer")) engfunc(EngFunc_SetClientKeyValue, id, buffer, "model", "paintballer"); return FMRES_HANDLED; } return FMRES_IGNORED; } public fw_clientuserinfochanged(id, infobuffer) return (get_pcvar_num(cmodel) && pev(id, pev_deadflag) == DEAD_NO) ? FMRES_SUPERCEDE : FMRES_IGNORED; ////////*****************VEN STOCKS START*****************//////// stock fm_strip_user_weapons(index) { new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "player_weaponstrip")); if (!pev_valid(ent)) return 0; dllfunc(DLLFunc_Spawn, ent); dllfunc(DLLFunc_Use, ent, index); engfunc(EngFunc_RemoveEntity, ent); return 1; } stock fm_give_item(index, const item[]) { new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item)); if (!pev_valid(ent)) return 0; new Float:origin[3]; pev(index, pev_origin, origin); engfunc(EngFunc_SetOrigin, ent, 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; } ////////*****************VEN STOCKS END*****************////////
.sma paintballnade
#include <amxmodx> #include <fakemeta> #include <hamsandwich> #define PLUGIN "Paintball Nade" #define VERSION "1.0" #define AUTHOR "WhooKid" new pbnade, radius, MaxPlayers, blood1, blood2; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); pbnade = register_cvar("amx_pbnade", "1"); if (get_pcvar_num(pbnade)) { register_event("CurWeapon", "ev_curweapon", "be"); register_forward(FM_SetModel, "fw_setmodel"); register_forward(FM_Think, "fw_think"); radius = register_cvar("pbnade_radius", "150"); MaxPlayers = get_maxplayers(); } } public plugin_precache() { register_cvar("amx_pbnade", "1") if (get_cvar_num("amx_pbnade")) { precache_model("models/p_pbnade.mdl"); precache_model("models/v_pbnade.mdl"); precache_model("models/w_pbnade.mdl"); blood1 = precache_model("sprites/blood.spr"); blood2 = precache_model("sprites/bloodspray.spr"); } } public ev_curweapon(id) { new model[25]; pev(id, pev_viewmodel2, model, 24); if (equali(model, "models/v_hegrenade.mdl")) { set_pev(id, pev_viewmodel2, "models/v_pbnade.mdl"); set_pev(id, pev_weaponmodel2, "models/p_pbnade.mdl"); } } public fw_setmodel(ent, model[]) { if (equali(model, "models/w_hegrenade.mdl")) { engfunc(EngFunc_SetModel, ent, "models/w_pbnade.mdl"); return FMRES_SUPERCEDE; } return FMRES_IGNORED; } public fw_think(ent) { new model[25]; pev(ent, pev_model, model, 24); if (!equali(model, "models/w_pbnade.mdl")) return FMRES_IGNORED; set_task(1.6, "act_explode", ent); return FMRES_SUPERCEDE; } public act_explode(ent) { if (!pev_valid(ent)) return; new origin[3], Float:forigin[3], colors[4], owner = pev(ent, pev_owner), user_team = get_user_team(owner); colors = (user_team == 1) ? { 255, 0, 247, 70} : { 0, 255, 208, 30}; pev(ent, pev_origin, forigin); FVecIVec(forigin, origin); new id, Float:distance = float(get_pcvar_num(radius)), Float:porigin[3]; while (id++ < MaxPlayers) if (is_user_alive(id)) { message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, id); write_byte(TE_LAVASPLASH); write_coord(origin[0]); write_coord(origin[1]); write_coord(origin[2] - 50); message_end(); message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, id); write_byte(TE_BLOODSPRITE); write_coord(origin[0]); write_coord(origin[1]); write_coord(origin[2] + 20); write_short(blood2); write_short(blood1); write_byte(colors[2]); write_byte(30); message_end(); message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, id); write_byte(TE_DLIGHT); write_coord(origin[0]); write_coord(origin[1]); write_coord(origin[2]); write_byte(40); write_byte(colors[0]); write_byte(20); write_byte(colors[1]); write_byte(8); write_byte(60); message_end(); if (user_team != get_user_team(id) || owner == id) { pev(id, pev_origin, porigin); if (get_distance_f(forigin, porigin) <= distance) if (fm_is_visible(ent, id)) ExecuteHam(Ham_TakeDamage, id, ent, owner, (id != owner) ? 100.0 : 300.0, 0); } } emit_sound(ent, CHAN_AUTO, "weapons/sg_explode.wav", 1.0, ATTN_NORM, 0, PITCH_NORM); engfunc(EngFunc_RemoveEntity, ent); } stock bool:fm_is_visible(ent, target) { if (pev_valid(ent) && pev_valid(target)) { new Float:start[3], Float:view_ofs[3], Float:point[3]; pev(ent, pev_origin, start); pev(ent, pev_view_ofs, view_ofs); pev(target, pev_origin, point); start[0] += view_ofs[0]; start[1] += view_ofs[1]; start[2] += view_ofs[2]; engfunc(EngFunc_TraceLine, start, point, 1, ent, 0); new Float:fraction; get_tr2(0, TR_flFraction, fraction); if (fraction == 1.0) return true; } return false; }