Raised This Month: $ Target: $400
 0% 

[AYUDA] Granada Infeccion para Base-Builder


  
 
 
Thread Tools Display Modes
Author Message
StorM20
BANNED
Join Date: Dec 2011
Location: de_inferno en Julieta
Old 08-17-2012 , 14:11   [AYUDA] Granada Infeccion para Base-Builder
#1

Hola, bueno hago este Post para saber si alguien sabe mas o menos, como adaptar la Granada de Infeccion de "Zombie Plague" a mod "Base-Builder 6.5"


Aqui les dejo la Granada de Zombie Plague c:

PHP Code:
/*================================================================================
    
    ---------------------------------
    -*- [ZP] Item: Infection Bomb -*-
    ---------------------------------
    
    This plugin is part of Zombie Plague Mod and is distributed under the
    terms of the GNU General Public License. Check ZP_ReadMe.txt for details.
    
================================================================================*/

#define ITEM_NAME "Infection Bomb"
#define ITEM_COST 20

#include <amxmodx>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <amx_settings_api>
#include <cs_weap_models_api>
#include <zp50_items>
#include <zp50_gamemodes>

// Settings file
new const ZP_SETTINGS_FILE[] = "zombieplague.ini"

// Default sounds
new const sound_grenade_infect_explode[][] = { "zombie_plague/grenade_infect.wav" }
new const 
sound_grenade_infect_player[][] = { "scientist/scream20.wav" "scientist/scream22.wav" "scientist/scream05.wav" }

#define MODEL_MAX_LENGTH 64
#define SOUND_MAX_LENGTH 64
#define SPRITE_MAX_LENGTH 64

// Models
new g_model_grenade_infect[MODEL_MAX_LENGTH] = "models/zombie_plague/v_grenade_infect.mdl"

// Sprites
new g_sprite_grenade_trail[SPRITE_MAX_LENGTH] = "sprites/laserbeam.spr"
new g_sprite_grenade_ring[SPRITE_MAX_LENGTH] = "sprites/shockwave.spr"

new Array:g_sound_grenade_infect_explode
new Array:g_sound_grenade_infect_player

// Explosion radius for custom grenades
const Float:NADE_EXPLOSION_RADIUS 240.0

// HACK: pev_ field used to store custom nade types and their values
const PEV_NADE_TYPE pev_flTimeStepSound
const NADE_TYPE_INFECTION 1111

new g_trailSprg_exploSpr

new g_ItemID
new g_GameModeInfectionID
new g_GameModeMultiID
new g_InfectionBombCountercvar_infection_bomb_round_limit

public plugin_init()
{
    
register_plugin("[ZP] Item: Infection Bomb"ZP_VERSION_STRING"ZP Dev Team")
    
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
    
register_forward(FM_SetModel"fw_SetModel")
    
RegisterHam(Ham_Think"grenade""fw_ThinkGrenade")
    
    
g_ItemID zp_items_register(ITEM_NAMEITEM_COST)
    
cvar_infection_bomb_round_limit register_cvar("zp_infection_bomb_round_limit""3")
}

