Member
|
09-15-2011
, 22:32
Campo de Fuerza
|
#1
|
Buenas, he estado modificando un plugin es un campo de fuerza, un item extra de ZP pero quiero modificarlo para que funcione normal, no para ZP, estoy tratando de crear un pequeño mod y me fascino esto, e tratado de modificarlo me compilaba y todo pero al tirar la granada se quedaba en el suelo y no hacia nada, Aqui les dejo el code sin ningun cambio, si me pueden ayudar.
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>
#include <zombieplague>
#include <hamsandwich>
#include <fakemeta_util>
#include <fun>
#define PLUGIN "[ZP] Extra Item: Force Field Grenade"
#define VERSION "v2.1"
#define AUTHOR "lucas_7_94" // Thanks To Users in credits too!.
#define CAMPO_ROUND_NAME "Force Shield (Complete Round)"
#define CAMPO_TIME_NAME "Force Shield (Short-Time)"
#define ValidTouch(%1) ( is_user_alive(%1) && ( zp_get_user_zombie(%1) || zp_get_user_nemesis(%1) ) )
/*=============================[Plugin Customization]=============================*/
#define CAMPO_TASK
//#define CAMPO_ROUND
//#define RANDOM_COLOR
#define ONE_COLOR
new const NADE_TYPE_CAMPO = 3679
#if defined ONE_COLOR
new Float:CampoColors[3] = {
255.0 , // r
0.0 , // g
0.0 // b
}
#endif
new const model_grenade[] = "models/zombie_plague/v_auragren.mdl"
new const model[] = "models/zombie_plague/aura8.mdl"
new const w_model[] = "models/zombie_plague/w_aura.mdl"
new const sprite_grenade_trail[] = "sprites/laserbeam.spr"
new const entclas[] = "campo_grenade_forze"
new cvar_flaregrenades, g_trailSpr, cvar_push, g_SayText, g_itemID
new bool:g_bomb[33]
const item_cost = 15
/*=============================[End Customization]=============================*/
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade")
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
cvar_flaregrenades = get_cvar_pointer("zp_flare_grenades")
register_forward(FM_SetModel, "fw_SetModel")
RegisterHam(Ham_Item_Deploy, "weapon_smokegrenade", "shield_deploy", 1)
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_forward(FM_Touch, "fw_touch")
g_SayText = get_user_msgid("SayText")
register_cvar("zp_shield_creator", "lucas_7_94", FCVAR_SERVER|FCVAR_PROTECTED)
#if defined CAMPO_ROUND
g_itemID = zp_register_extra_item ( CAMPO_ROUND_NAME , item_cost * 2 , ZP_TEAM_HUMAN )
#else
g_itemID = zp_register_extra_item ( CAMPO_TIME_NAME , item_cost , ZP_TEAM_HUMAN )
#endif
// Push cvar, (Only float's numbers)
cvar_push = register_cvar("zp_forze_push", "7.5")
}
public event_round_start() {
#if defined CAMPO_ROUND
remove_entity_name(entclas)
#endif
arrayset( g_bomb, false, 33 );
}
public plugin_precache() {
g_trailSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_trail)
engfunc(EngFunc_PrecacheModel, model_grenade)
engfunc(EngFunc_PrecacheModel, model)
engfunc(EngFunc_PrecacheModel, w_model)
}
public client_disconnect(id)
arrayset( g_bomb, false, 33 );
public zp_extra_item_selected(player, itemid) {
if(itemid == g_itemID)
{
if(g_bomb[player])
Color(player, "!g[Shield]!y You already have a force field")
else
{
arrayset( g_bomb, true, player );
give_item(player,"weapon_smokegrenade")
#if defined CAMPO_ROUND
Color(player, "!g[Shield]!y You Bought a force field!. This, lasts 1 round complete.")
#else
Color(player, "!g[Shield]!y You Bought a force field!. This, lasts very little!")
#endif
}
}
}
public fw_PlayerKilled(victim, attacker, shouldgib) arrayset( g_bomb, false, 33 );
public fw_ThinkGrenade(entity) {
if(!pev_valid(entity)) return HAM_IGNORED
static Float:dmgtime
pev(entity, pev_dmgtime, dmgtime)
if (dmgtime > get_gametime())
return HAM_IGNORED
if(pev(entity, pev_flTimeStepSound) == NADE_TYPE_CAMPO)
crear_ent(entity)
return HAM_SUPERCEDE
}
public fw_SetModel(entity, const model[]) {
static Float:dmgtime
pev(entity, pev_dmgtime, dmgtime)
if (dmgtime == 0.0)
return FMRES_IGNORED;
if (equal(model[7], "w_sm", 4))
{
new owner = pev(entity, pev_owner)
if( is_user_alive(owner) && !zp_get_user_zombie(owner) && g_bomb[owner])
{
set_pcvar_num(cvar_flaregrenades,0)
fm_set_rendering(entity, kRenderFxGlowShell, 000, 255, 255, kRenderNormal, 16)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // TE id
write_short(entity) // entity
write_short(g_trailSpr) // sprite
write_byte(10) // life
write_byte(10) // width
write_byte(000) // r
write_byte(255) // g
write_byte(255) // b
write_byte(500) // brightness
message_end()
set_pev(entity, pev_flTimeStepSound, NADE_TYPE_CAMPO)
set_task(6.0, "DeleteEntityGrenade" ,entity)
entity_set_model(entity, w_model)
return FMRES_SUPERCEDE
}
}
return FMRES_IGNORED
}
public DeleteEntityGrenade(entity) remove_entity(entity)
public crear_ent(id) {
arrayset( g_bomb, false, id );
set_pcvar_num(cvar_flaregrenades,1)
// Create entitity
new iEntity = create_entity("info_target")
if(!is_valid_ent(iEntity))
return PLUGIN_HANDLED
new Float: Origin[3]
entity_get_vector(id, EV_VEC_origin, Origin)
entity_set_string(iEntity, EV_SZ_classname, entclas)
entity_set_vector(iEntity,EV_VEC_origin, Origin)
entity_set_model(iEntity,model)
entity_set_int(iEntity, EV_INT_solid, SOLID_TRIGGER)
entity_set_size(iEntity, Float: {-100.0, -100.0, -100.0}, Float: {100.0, 100.0, 100.0})
entity_set_int(iEntity, EV_INT_renderfx, kRenderFxGlowShell)
entity_set_int(iEntity, EV_INT_rendermode, kRenderTransAlpha)
entity_set_float(iEntity, EV_FL_renderamt, 50.0)
#if defined RANDOM_COLOR
if(is_valid_ent(iEntity))
{
new Float:vColor[3]
for(new i; i < 3; i++)
vColor[i] = random_float(0.0, 255.0)
entity_set_vector(iEntity, EV_VEC_rendercolor, vColor)
}
#endif
#if defined ONE_COLOR
entity_set_vector(iEntity, EV_VEC_rendercolor, CampoColors)
#endif
#if defined CAMPO_TASK
set_task(15.0, "DeleteEntity", iEntity)
#endif
return PLUGIN_CONTINUE;
}
public zp_user_infected_post(infected, infector)
if (g_bomb[infected])
arrayset( g_bomb, false, infected );
public fw_touch(ent, touched)
{
if ( !pev_valid(ent) ) return FMRES_IGNORED;
static entclass[32];
pev(ent, pev_classname, entclass, 31);
if ( equali(entclass, entclas) )
{
if( ValidTouch(touched) )
{
new Float:pos_ptr[3], Float:pos_ptd[3], Float:push_power = get_pcvar_float(cvar_push)
pev(ent, pev_origin, pos_ptr)
pev(touched, pev_origin, pos_ptd)
for(new i = 0; i < 3; i++)
{
pos_ptd[i] -= pos_ptr[i]
pos_ptd[i] *= push_power
}
set_pev(touched, pev_velocity, pos_ptd)
set_pev(touched, pev_impulse, pos_ptd)
}
}
return PLUGIN_HANDLED
}
public remove_ent()
{
remove_entity_name(entclas)
}
public DeleteEntity( entity ) // Thanks xPaw For The Code =D
if( is_valid_ent( entity ) )
remove_entity( entity );
stock Color(const id, const input[], any:...)
{
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")
message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, id)
write_byte(id)
write_string(msg)
message_end()
}
public shield_deploy( shield_ent )
{
if( pev_valid( shield_ent ) != 2 )
return HAM_IGNORED;
new id = get_pdata_cbase( shield_ent, 41, 4 );
if( g_bomb[ id ] && !zp_get_user_zombie( id ) )
set_pev( id, pev_viewmodel2, model_grenade );
return HAM_IGNORED;
}
|
|