Mensajes: 843
Temas: 303
Registro en: Oct 2013
Reputación:
2
12/06/2016, 10:11 PM
(Última modificación: 12/06/2016, 10:20 PM por wicho.)
Hola todos, alguien sabe que función es para detectar cuando un jugador recibe un arma de otro cuando lo dropea (weaponbox)? me podrían dar un ejemplo por favor? ... gracias antemano
Mensajes: 2,176
Temas: 99
Registro en: Dec 2013
Reputación:
42
13/06/2016, 12:18 AM
(Última modificación: 13/06/2016, 12:18 AM por CSAxel.)
Código PHP: RegisterHam(Ham_Touch, "weaponbox", "ham__WeaponTouchPost", 1);
public ham__WeaponTouchPost(const iWeapon, const id) { if (!is_user_valid_connected(id) { return HAM_IGNORED; }
return HAM_SUPERCEDE; // BLOQUEA AL USUARIO AGARRAR EL ARMA DROPEADA }
Mensajes: 843
Temas: 303
Registro en: Oct 2013
Reputación:
2
13/06/2016, 12:46 AM
(Última modificación: 13/06/2016, 12:46 AM por wicho.)
gracias, lo que yo quiero hacer es obtener todos los items de weaponbox y cambiar el ammo, me podrías dar un ejemplo de eso por favor..
Mensajes: 2,176
Temas: 99
Registro en: Dec 2013
Reputación:
42
WeaponBox contiene todos las armas y todo lo que se dropea en el piso (Por un jugador obvio, ya que si viene en el mapa es armoury_entity).
Explicate un poco lo de "cambiar de ammo" así te puedo dar un ejemplo correspondiente
Mensajes: 843
Temas: 303
Registro en: Oct 2013
Reputación:
2
yo uso un código que da balas infinitas el problema es que cuando yo dropeo el arma y otro jugador lo toma gana balas infinitas y eso es lo que quiero cambiar/alter..
este es el codigo:
Código PHP: #include <amxmodx> #include <hamsandwich> #include <cstrike> #include <engine>
const WPN_NO_RELOAD = ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4)) new bool:bInfinityClip[33]
public plugin_init() { register_plugin("Infinity Clips", "0.0.1", "wbyokomo") //ExecuteHam(Ham_Item_Deploy, this) RegisterHam(Ham_Item_Deploy, "weapon_glock18", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_usp", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_deagle", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_p228", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_elite", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_fiveseven", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_m3", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_xm1014", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_mp5navy", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_mac10", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_tmp", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_p90", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_ump45", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_galil", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_famas", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_ak47", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_m4a1", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_sg552", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_aug", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_g3sg1", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_sg550", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_scout", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_awp", "OnItemDeployPost", 1) RegisterHam(Ham_Item_Deploy, "weapon_m249", "OnItemDeployPost", 1) register_clcmd("say /uc", "CmdSetInfinityClip") }
public CmdSetInfinityClip(id) { if(!is_user_alive(id)) return PLUGIN_HANDLED; if(bInfinityClip[id]) { bInfinityClip[id] = false client_print(id, print_chat, "CmdSetInfinityClip(%d) DISABLED!", id) } else { bInfinityClip[id] = true client_print(id, print_chat, "CmdSetInfinityClip(%d) ENABLED!", id) engclient_cmd(id, "weapon_knife") //force switch to update Ham_Item_Deploy } return PLUGIN_HANDLED; }
public OnItemDeployPost(ent) { if(!is_valid_ent(ent)) return; //for safety static id; id = get_pdata_cbase(ent, 41, 4); if(!is_user_alive(id) || !bInfinityClip[id]) return; //for safety @ player don't have infinity clips cs_set_weapon_ammo(ent, 32767) //set infinity clip new iParams[1]; iParams[0] = ent; set_task(0.1, "TaskSetBpAmmo", id, iParams, 1) //HL1 engine is weird it need task to set bpammo }
public TaskSetBpAmmo(iParams[], id) { if(!is_user_alive(id) || !bInfinityClip[id]) return; //for safety new ent = iParams[0] if(!is_valid_ent(ent)) return; //for safety new wpnid = cs_get_weapon_id(ent); if((WPN_NO_RELOAD & (1<<wpnid))) return; //unreload weapon cs_set_user_bpammo(id, wpnid, 0) //prevent reloading }
Mensajes: 252
Temas: 50
Registro en: Mar 2016
Reputación:
2
Una Pequeña Optimización ?
Código PHP: #include <amxmodx> #include <hamsandwich> #include <cstrike> #include <engine>
const WPN_NO_RELOAD = ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4)) new bool:bInfinityClip[33] new const WeaponsEnts[][] = { "weapon_p228", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550","weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249","weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90" }
public plugin_init() { register_plugin("Infinity Clips", "0.0.1", "wbyokomo") //ExecuteHam(Ham_Item_Deploy, this) for(i = 0; i < sizeof(WeaponsEnts); i++) RegisterHam(Ham_Item_Deploy, WeaponsEnts[i], "OnItemDeployPost", 1) register_clcmd("say /uc", "CmdSetInfinityClip") }
public CmdSetInfinityClip(id) { if(!is_user_alive(id)) return PLUGIN_HANDLED; if(bInfinityClip[id]) { bInfinityClip[id] = false client_print(id, print_chat, "CmdSetInfinityClip(%d) DISABLED!", id) } else { bInfinityClip[id] = true client_print(id, print_chat, "CmdSetInfinityClip(%d) ENABLED!", id) engclient_cmd(id, "weapon_knife") //force switch to update Ham_Item_Deploy } return PLUGIN_HANDLED; }
public OnItemDeployPost(ent) { if(!is_valid_ent(ent)) return; //for safety static id; id = get_pdata_cbase(ent, 41, 4); if(!is_user_alive(id) || !bInfinityClip[id]) return; //for safety @ player don't have infinity clips cs_set_weapon_ammo(ent, 32767) //set infinity clip new iParams[1]; iParams[0] = ent; set_task(0.1, "TaskSetBpAmmo", id, iParams, 1) //HL1 engine is weird it need task to set bpammo }
public TaskSetBpAmmo(iParams[], id) { if(!is_user_alive(id) || !bInfinityClip[id]) return; //for safety new ent = iParams[0] if(!is_valid_ent(ent)) return; //for safety new wpnid = cs_get_weapon_id(ent); if((WPN_NO_RELOAD & (1<<wpnid))) return; //unreload weapon cs_set_user_bpammo(id, wpnid, 0) //prevent reloading }
Mensajes: 3,466
Temas: 18
Registro en: Oct 2013
Reputación:
54
Estas usandolo en un ZP por si acaso?
Mensajes: 843
Temas: 303
Registro en: Oct 2013
Reputación:
2
14/06/2016, 05:20 AM
(Última modificación: 14/06/2016, 05:24 AM por wicho.)
si es un extra item para zombie plague, este es el codigo:
Código PHP: #include <amxmodx> #include <hamsandwich> #include <cstrike> #include <engine> #include <zp50_items> #include <zp50_class_nemesis> #include <zp50_class_survivor>
// Weapon entity names new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90" }
const WPN_NO_RELOAD = ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4)) new bool:bInfinityClip[33] new g_itemid
public plugin_init() { register_plugin("[ZP] Extra: Unlimited Clip", "0.0.1", "wbyokomo") //register Ham_Item_Deploy forward for all CS weapons for (new i = 1; i < sizeof WEAPONENTNAMES; i++) { if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "OnItemDeployPost", 1); if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Weapon_Reload, WEAPONENTNAMES[i], "OnItemReload") } register_event("HLTV", "event_round_start", "a", "1=0", "2=0") g_itemid = zp_items_register("Unlimited Clip (One round)", 15) }
// Reset flags for all players on newround public event_round_start() { arrayset(bInfinityClip, 0, sizeof(bInfinityClip)) }
public zp_fw_items_select_pre(id, itemid) { if (itemid == g_itemid) { if (zp_core_is_zombie(id) || zp_class_survivor_get(id) || zp_class_nemesis_get(id)) return ZP_ITEM_DONT_SHOW;
return ZP_ITEM_AVAILABLE; } return ZP_ITEM_AVAILABLE; }
public zp_fw_items_select_post(id, itemid, ignorecost) { if (itemid == g_itemid) { bInfinityClip[id] = true engclient_cmd(id, "weapon_knife") } }
public OnItemReload(ent) { if(!is_valid_ent(ent)) return HAM_IGNORED static id id = get_pdata_cbase(ent, 41, 4)
if(bInfinityClip[id]) return HAM_IGNORED setUserAnimation(id, 0) return HAM_SUPERCEDE }
public OnItemDeployPost(ent) { if(!is_valid_ent(ent)) return; //for safety static id; id = get_pdata_cbase(ent, 41, 4); if(!is_user_alive(id) || !bInfinityClip[id]) return; //for safety @ player don't have infinity clips cs_set_weapon_ammo(ent, 32767) //set infinity clip new iParams[1]; iParams[0] = ent; set_task(0.1, "TaskSetBpAmmo", id, iParams, 1) //HL1 engine is weird it need task to set bpammo }
public TaskSetBpAmmo(iParams[], id) { if(!is_user_alive(id) || !bInfinityClip[id]) return; //for safety new ent = iParams[0] if(!is_valid_ent(ent)) return; //for safety new wpnid = cs_get_weapon_id(ent); if((WPN_NO_RELOAD & (1<<wpnid))) return; //unreload weapon cs_set_user_bpammo(id, wpnid, 0) //prevent reloading }
public setUserAnimation(const id, const iAnimation) { entity_set_int(id, EV_INT_weaponanim, iAnimation); message_begin(MSG_ONE, SVC_WEAPONANIM, _, id); write_byte(iAnimation); write_byte(entity_get_int(id, EV_INT_body)); message_end(); }
|