public 
plugin_precache()
{
    
// Initialize arrays
    
g_sound_grenade_infect_explode ArrayCreate(SOUND_MAX_LENGTH1)
    
g_sound_grenade_infect_player ArrayCreate(SOUND_MAX_LENGTH1)
    
    
// Load from external file
    
amx_load_setting_string_arr(ZP_SETTINGS_FILE"Sounds""GRENADE INFECT EXPLODE"g_sound_grenade_infect_explode)
    
amx_load_setting_string_arr(ZP_SETTINGS_FILE"Sounds""GRENADE INFECT PLAYER"g_sound_grenade_infect_player)
    
    
// If we couldn't load custom sounds from file, use and save default ones
    
new index
    
if (ArraySize(g_sound_grenade_infect_explode) == 0)
    {
        for (
index 0index sizeof sound_grenade_infect_explodeindex++)
            
ArrayPushString(g_sound_grenade_infect_explodesound_grenade_infect_explode[index])
        
        
// Save to external file
        
amx_save_setting_string_arr(ZP_SETTINGS_FILE"Sounds""GRENADE INFECT EXPLODE"g_sound_grenade_infect_explode)
    }
    if (
ArraySize(g_sound_grenade_infect_player) == 0)
    {
        for (
index 0index sizeof sound_grenade_infect_playerindex++)
            
ArrayPushString(g_sound_grenade_infect_playersound_grenade_infect_player[index])
        
        
// Save to external file
        
amx_save_setting_string_arr(ZP_SETTINGS_FILE"Sounds""GRENADE INFECT PLAYER"g_sound_grenade_infect_player)
    }
    
    
// Load from external file, save if not found
    
if (!amx_load_setting_string(ZP_SETTINGS_FILE"Weapon Models""GRENADE INFECT"g_model_grenade_infectcharsmax(g_model_grenade_infect)))
        
amx_save_setting_string(ZP_SETTINGS_FILE"Weapon Models""GRENADE INFECT"g_model_grenade_infect)
    if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Grenade Sprites""TRAIL"g_sprite_grenade_trailcharsmax(g_sprite_grenade_trail)))
        
amx_save_setting_string(ZP_SETTINGS_FILE"Grenade Sprites""TRAIL"g_sprite_grenade_trail)
    if (!
amx_load_setting_string(ZP_SETTINGS_FILE"Grenade Sprites""RING"g_sprite_grenade_ringcharsmax(g_sprite_grenade_ring)))
        
amx_save_setting_string(ZP_SETTINGS_FILE"Grenade Sprites""RING"g_sprite_grenade_ring)
    
    
// Precache sounds
    
new sound[SOUND_MAX_LENGTH]
    for (
index 0index ArraySize(g_sound_grenade_infect_explode); index++)
    {
        
ArrayGetString(g_sound_grenade_infect_explodeindexsoundcharsmax(sound))
        
precache_sound(sound)
    }
    for (
index 0index ArraySize(g_sound_grenade_infect_player); index++)
    {
        
ArrayGetString(g_sound_grenade_infect_playerindexsoundcharsmax(sound))
        
precache_sound(sound)
    }
    
    
// Precache models
    
precache_model(g_model_grenade_infect)
    
g_trailSpr precache_model(g_sprite_grenade_trail)
    
g_exploSpr precache_model(g_sprite_grenade_ring)
}

public 
plugin_cfg()
{
    
g_GameModeInfectionID zp_gamemodes_get_id("Infection Mode")
    
g_GameModeMultiID zp_gamemodes_get_id("Multiple Infection Mode")
}

public 
event_round_start()
{
    
g_InfectionBombCounter 0
}

public 
zp_fw_items_select_pre(iditemidignorecost)
{
    
// This is not our item
    
if (itemid != g_ItemID)
        return 
ZP_ITEM_AVAILABLE;
    
    
// Infection bomb only available during infection modes
    
new current_mode zp_gamemodes_get_current()
    if (
current_mode != g_GameModeInfectionID && current_mode != g_GameModeMultiID)
        return 
ZP_ITEM_DONT_SHOW;
    
    
// Infection bomb only available to zombies
    
if (!zp_core_is_zombie(id))
        return 
ZP_ITEM_DONT_SHOW;
    
    
// Display remaining item count for this round
    
static text[32]
    
formatex(textcharsmax(text), "[%d/%d]"g_InfectionBombCounterget_pcvar_num(cvar_infection_bomb_round_limit))
    
zp_items_menu_text_add(text)
    
    
// Reached infection bomb limit for this round
    
if (g_InfectionBombCounter >= get_pcvar_num(cvar_infection_bomb_round_limit))
        return 
ZP_ITEM_NOT_AVAILABLE;
    
    
// Player already owns infection bomb
    
if (user_has_weapon(idCSW_HEGRENADE))
        return 
ZP_ITEM_NOT_AVAILABLE;
    
    return 
ZP_ITEM_AVAILABLE;
}

