Veteran Member
Join Date: Nov 2008
Location: Argentina- Mendoza
|
05-09-2009
, 16:13
Help with my plugin
|
#1
|
I´m working in this plugin, the plugin is done, but something is wrong.
PHP Code:
#include <amxmodx> #include <amxmisc> #include <fakemeta> #include <cstrike>
//offsets #define OFFSET_AWM_AMMO 377 #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 OFFSET_C4_AMMO 390 #define OFFSET_LINUX 5
#define class_awp "ammo_awp" #define class_aug "ammo_aug" #define class_scout "ammo_scout"
/* Bpammo for Weapon*/ #define ammo_awp 30 #define ammo_aug 90 #define ammo_scout 90
/* Code by Fxfighter*/ #define wp_max pev_iuser2 #define wp_left pev_iuser3 new amount, Time
// Cvars new hl_reset_time, hl_reset_amount
public plugin_init() { register_plugin("Ammo Spawner", "1.0[beta]", "Darckbaston") register_forward(FM_Touch, "touch_weapon") register_forward(FM_Think, "fm_think") register_clcmd("hl_menu","hl_menu") // cvar hl_reset_time = register_cvar("hl_reset_gun_time","3") hl_reset_amount =register_cvar("hl_reset_gun_amount","10") amount = get_pcvar_num(hl_reset_amount) Time = get_pcvar_num(hl_reset_time) }
public hl_menu(id) { new menu = menu_create("\y Spawn Ammo Menu", "menu_handler") menu_additem(menu, "\w Aug Ammo ", "1", 0) menu_additem(menu, "\w Scout Ammo", "2", 0) menu_additem(menu, "\w Awp Ammo ", "3", 0) menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, menu, 0) }
public menu_handler(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } new data[6], iName[64] new access, callback menu_item_getinfo(menu, item, access, data,5, iName, 63, callback) new key = str_to_num(data) switch(key) { case 1: { new Float:origin[3] pev(id,pev_origin,origin) origin[2]+=30.0 set_pev(id,pev_origin,origin) origin[2]-=30.0 aug(1, origin) } case 2: { new Float:origin[3] pev(id,pev_origin,origin) origin[2]+=30.0 set_pev(id,pev_origin,origin) origin[2]-=30.0 scout(1, origin) } case 3: { new Float:origin[3] pev(id,pev_origin,origin) origin[2]+=30.0 set_pev(id,pev_origin,origin) origin[2]-=30.0 awp(1 ,origin) } } menu_destroy(menu) return PLUGIN_HANDLED }
/* Create Weapon */ public scout(count, Float:origin[]) { new weapon = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "func_wall")) set_pev(weapon,pev_classname, class_scout) engfunc(EngFunc_SetModel, weapon, "models/w_scout.mdl") engfunc(EngFunc_SetSize, weapon, {-1.0,-1.0,-1.0},{1.0, 1.0, 1.0}) set_pev(weapon,pev_solid,2) set_pev(weapon,pev_origin,origin) engfunc(EngFunc_DropToFloor, weapon) set_pev(weapon,wp_left,count) set_pev(weapon,wp_max,count) }
public aug(count, Float:origin[]) { new weapon = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "func_wall")) set_pev(weapon,pev_classname, class_aug) engfunc(EngFunc_SetModel, weapon, "models/w_aug.mdl") engfunc(EngFunc_SetSize, weapon, {-1.0,-1.0,-1.0},{1.0, 1.0, 1.0}) set_pev(weapon,pev_solid,2) set_pev(weapon,pev_origin,origin) engfunc(EngFunc_DropToFloor, weapon) set_pev(weapon,wp_left,count) set_pev(weapon,wp_max,count) }
public awp(count, Float:origin[]) { new weapon = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "func_wall")) set_pev(weapon,pev_classname, class_awp) engfunc(EngFunc_SetModel, weapon, "models/w_awp.mdl") engfunc(EngFunc_SetSize, weapon, {-1.0,-1.0,-1.0},{1.0, 1.0, 1.0}) set_pev(weapon,pev_solid,2) set_pev(weapon,pev_origin,origin) engfunc(EngFunc_DropToFloor, weapon) set_pev(weapon,wp_left,count) set_pev(weapon,wp_max,count) }
/* Touch Weapon*/ public touch_weapon(id, weapon) { if(!pev_valid(weapon) || !pev_valid(id) )return static classname[20] pev(weapon, pev_classname, classname,19) if(equal(classname,class_aug)) cs_set_user_bpammo(id, CSW_AUG, ammo_aug) if(equal(classname,class_awp)) cs_set_user_bpammo(id, CSW_AWP, ammo_awp) if(equal(classname, class_scout)) cs_set_user_bpammo(id, CSW_SCOUT,ammo_scout)
/*Code by Fxfighter*/ // Setea para que solo este en el suelo una carga en el piso y static left ;left = pev(weapon,wp_left) left-=1 set_pev(weapon,wp_left,left) // Setea para que aparescan de nuevo en un tiempo determinado if(amount != 0)set_pev(weapon, pev_nextthink, get_gametime() + Time) // Setea para que no sea visible cuando no hay cargas en el suelo 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) }
/* Finish */ }
/* Reset Ammo */ public fm_think(ent) { if(!pev_valid(ent))return static classname[32] pev(ent, pev_classname, classname, 31) //not our weapon if(!equal(classname, class_aug) || !equal(classname, class_scout) || !equal(classname, class_awp) )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] +=amount //set it if(classname[1] > classname[0])set_pev(ent,wp_left,classname[0]) else set_pev(ent,wp_left,classname[1]) if(classname[1] != classname[0]) set_pev(ent, pev_nextthink, get_gametime() + Time) }
public reset() { new value,weapon while((weapon = engfunc(EngFunc_FindEntityByString, weapon, "classname", class_aug)) != 0) { value=pev(weapon,wp_left) if(!value) { set_pev(weapon, pev_renderfx, kRenderNormal) set_pev(weapon, pev_rendercolor, {255.0,255.0,255.0}) set_pev(weapon, pev_rendermode, kRenderTransAlpha) set_pev(weapon, pev_renderamt, 255.0) } value=pev(weapon,wp_max) set_pev(weapon,wp_left,value) } while((weapon = engfunc(EngFunc_FindEntityByString, weapon, "classname", class_awp)) != 0) { value=pev(weapon,wp_left) if(!value) { set_pev(weapon, pev_renderfx, kRenderNormal) set_pev(weapon, pev_rendercolor, {255.0,255.0,255.0}) set_pev(weapon, pev_rendermode, kRenderTransAlpha) set_pev(weapon, pev_renderamt, 255.0) } value=pev(weapon,wp_max) set_pev(weapon,wp_left,value) } while((weapon = engfunc(EngFunc_FindEntityByString, weapon, "classname", class_scout)) != 0) { value=pev(weapon,wp_left) if(!value) { set_pev(weapon, pev_renderfx, kRenderNormal) set_pev(weapon, pev_rendercolor, {255.0,255.0,255.0}) set_pev(weapon, pev_rendermode, kRenderTransAlpha) set_pev(weapon, pev_renderamt, 255.0) } value=pev(weapon,wp_max) set_pev(weapon,wp_left,value) } }
/* Stocks */ stock fm_set_user_bpammo(id, weapon, amount) { static offset switch(weapon) { case CSW_AWP: offset = OFFSET_AWM_AMMO; case CSW_SCOUT,CSW_AK47,CSW_G3SG1: offset = OFFSET_SCOUT_AMMO; case CSW_M249: offset = OFFSET_PARA_AMMO; case CSW_M4A1,CSW_FAMAS,CSW_AUG,CSW_SG550,CSW_GALI,CSW_SG552: offset = OFFSET_FAMAS_AMMO; case CSW_M3,CSW_XM1014: offset = OFFSET_M3_AMMO; case CSW_USP,CSW_UMP45,CSW_MAC10: offset = OFFSET_USP_AMMO; case CSW_FIVESEVEN,CSW_P90: offset = OFFSET_FIVESEVEN_AMMO; case CSW_DEAGLE: offset = OFFSET_DEAGLE_AMMO; case CSW_P228: offset = OFFSET_P228_AMMO; case CSW_GLOCK18,CSW_MP5NAVY,CSW_TMP,CSW_ELITE: offset = OFFSET_GLOCK_AMMO; case CSW_FLASHBANG: offset = OFFSET_FLASH_AMMO; case CSW_HEGRENADE: offset = OFFSET_HE_AMMO; case CSW_SMOKEGRENADE: offset = OFFSET_SMOKE_AMMO; case CSW_C4: offset = OFFSET_C4_AMMO; default: return; } set_pdata_int(id, offset, amount, OFFSET_LINUX) }
Fuction: is very easy , the fuction is equal the plugin weapon_spawner but this spawner bpammo, the problem is what dont respawn after 3 sec.
Can help my plis?
Sorry for my bad english, i´m from Argentina!
__________________
Last edited by larito; 05-10-2009 at 11:18.
|
|