Re: Weapons Spawn
I edited weapon spawner plugin and it works
the only problem is that its not always giving me the right weapon.
Like when I go over an shotgun model it giving me shotgun + m4a1 or when I go over an
mp5 model it giving me m249.
Can some one please fix it.
PHP Code:
#include <amxmodx> #include <fakemeta> #include <superspawns>
//ent name #define wp_ent "weapon_entity"
//ent values #define WP_Type pev_iuser4 #define WP_Left pev_iuser3 #define WP_Max pev_iuser2
//primary and secondary weapons #define PRIMARY_WEAPONS ((1<<CSW_SCOUT) | (1<<CSW_XM1014) | (1<<CSW_MAC10) | (1<<CSW_AUG) | (1<<CSW_UMP45) | (1<<CSW_GALIL) | (1<<CSW_FAMAS) | (1<<CSW_MP5NAVY) | (1<<CSW_M249) | (1<<CSW_M3) | (1<<CSW_M4A1) | (1<<CSW_TMP) | (1<<CSW_G3SG1) | (1<<CSW_AK47)) #define SECONDARY_WEAPONS ((1<<CSW_P228) | (1<<CSW_ELITE) | (1<<CSW_FIVESEVEN) | (1<<CSW_GLOCK18) | (1<<CSW_DEAGLE))
//offsets #define OFFSET_SCOUT_AMMO 378 #define OFFSET_PARA_AMMO 379 #define OFFSET_FAMAS_AMMO 380 #define OFFSET_M3_AMMO 381 #define OFFSET_USP_AMMO 382 #define OFFSET_FIVESEVEN_AMMO 383 #define OFFSET_DEAGLE_AMMO 384 #define OFFSET_P228_AMMO 385 #define OFFSET_GLOCK_AMMO 386 #define OFFSET_FLASH_AMMO 387 #define OFFSET_HE_AMMO 388 #define OFFSET_SMOKE_AMMO 389 #define linuxdiff 5
//ammo for each gun #define AMMO_P228 52 #define AMMO_SCOUT 90 #define AMMO_Xm1014 32 #define AMMO_Mac10 100 #define AMMO_Aug 90 #define AMMO_Elite 120 #define AMMO_Fiveseven 100 #define AMMO_Ump45 100 #define AMMO_Galil 90 #define AMMO_Famas 90 #define AMMO_Glock18 120 #define AMMO_Awp 30 #define AMMO_Mp5navy 120 #define AMMO_M249 200 #define AMMO_M3 32 #define AMMO_M4a1 90 #define AMMO_Tmp 120 #define AMMO_Deagle 35 #define AMMO_Ak47 90
new pcvar new classname[20],left,type,i
new const Secondary[] = {CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_GLOCK18, CSW_DEAGLE}; new const Primary[] ={CSW_SCOUT,CSW_XM1014,CSW_MAC10,CSW_AUG,CSW_UMP45,CSW_GALIL,CSW_FAMAS,CSW_MP5NAVY,CSW_M249,CSW_M3,CSW_M4A1,CSW_TMP,CSW_AK47}
public plugin_init() { // First we have to initialize the arrays and parameters // The value 3500.0 is the minimum distance between points // Nearest points will be found, but GetOrigin will erase points // with less than 3500.0 distance with other used points and return SsInit(3500.0)
// Let start scanning the map SsScan()
// This call is to dump on server logs the origins found SsDump()
// This command will call GetOrigin() to get a new location, then spawn a model (is't just an example) register_concmd("spawnent", "spawnent") register_forward(FM_Touch,"Equip") pcvar = register_cvar("ws_auto_remove","0") pcvar = get_pcvar_num(pcvar); pcvar = register_cvar("ws_reset_round","1") if(get_pcvar_num(pcvar)) { register_logevent("reset", 2, "1=Round_End") register_event("TextMsg", "reset", "a", "2=#Game_will_restart_in") } pcvar = register_cvar("ws_reset_gun","1") if(get_pcvar_num(pcvar)) { register_forward(FM_Think, "Forward_Think") pcvar = register_cvar("ws_reset_gun_time","1") pcvar = register_cvar("ws_reset_gun_amount","1") pcvar = get_pcvar_num(pcvar) } }
public Equip(id,weapon) { if(!pev_valid(weapon) || !pev_valid(id) )return //static classname[20] pev(weapon, pev_classname, classname,19) if(!equal(classname,wp_ent))return //static left,type,i left = pev(weapon,WP_Left) if(!left)return type = pev(weapon,WP_Type) //check if its a primary if(PRIMARY_WEAPONS & ( 1 << type)) { for (i = 0; i < sizeof Primary; ++i) { //cant have more then 1 primary if(user_has_weapon(id,Primary[i]))return } } //check if its secondary if(SECONDARY_WEAPONS & ( 1 << type)) { for (i = 0; i < sizeof Secondary; ++i) { //cant have more then 2 secondary if(user_has_weapon(id,Secondary[i]))return } }
//give weapon and ammo switch(type) { case 1 : { fm_give_item(id,"weapon_p228") set_pdata_int(id,OFFSET_P228_AMMO,AMMO_P228,linuxdiff) } case 2 : { fm_give_item(id,"weapon_scout") set_pdata_int(id,OFFSET_SCOUT_AMMO,AMMO_SCOUT,linuxdiff) } case 3 : { fm_give_item(id,"weapon_hegrenade") //set_pdata_int(id,OFFSET_HE_AMMO,amount,linuxdiff) } case 4 : { fm_give_item(id,"weapon_xm1014") set_pdata_int(id,OFFSET_M3_AMMO,AMMO_Xm1014,linuxdiff) } case 5 : { fm_give_item(id,"weapon_mac10") set_pdata_int(id,OFFSET_USP_AMMO,AMMO_Mac10,linuxdiff) } case 6 : { fm_give_item(id,"weapon_aug") set_pdata_int(id,OFFSET_FAMAS_AMMO,AMMO_Aug,linuxdiff) } case 7 : { fm_give_item(id,"weapon_smokegrenade") //set_pdata_int(id,OFFSET_SMOKE_AMMO,amount,linuxdiff) } case 8: { fm_give_item(id,"weapon_elite") set_pdata_int(id,OFFSET_GLOCK_AMMO,AMMO_Elite,linuxdiff) } case 9: { fm_give_item(id,"weapon_fiveseven") set_pdata_int(id,OFFSET_FIVESEVEN_AMMO,AMMO_Fiveseven,linuxdiff) } case 10: { fm_give_item(id,"weapon_ump45") set_pdata_int(id,OFFSET_USP_AMMO,AMMO_Ump45,linuxdiff) } case 11: { fm_give_item(id,"weapon_galil") set_pdata_int(id,OFFSET_FAMAS_AMMO,AMMO_Galil,linuxdiff) } case 12: { fm_give_item(id,"weapon_famas") set_pdata_int(id,OFFSET_FAMAS_AMMO,AMMO_Famas,linuxdiff) } case 13: { fm_give_item(id,"weapon_glock18") set_pdata_int(id,OFFSET_GLOCK_AMMO,AMMO_Glock18,linuxdiff) } case 14: { fm_give_item(id,"weapon_mp5navy") set_pdata_int(id,OFFSET_GLOCK_AMMO,AMMO_Mp5navy,linuxdiff) } case 15: { fm_give_item(id,"weapon_m249") set_pdata_int(id,OFFSET_PARA_AMMO,AMMO_M249,linuxdiff) } case 16: { fm_give_item(id,"weapon_m3") set_pdata_int(id,OFFSET_M3_AMMO,AMMO_M3,linuxdiff) } case 17: { fm_give_item(id,"weapon_m4a1") set_pdata_int(id,OFFSET_FAMAS_AMMO,AMMO_M4a1,linuxdiff) } case 18: { fm_give_item(id,"weapon_tmp") set_pdata_int(id,OFFSET_GLOCK_AMMO,AMMO_Tmp,linuxdiff) } case 19: { fm_give_item(id,"weapon_flashbang") //set_pdata_int(id,OFFSET_FLASH_AMMO,amount,linuxdiff) } case 20: { fm_give_item(id,"weapon_deagle") set_pdata_int(id,OFFSET_DEAGLE_AMMO,AMMO_Deagle,linuxdiff) } case 21: { fm_give_item(id,"weapon_ak47") set_pdata_int(id,OFFSET_SCOUT_AMMO,AMMO_Ak47,linuxdiff) } } left-=1 set_pev(weapon,WP_Left,left) //if nothing left make invisiable if(!left) { set_pev(weapon, pev_renderfx, kRenderFxNone) set_pev(weapon, pev_rendercolor, {0.0,0.0,0.0}) set_pev(weapon, pev_rendermode, kRenderTransAlpha) set_pev(weapon, pev_renderamt, 0.0) } }
public Forward_Think(ent) { if(!pev_valid(ent))return static classname[32] pev(ent, pev_classname, classname, 31) //not our weapon if(!equal(classname, wp_ent))return //get values classname[0] = pev(ent,WP_Max) classname[1] = pev(ent,WP_Left) //if its full return if(classname[1] == classname[0])return //if invisiable if(!classname[1]) { set_pev(ent, pev_renderfx, kRenderNormal) set_pev(ent, pev_rendercolor, {255.0,255.0,255.0}) set_pev(ent, pev_rendermode, kRenderTransAlpha) set_pev(ent, pev_renderamt, 255.0) } //add classname[1] +=pcvar //set it if(classname[1] > classname[0])set_pev(ent,WP_Left,classname[0]) else set_pev(ent,WP_Left,classname[1]) }
public spawnent(id) { for(new i = 0; i < 46; i++) { new Float:origin[3] // SsGetOrigin() will return true if useful location was found // will return false if there's no more usefull locations if(SsGetOrigin(origin)) { new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) if(pev_valid(ent)) { set_pev(ent,pev_classname, wp_ent) new ran = random_num(1,21) switch (ran) { case 1:engfunc(EngFunc_SetModel, ent, "models/w_p228.mdl") case 2:engfunc(EngFunc_SetModel, ent, "models/w_scout.mdl") case 3:engfunc(EngFunc_SetModel, ent, "models/w_hegrenade.mdl") case 4:engfunc(EngFunc_SetModel, ent, "models/w_xm1014.mdl") case 5:engfunc(EngFunc_SetModel, ent, "models/w_mac10.mdl") case 6:engfunc(EngFunc_SetModel, ent, "models/w_aug.mdl") case 7:engfunc(EngFunc_SetModel, ent, "models/w_smokegrenade.mdl") case 8:engfunc(EngFunc_SetModel, ent, "models/w_elite.mdl") case 9:engfunc(EngFunc_SetModel, ent, "models/w_fiveseven.mdl") case 10:engfunc(EngFunc_SetModel, ent, "models/w_ump45.mdl") case 11:engfunc(EngFunc_SetModel, ent, "models/w_galil.mdl") case 12:engfunc(EngFunc_SetModel, ent, "models/w_famas.mdl") case 13:engfunc(EngFunc_SetModel, ent, "models/w_glock18.mdl") case 14:engfunc(EngFunc_SetModel, ent, "models/w_mp5.mdl") case 15:engfunc(EngFunc_SetModel, ent, "models/w_m249.mdl") case 16:engfunc(EngFunc_SetModel, ent, "models/w_m3.mdl") case 17:engfunc(EngFunc_SetModel, ent, "models/w_m4a1.mdl") case 18:engfunc(EngFunc_SetModel, ent, "models/w_tmp.mdl") case 19:engfunc(EngFunc_SetModel, ent, "models/w_flashbang.mdl") case 20:engfunc(EngFunc_SetModel, ent, "models/w_deagle.mdl") case 21:engfunc(EngFunc_SetModel, ent, "models/w_ak47.mdl") } engfunc(EngFunc_SetOrigin, ent, origin) engfunc(EngFunc_SetSize, ent, {-2.0,-2.0,-2.0},{2.0,2.0,2.0}) set_pev(ent,pev_solid,2) set_pev(ent,pev_origin,origin) set_pev(ent,WP_Type,ran) set_pev(ent,WP_Left,ran) set_pev(ent,WP_Max,ran) engfunc(EngFunc_DropToFloor, ent) } } }
return PLUGIN_HANDLED }
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); 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; }
|