public 
zp_fw_items_select_post(iditemidignorecost)
{
    
// This is not our item
    
if (itemid != g_ItemID)
        return;
    
    
// Give infection bomb
    
give_item(id"weapon_hegrenade")
    
g_InfectionBombCounter++
}

public 
zp_fw_core_cure(idattacker)
{
    
// Remove custom grenade model
    
cs_reset_player_view_model(idCSW_HEGRENADE)
}

public 
zp_fw_core_infect_post(idattacker)
{
    
// Set custom grenade model
    
cs_set_player_view_model(idCSW_HEGRENADEg_model_grenade_infect)
}

// Forward Set Model
public fw_SetModel(entity, const model[])
{
    
// We don't care
    
if (strlen(model) < 8)
        return;
    
    
// Narrow down our matches a bit
    
if (model[7] != 'w' || model[8] != '_')
        return;
    
    
// Get damage time of grenade
    
static Float:dmgtime
    pev
(entitypev_dmgtimedmgtime)
    
    
// Grenade not yet thrown
    
if (dmgtime == 0.0)
        return;
    
    
// Grenade's owner isn't zombie?
    
if (!zp_core_is_zombie(pev(entitypev_owner)))
        return;
    
    
// HE Grenade
    
if (model[9] == 'h' && model[10] == 'e')
    {
        
// Give it a glow
        
fm_set_rendering(entitykRenderFxGlowShell02000kRenderNormal16);
        
        
// And a colored trail
        
message_begin(MSG_BROADCASTSVC_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(0// r
        
write_byte(200// g
        
write_byte(0// b
        
write_byte(200// brightness
        
message_end()
        
        
// Set grenade type on the thrown grenade entity
        
set_pev(entityPEV_NADE_TYPENADE_TYPE_INFECTION)
    }
}

// Ham Grenade Think Forward
public fw_ThinkGrenade(entity)
{
    
// Invalid entity
    
if (!pev_valid(entity)) return HAM_IGNORED;
    
    
// Get damage time of grenade
    
static Float:dmgtime
    pev
(entitypev_dmgtimedmgtime)
    
    
// Check if it's time to go off
    
if (dmgtime get_gametime())
        return 
HAM_IGNORED;
    
    
// Check if it's one of our custom nades
    
switch (pev(entityPEV_NADE_TYPE))
    {
        case 
NADE_TYPE_INFECTION// Infection Bomb
        
{
            
infection_explode(entity)
            return 
HAM_SUPERCEDE;
        }
    }
    
    return 
HAM_IGNORED;
}

// Infection Bomb Explosion
infection_explode(ent)
{
    
// Round ended
    
if (zp_gamemodes_get_current() == ZP_NO_GAME_MODE)
    {
        
// Get rid of the grenade
        
engfunc(EngFunc_RemoveEntityent)
        return;
    }
    
    
// Get origin
    
static Float:origin[3]
    
pev(entpev_originorigin)
    
    
// Make the explosion
    
create_blast(origin)
    
    
// Infection nade explode sound
    
static sound[SOUND_MAX_LENGTH]
    
ArrayGetString(g_sound_grenade_infect_exploderandom_num(0ArraySize(g_sound_grenade_infect_explode) - 1), soundcharsmax(sound))
    
emit_sound(entCHAN_WEAPONsound1.0ATTN_NORM0PITCH_NORM)
    
    
// Get attacker
    
new attacker pev(entpev_owner)
    
    
// Infection bomb owner disconnected or not zombie anymore?
    
if (!is_user_connected(attacker) || !zp_core_is_zombie(attacker))
    {
        
// Get rid of the grenade
        
engfunc(EngFunc_RemoveEntityent)
        return;
    }
    
    
// Collisions
    
new victim = -1
    
    
while ((victim engfunc(EngFunc_FindEntityInSpherevictimoriginNADE_EXPLOSION_RADIUS)) != 0)
    {
        
// Only effect alive humans
        
if (!is_user_alive(victim) || zp_core_is_zombie(victim))
            continue;
        
        
// Last human is killed
        
if (zp_core_get_human_count() == 1)
        {
            
ExecuteHamB(Ham_Killedvictimattacker0)
            continue;
        }
        
        
// Turn into zombie
        
zp_core_infect(victimattacker)
        
        
// Victim's sound
        
ArrayGetString(g_sound_grenade_infect_playerrandom_num(0ArraySize(g_sound_grenade_infect_player) - 1), soundcharsmax(sound))
        
emit_sound(victimCHAN_VOICEsound1.0ATTN_NORM0PITCH_NORM)
    }
    
    
// Get rid of the grenade
    
engfunc(EngFunc_RemoveEntityent)
}

// Infection Bomb: Green Blast
create_blast(const Float:origin[3])
{
    
// Smallest ring
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordorigin[0]) // x
    
engfunc(EngFunc_WriteCoordorigin[1]) // y
    
engfunc(EngFunc_WriteCoordorigin[2]) // z
    
engfunc(EngFunc_WriteCoordorigin[0]) // x axis
    
engfunc(EngFunc_WriteCoordorigin[1]) // y axis
    
engfunc(EngFunc_WriteCoordorigin[2]+385.0// z axis
    
write_short(g_exploSpr// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(0// red
    
write_byte(200// green
    
write_byte(0// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
    
    
// Medium ring
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordorigin[0]) // x
    
engfunc(EngFunc_WriteCoordorigin[1]) // y
    
engfunc(EngFunc_WriteCoordorigin[2]) // z
    
engfunc(EngFunc_WriteCoordorigin[0]) // x axis
    
engfunc(EngFunc_WriteCoordorigin[1]) // y axis
    
engfunc(EngFunc_WriteCoordorigin[2]+470.0// z axis
    
write_short(g_exploSpr// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(0// red
    
write_byte(200// green
    
write_byte(0// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
    
    
// Largest ring
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordorigin[0]) // x
    
engfunc(EngFunc_WriteCoordorigin[1]) // y
    
engfunc(EngFunc_WriteCoordorigin[2]) // z
    
engfunc(EngFunc_WriteCoordorigin[0]) // x axis
    
engfunc(EngFunc_WriteCoordorigin[1]) // y axis
    
engfunc(EngFunc_WriteCoordorigin[2]+555.0// z axis
    
write_short(g_exploSpr// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(0// red
    
write_byte(200// green
    
write_byte(0// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
}

// Set entity's rendering type (from fakemeta_util)
stock fm_set_rendering(entityfx kRenderFxNone255255255render kRenderNormalamount 16)
{
    static 
Float:color[3]
    
color[0] = float(r)
    
color[1] = float(g)
    
color[2] = float(b)
    
    
set_pev(entitypev_renderfxfx)
    
set_pev(entitypev_rendercolorcolor)
    
set_pev(entitypev_rendermoderender)
    
set_pev(entitypev_renderamtfloat(amount))

Siesque pudiese alguien plz

Last edited by StorM20; 08-17-2012 at 14:13.
StorM20 is offline
Send a message via MSN to StorM20
totalblood
BANNED
Join Date: Jul 2012
Old 08-17-2012 , 20:54   Re: [AYUDA] Granada Infeccion para Base-Builder
#2

mira , considera esto solo como una opinion

la idea del basebuilder es crear tu propia base y que los zombies tengan la astucia para llegar a ella y matarte

pienso que una bomba que transforme a los humanos en zombies en ese modo le quitaria la gracia...
totalblood is offline
StorM20
BANNED
Join Date: Dec 2011
Location: de_inferno en Julieta
Old 08-18-2012 , 09:07   Re: [AYUDA] Granada Infeccion para Base-Builder
#3

ammss, todo Caso...

Ok Gracias jajajajaja C:
StorM20 is offline
Send a message via MSN to StorM20
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 22:24.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode