Raised This Month: $32 Target: $400
 8% 

[Help] Put extra item in this


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
GuTo
Senior Member
Join Date: Mar 2010
Location: Brazil - SP
Old 09-28-2016 , 18:47   [Help] Put extra item in this
Reply With Quote #1

Hi, did is change to this mod and need some help to get the flamethrower for free when this mod, as few in this mod.
Follows the mod and plugin flamethrower

Thank you, I really need this aid

Sorry my bad English.


Mod:
PHP Code:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <zombie_plague_special>
#include <amx_settings_api>

#if ZPS_INC_VERSION < 30
    #assert Zombie Plague Special 3.0 Include File Required. Download Link: https://forums.alliedmods.net/showthread.php?t=260845
#endif

new const ZP_CUSTOMIZATION_FILE[] = "zombie_plague_special.ini"

new Array:g_sound_lickerg_ambience_sounds, Array:g_sound_amb_licker_dur, Array: g_sound_ambience_licker

// Default Sounds
new const sound_licker[][] = { "zombie_plague/nemesis1.wav" }
new const 
ambience_licker_sound[][] = { "zombie_plague/ambience.wav" 
new const 
ambience_licker_dur[][] = { "17" }

new const 
sp_name[] = "Licker TBR"
new const sp_model[] = "TBR_Licker_new"
new const sp_knifemodel[] = "models/zombie_plague/v_TBR_Licker.mdl"
new const sp_painsound[] = "zombie_plague/nemesis_pain1.wav"
new const sp_hp 30000
new const sp_speed 400
new const Float:sp_gravity 0.5
new const sp_aura_size 0
new const Float:sp_knockback 0.25
new const sp_allow_glow 0
new const sp_color_r =  0
new const sp_color_g 50
new const sp_color_b 50
new acess_flags[2]

// Variables
new g_gameidg_msg_synccvar_minplayerscvar_licker_damageg_speciald
new const g_chance 40

// Ambience sounds task
#define TASK_AMB 3256

public plugin_init()
{
    
// Plugin registeration.
    
register_plugin("[TARGETBR] Modo Licker","1.0""BRAVOK")
    
    
cvar_minplayers register_cvar("zp_licker_minplayers""2")
    
cvar_licker_damage register_cvar("zp_licker_damage_multi""3.5")
    
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
    
register_event("CurWeapon","CurrentWeapon","be","1=1")
    
register_forward(FM_PlayerPreThink"fw_PlayerPreThink")
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
    
g_msg_sync CreateHudSyncObj()
}


// Game modes MUST be registered in plugin precache ONLY
public plugin_precache()
{
    
// Read the access flag
    
new user_access[40]
    if(!
amx_load_setting_string(ZP_CUSTOMIZATION_FILE"Access Flags""START MODE LICKER"user_accesscharsmax(user_access)))
    {
        
amx_save_setting_string(ZP_CUSTOMIZATION_FILE"Access Flags""START MODE LICKER""a")
        
formatex(user_accesscharsmax(user_access), "a")
    }
    
    
acess_flags[0] = read_flags(user_access)
    
    if(!
amx_load_setting_string(ZP_CUSTOMIZATION_FILE"Access Flags""MAKE LICKER"user_accesscharsmax(user_access)))
    {
        
amx_save_setting_string(ZP_CUSTOMIZATION_FILE"Access Flags""MAKE LICKER""a")
        
formatex(user_accesscharsmax(user_access), "a")
    }
    
    
acess_flags[1] = read_flags(user_access)
    new 
i
    
    g_sound_licker 
ArrayCreate(641)
    
g_sound_ambience_licker ArrayCreate(641)
    
g_sound_amb_licker_dur ArrayCreate(641)
    
    
// Load from external file
    
amx_load_setting_string_arr(ZP_CUSTOMIZATION_FILE"Sounds""ROUND LICKER"g_sound_licker)
    
    
// Precache the play sounds
    
if (ArraySize(g_sound_licker) == 0)
    {
        for (
0sizeof g_sound_lickeri++)
            
ArrayPushString(g_sound_lickersound_licker[i])
        
        
// Save to external file
        
amx_save_setting_string_arr(ZP_CUSTOMIZATION_FILE"Sounds""ROUND LICKER"g_sound_licker)
    }
    
    
// Precache sounds
    
new sound[100]
    for (
0ArraySize(g_sound_licker); i++)
    {
        
ArrayGetString(g_sound_lickerisoundcharsmax(sound))
        if (
equal(sound[strlen(sound)-4], ".mp3"))
        {
            
format(soundcharsmax(sound), "sound/%s"sound)
            
precache_generic(sound)
        }
        else 
precache_sound(sound)
    }
    
    
// Ambience Sounds
    
g_ambience_sounds 0
    
if(!amx_load_setting_int(ZP_CUSTOMIZATION_FILE"Ambience Sounds""LICKER ENABLE"g_ambience_sounds))
        
amx_save_setting_int(ZP_CUSTOMIZATION_FILE"Ambience Sounds""LICKER ENABLE"g_ambience_sounds)
    
    
amx_load_setting_string_arr(ZP_CUSTOMIZATION_FILE"Ambience Sounds""LICKER SOUNDS"g_sound_ambience_licker)
    
amx_load_setting_string_arr(ZP_CUSTOMIZATION_FILE"Ambience Sounds""LICKER DURATIONS"g_sound_amb_licker_dur)
    
    
    
// Save to external file
    
if (ArraySize(g_sound_ambience_licker) == 0)
    {
        for (
0sizeof ambience_licker_soundi++)
            
ArrayPushString(g_sound_ambience_lickerambience_licker_sound[i])
        
        
amx_save_setting_string_arr(ZP_CUSTOMIZATION_FILE"Ambience Sounds""LICKER SOUNDS"g_sound_ambience_licker)
    }
    
    if (
ArraySize(g_sound_amb_licker_dur) == 0)
    {
        for (
0sizeof g_sound_amb_licker_duri++)
            
ArrayPushString(g_sound_amb_licker_durambience_licker_dur[i])
        
        
amx_save_setting_string_arr(ZP_CUSTOMIZATION_FILE"Ambience Sounds""LICKER DURATIONS"g_sound_amb_licker_dur)
    }
    
    
// Ambience Sounds
    
new buffer[250]
    if (
g_ambience_sounds) {
        for (
0ArraySize(g_sound_ambience_licker); i++) {
            
ArrayGetString(g_sound_ambience_lickeribuffercharsmax(buffer))
            
            if (
equal(buffer[strlen(buffer)-4], ".mp3")) {
                
format(buffercharsmax(buffer), "sound/%s"buffer)
                
precache_generic(buffer)
            }
            else 
precache_sound(buffer)
        }
    }
    
    
// Register our game mode
    
g_gameid zp_register_game_mode(sp_nameacess_flags[0], g_chance00)
    
g_speciald zp_register_zombie_special(sp_namesp_modelsp_knifemodelsp_painsoundsp_hpsp_speedsp_gravityacess_flags[1], sp_knockbacksp_aura_sizesp_allow_glowsp_color_rsp_color_gsp_color_b)
}

public 
plugin_natives()
{
    
register_native("zp_get_user_licker""native_get_user_licker"1)
    
register_native("zp_make_user_licker""native_make_user_licker"1)
    
register_native("zp_get_licker_count""native_get_licker_count"1)
    
register_native("zp_is_licker_round""native_is_licker_round"1)
}

public 
zp_extra_item_selected_pre(iditemid) {
    if(
zp_get_zombie_special_class(id) == g_speciald)
        return 
ZP_PLUGIN_SUPERCEDE
    
    
return PLUGIN_CONTINUE
}

public 
CurrentWeapon(id)
{
    if (!
is_user_alive(id) || zp_get_current_mode() != g_gameid)
        return 
PLUGIN_HANDLED;
    
    if (
get_user_weapon(id) != CSW_KNIFE && !zp_get_user_zombie(id))
        
engclient_cmd(id"weapon_knife")
    
    return 
PLUGIN_HANDLED
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    if(
inflictor == attacker && zp_get_zombie_special_class(attacker) == g_speciald)
        
SetHamParamFloat(4damage get_pcvar_float(cvar_licker_damage))
}

// Player spawn post
public zp_player_spawn_post(id)
{
    
// Check for current mode
    
if(zp_get_current_mode() == g_gameid)
        
zp_disinfect_user(id)
        
    if(
zp_get_zombie_special_class(id) != g_speciald) {
        
unduck_player(id)
    }
}

public 
zp_round_started_pre(game)
{
    
// Check if it is our game mode
    
if(game == g_gameid)
    {
        
// Check for min players
        
if(zp_get_alive_players() < get_pcvar_num(cvar_minplayers))
            return 
ZP_PLUGIN_HANDLED

        
// Start our new mode
        
start_licker_mode()
    }
    return 
PLUGIN_CONTINUE
}

public 
zp_round_started(gameid)
{
    
// Check if it is our game mode
    
if(game == g_gameid)
    {
        
// Play the starting sound
        
new sound[100]
        
ArrayGetString(g_sound_lickerrandom_num(0ArraySize(g_sound_licker) - 1), soundcharsmax(sound))
        
PlaySoundToClients(sound)
        
        
// Remove ambience task affects
        
remove_task(TASK_AMB)
        
        
// Set task to start ambience sounds
        
set_task(2.0"start_ambience_sounds"TASK_AMB)
    }
}

// Plays a sound on clients
PlaySoundToClients(const sound[])
{
    if (
equal(sound[strlen(sound)-4], ".mp3"))
        
client_cmd(0"mp3 play ^"sound/%s^""sound)
    else
        
client_cmd(0"spk ^"%s^""sound)
}

public 
zp_game_mode_selected(gameidid)
{
    
// Check if our game mode was called
    
if(gameid == g_gameid)
        
start_licker_mode()
    
    
// Make the compiler happy again =)
    
return PLUGIN_CONTINUE
}

// This function contains the whole code behind this game mode
start_licker_mode()
{
    new 
idi,  has_licker
    has_licker 
false
    
for (1<= get_maxplayers(); i++) {
        if(
zp_get_zombie_special_class(i) == g_speciald) {
            
id i
            has_licker 
true
        
}
    }

    if(!
has_licker) {
        
id fnGetRandomAlive(random_num(1zp_get_alive_players()))
        
zp_make_user_special(idg_speciald1)
    }
    
    new 
name[32]; get_user_name(idname31);
    
set_hudmessage(sp_color_rsp_color_gsp_color_b, -1.00.1710.05.01.01.0, -1)
    
ShowSyncHudMsg(0g_msg_sync"%s eh %s"namesp_name)
        
    
// Turn the remaining players into zombies
    
for (id 1id <= get_maxplayers(); id++)
    {
        
// Not alive
        
if(!is_user_alive(id))
            continue;
            
        if(!
zp_get_user_zombie(id))
            
engclient_cmd(id"weapon_knife")

        
ScreenFade(id5sp_color_rsp_color_gsp_color_b255)
    }

}

public 
start_ambience_sounds()
{
    if (!
g_ambience_sounds)
        return;
    
    
// Variables
    
static amb_sound[64], sound,  str_dur[20]
    
    
// Select our ambience sound
    
sound random_num(0ArraySize(g_sound_ambience_licker)-1)

    
ArrayGetString(g_sound_ambience_lickersoundamb_soundcharsmax(amb_sound))
    
ArrayGetString(g_sound_amb_licker_dursoundstr_durcharsmax(str_dur))
    
    
PlaySoundToClients(amb_sound)
    
    
// Start the ambience sounds
    
set_task(str_to_float(str_dur), "start_ambience_sounds"TASK_AMB)
}
public 
zp_round_ended()
{
    
remove_task(TASK_AMB)
}

public 
zp_user_infected_post(id)
{
    if(
zp_get_zombie_special_class(id) == g_speciald
    {
        if(!
zp_has_round_started())
            
zp_set_custom_game_mod(g_gameid)
        
        if(
is_user_bot(id))
            
zp_set_user_maxspeed(id325.0)
            
    }
    else {
        
unduck_player(id)
    }
}

    
// Forward Player PreThink
public fw_PlayerPreThink(id)
{
    
// Checks...
    
if (!zp_get_user_zombie(id) || is_user_bot(id) || zp_get_zombie_special_class(id) != g_speciald || !is_user_alive(id))
        return;
}

// Ham Player Killed Forward
public fw_PlayerKilled(id) {
    
unduck_player(id)
}

public 
event_round_start() {
    for (new 
id 1id <= get_maxplayers(); id++)
        
unduck_player(id)
}

public 
zp_user_humanized_post(id) {
    
unduck_player(id)
}

public 
unduck_player(id)
{
    if(
is_user_bot(id))
        return
    
    
set_pev(idpev_bInDuck0)
    
client_cmd(id"-duck")
    
client_cmd(id"-duck"// Prevent death spectator camera bug
}

stock client_printcolor(const id,const input[], any:...)
{
    new 
msg[191], players[32], count 1vformat(msg,190,input,3);
    
replace_all(msg,190,"!g","^4");    // green
    
replace_all(msg,190,"!y","^1");    // normal
    
replace_all(msg,190,"!t","^3");    // team
    
    
if (idplayers[0] = id; else get_players(players,count,"ch");
    
    for (new 
i=0;i<count;i++)
    {
        if (
is_user_connected(players[i]))
        {
            
message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("SayText"),_,players[i]);
            
write_byte(players[i]);
            
write_string(msg);
            
message_end();
        }
    }


fnGetRandomAlive(n)
{
    static 
iAliveid
    iAlive 
0
    
    
for (id 1id <= get_maxplayers(); id++)
    {
        if(
is_user_alive(id))
            
iAlive++
        
        if(
iAlive == n)
            return 
id;
    }
    
    return -
1;
}

stock ScreenFade(idTimerr,bAlpha
{    
    if(!
is_user_connected(id)) return;
    
    
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("ScreenFade"), _id);
    
write_short((1<<12) * Timer)
    
write_short(1<<12)
    
write_short(0)
    
write_byte(r)
    
write_byte(g)
    
write_byte(b)
    
write_byte(Alpha)
    
message_end()
}


public 
native_get_user_licker(id)
    return (
zp_get_zombie_special_class(id) == g_speciald)
    
public 
native_make_user_licker(id)
    return (
zp_make_user_special(idg_speciald1))
    
public 
native_get_licker_count()
    return 
zp_get_special_count(1g_speciald)
    
public 
native_is_licker_round()
    return (
zp_get_current_mode() == g_gameid
Extra Item: flamethrower

PHP Code:
/*
                [ZP] Extra Item : Flamethrower
                      (Weapon For Humans)
                         by Fry!

                         
    Description :

            This is flamethrower, with this weapon is easier to burn zombies with very high damage.
            Although it costs very much, but after each kill you will gain extra ammo packs and extra frags (depends on cvars).
            
            To buy more fuel : +attack2
            
            In v0.8.6 - Changed purpose for this weapon, when it is purchased you will loose current weapons,
            and only giving flamethrower and you can't pick up other weapons.

    Cvars :
    
            zp_ft_cost "57" - How much it costs.
            zp_ft_fuelcost "10" - How much fuel will cost.
            zp_ft_fueltank "100" - How much fuel ammo will be in one clip.
            zp_ft_fuelvalue "1" - 1 fuel for 10 ammo packs.
            zp_ft_damage "25" - Damage done to zombies.
            zp_ft_xplode_dmg "100" - Explode done damage.
            zp_ft_damage_dis "120" - How far You can shoot flames.
            zp_ft_splash_dis "75" - How far fire will splash.
            zp_ft_ammo_after_kill "15" - Extra ammo packs after kill.
            zp_ft_frags_after_kill "5" - Extra frags after kill.
            zp_ft_removed_on_new_round <1|0> - Enable|Disable - remove|save dropped flamethrowers on new round.
    
    Credits :

            Cheap_Suit - For his flamethrower plugin. :)

    Changelog :

            29/10/2008 - v0.1 - First release
            31/10/2008 - v0.3 - rewrited all plugin, fixed some of my mistakes
            01/11/2008 - v0.4 - completely fixed bug due zombies could use flamethrower to kill humans.
            03/11/2008 - v0.4.1 - removed one annoying code line due players after dropcan't pick up it again.
            06/11/2008 - v0.5 - added feature that admins can buy this weapon only, added after you kill somebody you can get some ammo packs, added you can change by cvar how much frags you will gain after you kill zombie, added how much ammo packs you will lose when you kill a team mate and how much frags you will lose when kill a team mate.
            12/11/2008 - v0.7 - fixed index of bounds, and posibility that zombie sometimes still has a flamethrower, fixed that zombie can't drop flamethrower all the time, fixed friendly fire work too, so you can't kill team mate anymore, so I removed lose frags and ammo packs if kill team mate.
            22/11/2008 - v0.8 - after infection your flamethrower will be removed now and removed cstrike and fun module.
            25/02/2009 - v0.8.5 - removed admin commands, removed toggle cvar, removed buyzone and buy time too, removed unnecessary concmd, fixed zombies drop flamethrower after being infected.
            29/08/2009 - v0.8.6 -
                        - Fixed : flamethrower model sometimes didn't disappeared after infection, extra 
                        ammo packs and frags didn't get after each kill.
                        - Changed : removed lots of stuff, removed some events, removed buying via chat, 
                        removed cvar for admins only, purpose for weapon.
                        - Added : cvar for fuel (buy value), cvar for dropped flamethrowers which can be saved in that place in new round, back cstrike module, hamsandwich module.
            26/12/2009 - v0.8.6 - Updated @ web (To remind myself)
*/

#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <engine>
#include <csx>
#include <xs>
#include <zombieplague>

#define PLUGIN "[TARGETBR] Lanca-Chamas + FUEL TANK"
#define VERSION "0.8.6"
#define AUTHOR "Fry!"

const OFFSET_LINUX 5
const OFFSET_CSTEAMS 114
const OFFSET_CSDEATHS 444

const PEV_ADDITIONAL_AMMO pev_iuser1

const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
const 
SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
//const ALLOWED_WEAPONS_BITSUM = (1<<CSW_KNIFE)|(1<<CSW_HEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_C4)

new const flamethrower_sound[] = "zombie_plague/flamethrower.wav"
new const ammopickup_sound[] = "items/ammopickup2.wav"

new const zerxplode_sprite[] = "sprites/zerogxplode.spr"
new const xplodefire_sprite[] = "sprites/explode1.spr"
new const fire_sprite[] = "sprites/xfire.spr"

new const p_zombie_knife_model[] = "models/zombie_plague/v_knife_zombie.mdl"

new const v_knife_model[] = "models/v_knife.mdl"
new const p_knife_model[] = "models/p_knife.mdl"

new const v_shield_model[] = "models/shield/v_shield_knife.mdl"
new const p_shield_model[] = "models/shield/p_shield_knife.mdl"

new const w_ft_model[] = "models/zombie_plague/w_flamethrower.mdl"
new const v_ft_model[] = "models/zombie_plague/v_flamethrower.mdl"
new const p_ft_model[] = "models/zombie_plague/p_flamethrower.mdl"

new g_item_name[] = "Lanca-Chamas"
new g_msgScoreInfo
new wpn_ftsprite_firesprite_burnsprite_xplo
new g_itemid_ftg_ft_damageg_ft_xplode_dmgg_ft_costg_ft_fuelcostg_ft_fueltank
g_ft_fuelvalueg_ft_damage_disg_ft_splash_disg_ft_extra_ammo_packsg_ft_extra_fragsg_ft_remove
new g_FuelTank[33], g_Activated[33], g_hasFlamethrower[33], g_FireFlamethrower[33], g_BuyFuel[33]
new 
Float:g_Delay[33]

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_cvar("zp_extra_flamethrower"VERSION,FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_UNLOGGED|FCVAR_SPONLY)
    
    
g_ft_cost register_cvar("zp_ft_cost""57")
    
g_ft_fuelcost register_cvar("zp_ft_fuelcost""10")
    
g_ft_fueltank register_cvar("zp_ft_fueltank""100")
    
g_ft_fuelvalue register_cvar("zp_ft_fuelvalue""1")
    
g_ft_damage register_cvar("zp_ft_damage""10")
    
g_ft_xplode_dmg register_cvar("zp_ft_xplode_dmg""30")
    
g_ft_damage_dis register_cvar("zp_ft_damage_dis""34")
    
g_ft_splash_dis register_cvar("zp_ft_splash_dis""45")
    
g_ft_extra_ammo_packs register_cvar("zp_ft_ammo_after_kill""0")
    
g_ft_extra_frags register_cvar("zp_ft_frags_after_kill""1")
    
g_ft_remove register_cvar("zp_ft_removed_on_new_round""1")
    
    
g_itemid_ft zp_register_extra_item(g_item_nameget_pcvar_num(g_ft_cost), ZP_TEAM_HUMAN ZP_TEAM_SURVIVOR)

    
g_msgScoreInfo get_user_msgid("ScoreInfo")
    
    
register_event("DeathMsg""DeathMsg""a")
    
register_event("CurWeapon""CurWeapon""be""1=1")
    
register_event("TextMsg""WeaponDrop""be""2=#Weapon_Cannot_Be_Dropped")
    
    
register_forward(FM_CmdStart"fw_CmdStart")
    
register_forward(FM_PlayerPostThink"fw_PlayerPostThink")
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
    
    
RegisterHam(Ham_Spawn"player""fw_PlayerSpawn_Post"1)
    
RegisterHam(Ham_Touch"weaponbox""fw_TouchWeapon")
    
    
register_think("flamethrower""think_Flamethrower")
    
register_touch("flamethrower""player""touch_Flamethrower")
    
    
wpn_ft custom_weapon_add("weapon_flamethrower"0"flamethrower")
}

public 
plugin_precache()
{
    
engfunc(EngFunc_PrecacheSoundflamethrower_sound)
    
engfunc(EngFunc_PrecacheSoundammopickup_sound)
    
    
sprite_xplo engfunc(EngFunc_PrecacheModelzerxplode_sprite)
    
sprite_fire engfunc(EngFunc_PrecacheModelxplodefire_sprite)
    
sprite_burn engfunc(EngFunc_PrecacheModelfire_sprite)
    
    
engfunc(EngFunc_PrecacheModelp_zombie_knife_model)
    
engfunc(EngFunc_PrecacheModelv_knife_model)
    
engfunc(EngFunc_PrecacheModelp_knife_model)
    
engfunc(EngFunc_PrecacheModelv_shield_model)
    
engfunc(EngFunc_PrecacheModelp_shield_model)
    
engfunc(EngFunc_PrecacheModelw_ft_model)
    
engfunc(EngFunc_PrecacheModelv_ft_model)
    
engfunc(EngFunc_PrecacheModelp_ft_model)
}

public 
zp_extra_item_selected(iditemid)
{
    if (
itemid == g_itemid_ft)
    {
        if (
g_hasFlamethrower[id])
        {
            
zp_set_user_ammo_packs(idzp_get_user_ammo_packs(id) + get_pcvar_num(g_ft_cost))
            
client_print(idprint_center"[ZP] Voce acabou de comprar Lanca-Chamas")
            
            return 
PLUGIN_HANDLED
        
}
        
        else
        {
            
fm_strip_user_weapons(id)
            
fm_give_item(id"weapon_knife")
            
            
g_hasFlamethrower[id] = 1
            g_FuelTank
[id] = get_pcvar_num(g_ft_fueltank)
        
            new 
temp[2], weaponID get_user_weapon(idtemp[0], temp[1])
        
            if (
weaponID == CSW_KNIFE
            {
                
g_Activated[id] = true
                set_flamethrower_model
(id)
            }
        
            
emit_sound(idCHAN_ITEMammopickup_soundVOL_NORMATTN_NORM0PITCH_NORM)
        }
    }
    
    return 
PLUGIN_HANDLED
}

public 
zp_user_infect_attempt(idinfectornemesis)
{
    if (!
g_Activated[id])
        return 
PLUGIN_CONTINUE
    
    
if (!zp_get_user_zombie(id))
    {
        if (
g_hasFlamethrower[id])
        {
            if (
WeaponDrop(id))
                
set_zknife_model(id)
        }
    }

    return 
PLUGIN_CONTINUE
}

public 
fw_PlayerSpawn_Post(id)
{
    if (!
is_user_alive(id))
        return 
HAM_IGNORED
    
    
if (get_pcvar_num(g_ft_remove) == 1)
    {
        new 
ft = -1
    
        
while ((ft engfunc(EngFunc_FindEntityByStringft"classname""flamethrower")) != 0)
        {
            
engfunc(EngFunc_RemoveEntityft)
        }
    }
    
    return 
HAM_IGNORED
}

public 
DeathMsg() 

    new 
id read_data(2)
    
    if (
g_hasFlamethrower[id])
    {
        
WeaponDrop(id)
    }
}

public 
WeaponDrop(id)
{
    if (!
is_user_alive(id) || !g_Activated[id])
        return 
PLUGIN_CONTINUE
    
    g_hasFlamethrower
[id] = 0
    drop_flamethrower
(id)
    
    return 
PLUGIN_HANDLED
}

public 
CurWeapon(id)
{
    if (!
is_user_alive(id) || !g_hasFlamethrower[id]) 
        return 
PLUGIN_CONTINUE
    
    
new WeaponID read_data(2)
    switch (
WeaponID
    {
        case 
CSW_KNIFE:
        {
            
set_task(0.3"task_ActivateFlamethrower"id)
            
set_flamethrower_model(id)
            
set_pev(idpev_weaponanim9)
        }
        default: 
g_Activated[id] = 0
    
}
    
    return 
PLUGIN_CONTINUE
}

public 
task_ActivateFlamethrower(id
{
    if (!
is_user_alive(id))
        return 
PLUGIN_CONTINUE
    
    
new temp[2], weaponID get_user_weapon(idtemp[0], temp[1])
    
    if (
weaponID == CSW_KNIFE
        
g_Activated[id] = 1
        
    
return PLUGIN_CONTINUE
}

public 
fw_TouchWeapon(weaponid)
{
    if (!
pev_valid(weapon) || !is_user_alive(id) || zp_get_user_zombie(id))
        return 
HAM_IGNORED
        
    
if (g_hasFlamethrower[id] || has_shield(id))
        return 
HAM_SUPERCEDE
        
    
static plrClipplrAmmoplrWeapon
    plrWeapon 
get_user_weapon(idplrClipplrAmmo)

    if ((
1<<plrWeapon) == PRIMARY_WEAPONS_BIT_SUM || g_hasFlamethrower[id])
        return 
HAM_SUPERCEDE
    
    
return HAM_IGNORED
}
    
public 
touch_Flamethrower(entid)
{
    new 
owner pev(entpev_owner)
    
    if (
pev_valid(owner) || !is_user_alive(id) || zp_get_user_zombie(id))
        return 
PLUGIN_CONTINUE
    
    g_hasFlamethrower
[id] = true
    g_FuelTank
[id] = pev(entpev_iuser4)
    
show_fuel_percentage(id)
    
emit_sound(idCHAN_ITEMammopickup_soundVOL_NORMATTN_NORM0PITCH_NORM)
    
    new 
temp[2], weaponID get_user_weapon(idtemp[0], temp[1])
    
    if (
weaponID == CSW_KNIFE)
    {
        
g_Activated[id] = true
        set_flamethrower_model
(id)
        
set_pev(idpev_weaponanim9)
    }
        
    if ((
1<<weaponID) == PRIMARY_WEAPONS_BIT_SUM || g_hasFlamethrower[id])
    {
        if (
weaponID != CSW_KNIFE)
        {
            if (
drop_flamethrower(id))
            {
                
pev_valid(ent)
                
engfunc(EngFunc_RemoveEntityent)
            }
        }
    }
    
    
engfunc(EngFunc_RemoveEntityent)
    
    return 
PLUGIN_CONTINUE
}

public 
fw_UpdateClientData_Post(idsendweaponscd_handle
{
    if (!
g_hasFlamethrower[id] || !g_Activated[id])
        return 
FMRES_IGNORED
        
    set_cd
(cd_handleCD_ID0)
    return 
FMRES_HANDLED
}

public 
fw_CmdStart(iduc_handleseed
{
    if (!
g_hasFlamethrower[id] || !g_Activated[id])
        return 
FMRES_IGNORED
    
    
new buttons get_uc(uc_handleUC_Buttons)
    if (
buttons IN_ATTACK)
    {
        
g_FireFlamethrower[id] = 1
    
        buttons 
&= ~IN_ATTACK
        set_uc
(uc_handleUC_Buttonsbuttons)
    } 
    
    else 
        
g_FireFlamethrower[id] = 0
        
    
if (buttons IN_ATTACK2
    {
        
g_BuyFuel[id] = 1
        
        buttons 
&= ~IN_ATTACK2
        set_uc
(uc_handleUC_Buttonsbuttons)
    } 
    
    else 
        
g_BuyFuel[id] = 0
        
    
return FMRES_HANDLED
}

public 
fw_PlayerPostThink(id)
{
    if (!
is_user_alive(id) || zp_get_user_zombie(id))
        return 
FMRES_IGNORED
            
    
if (!g_hasFlamethrower[id] || !g_Activated[id])
        return 
FMRES_IGNORED
    
    
if (pev(idpev_waterlevel) > 1)
        return 
FMRES_IGNORED

    
if (has_shield(id))
    {
        
WeaponDrop(id)
        return 
FMRES_IGNORED
    
}
        
    if (
g_BuyFuel[id])
    {
        if ((
g_Delay[id] + 0.2) < get_gametime())
        {
            
buy_fuel(id)
            
g_Delay[id] = get_gametime()
        }
    }
    
    if (
g_FireFlamethrower[id])
    {
        if (
g_FuelTank[id] > 0)
        {
            if ((
g_Delay[id] + 0.2) < get_gametime())
            {
                
g_FuelTank[id] -= 1
                g_Delay
[id] = get_gametime()
            }
            
            new 
Float:fOrigin[3], Float:fVelocity[3]
            
entity_get_vector(id,EV_VEC_originfOrigin)
            
VelocityByAim(id35fVelocity)
        
            new 
Float:fTemp[3], iFireOrigin[3]
            
xs_vec_add(fOriginfVelocityfTemp)
            
FVecIVec(fTempiFireOrigin)
            
            new 
Float:fFireVelocity[3], iFireVelocity[3]
            
VelocityByAim(idget_pcvar_num(g_ft_damage_dis), fFireVelocity)
            
FVecIVec(fFireVelocityiFireVelocity)
            
            
flame_stuff(idiFireOriginiFireVelocity)
            
            new 
doDamage
            
switch (get_cvar_num("mp_friendlyfire"))
            {
                case 
0doDamage 0
                
case 1doDamage 0
            
}
            
            
show_fuel_percentage(id)
            
direct_damage(iddoDamage)
            
indirect_damage(iddoDamage)
            
custom_weapon_shot(wpn_ftid)
        } 
        
        else
            
client_print(idprint_center"Esta acabando o Combustivel!")
    }
    
    return 
FMRES_IGNORED
}

public 
think_Flamethrower(ent)
{
    if (
is_valid_ent(ent) && entity_get_float(entEV_FL_health) < 950.0
    {
        new 
Float:fOrigin[3], iOrigin[3]
        
entity_get_vector(entEV_VEC_originfOrigin)
        
FVecIVec(fOriginiOrigin)
    
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(99)
        
write_short(ent)
        
message_end()
    
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(3)
        
write_coord(iOrigin[0])
        
write_coord(iOrigin[1])
        
write_coord(iOrigin[2])
        
write_short(sprite_xplo)
        
write_byte(50)
        
write_byte(15)
        
write_byte(0)
        
message_end()
        
        
RadiusDamage(fOriginget_pcvar_num(g_ft_xplode_dmg), entity_get_int(entEV_INT_iuser4))
        
remove_entity(ent)
    }
    
    if (
is_valid_ent(ent)) 
        
entity_set_float(entEV_FL_nextthinkhalflife_time() + 0.01)
}

public 
flame_stuff(idorigin[3], velocity[3])
{
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(120)
    
write_coord(origin[0])
    
write_coord(origin[1])
    
write_coord(origin[2])
    
write_coord(velocity[0])
    
write_coord(velocity[1])
    
write_coord(velocity[2] + 5)
    
write_short(sprite_fire)
    
write_byte(1)
    
write_byte(10)
    
write_byte(1)
    
write_byte(5)
    
message_end()
    
    
emit_sound(idCHAN_WEAPONflamethrower_soundVOL_NORMATTN_NORM0PITCH_NORM)
}

public 
direct_damage(iddoDamage)
{
    new 
entbody
    get_user_aiming
(identbodyget_pcvar_num(g_ft_damage_dis) + 500)
    
    if (
ent && is_user_alive(ent))
    {
        if (!
doDamage)
        {
            if (
zp_get_user_zombie(id) != zp_get_user_zombie(ent)) 
            {
                
damage_user(identget_pcvar_num(g_ft_damage))
                
custom_weapon_dmg(wpn_ftidentget_pcvar_num(g_ft_damage))
            }
        }
        else
        {
            
damage_user(identget_pcvar_num(g_ft_damage))    
            
custom_weapon_dmg(wpn_ftidentget_pcvar_num(g_ft_damage))
        }
    }
}

public 
indirect_damage(iddoDamage)
{
    new 
Players[32], iNum
    get_players
(PlayersiNum"a")
    for (new 
0iNum; ++i) if(id != Players[i])
    {
        new 
target Players[i]
    
        new 
Float:fOrigin[3], Float:fOrigin2[3]
        
entity_get_vector(id,EV_VEC_originfOrigin)
        
entity_get_vector(targetEV_VEC_originfOrigin2)
            
        new 
temp[3], Float:fAim[3]
        
get_user_origin(idtemp3)
        
IVecFVec(tempfAim)
        
        new 
Float:fDistance get_pcvar_num(g_ft_damage_dis) + 500.0
        
if (get_distance_f(fOriginfOrigin2) > fDistance)
            continue 
        
        new 
iDistance get_distance_to_line(fOriginfOrigin2fAim)
        if (
iDistance get_pcvar_num(g_ft_splash_dis) || iDistance || !fm_is_ent_visible(idtarget))
            continue 
            
        if (!
doDamage)
        {
            if (
zp_get_user_zombie(id) != zp_get_user_zombie(target))
            {
                
damage_user(idtargetget_pcvar_num(g_ft_damage))
                
custom_weapon_dmg(wpn_ftidtargetget_pcvar_num(g_ft_damage))
            }
        }
        else 
        {
            
damage_user(idtargetget_pcvar_num(g_ft_damage) / 2)
            
custom_weapon_dmg(wpn_ftidtargetget_pcvar_num(g_ft_damage) / 2)
        }
    }
}

public 
buy_fuel(id)
{
    if (
g_FuelTank[id] >= get_pcvar_num(g_ft_fueltank))
        return 
PLUGIN_CONTINUE
                
    
new user_packs zp_get_user_ammo_packs(id)
    new 
cost_packs get_pcvar_num(g_ft_fuelcost)
    if (
user_packs >= cost_packs)
    {
        
g_FuelTank[id] += get_pcvar_num(g_ft_fuelvalue)
        
show_fuel_percentage(id)
        
zp_set_user_ammo_packs(iduser_packs cost_packs)

        return 
PLUGIN_CONTINUE
    
}
    
    return 
PLUGIN_CONTINUE
}

public 
drop_flamethrower(id)
{
    new 
Float:fVelocity[3], Float:fOrigin[3]
    
entity_get_vector(idEV_VEC_originfOrigin)
    
VelocityByAim(id34fVelocity)
    
    
fOrigin[0] += fVelocity[0]
    
fOrigin[1] += fVelocity[1]

    
VelocityByAim(id300fVelocity)
    
    new 
ent create_entity("info_target")
    if(
is_valid_ent(ent))
    {
        
entity_set_string(entEV_SZ_classname"flamethrower")
        
entity_set_model(entw_ft_model)
        
entity_set_int(entEV_INT_movetypeMOVETYPE_TOSS)
        
entity_set_int(entEV_INT_solidSOLID_TRIGGER)
        
entity_set_vector(entEV_VEC_originfOrigin)
        
entity_set_vector(entEV_VEC_velocityfVelocity)
        
entity_set_int(entEV_INT_iuser4g_FuelTank[id])
        
entity_set_float(entEV_FL_takedamage1.0)
        
entity_set_float(entEV_FL_health1000.0)
        
entity_set_size(entFloat:{-2.5, -2.5, -1.5}, Float:{2.52.51.5})
        
entity_set_float(entEV_FL_nextthinkhalflife_time() + 0.01)
    }
    
    
g_FuelTank[id] = 0
    g_Activated
[id] = 0
    g_hasFlamethrower
[id] = 0
    
    
if (has_shield(id))
        
set_shield_model(id)
    else 
        
set_knife_model(id)
        
    return 
PLUGIN_CONTINUE
}

public 
show_fuel_percentage(id)
{
    
set_hudmessage(16542420.910.952_1.0__4)
    
show_hudmessage(id"[Combustivel: %d%%]"get_percent(g_FuelTank[id], get_pcvar_num(g_ft_fueltank)))
}

public 
set_flamethrower_model(id)
{
    
set_pev(idpev_viewmodel2v_ft_model)
    
set_pev(idpev_weaponmodel2p_ft_model)
}

public 
set_zknife_model(id)
{
    
set_pev(idpev_weaponmodel2p_zombie_knife_model)
}

public 
set_knife_model(id)
{
    
set_pev(idpev_viewmodel2v_knife_model)
    
set_pev(idpev_weaponmodel2p_knife_model)    
}

public 
set_shield_model(id)
{
    
set_pev(idpev_weaponmodel2v_shield_model)
    
set_pev(idpev_weaponmodel2p_shield_model)
}

stock damage_user(idvictimdamage)
{
    new 
iHealth get_user_health(victim)
    if (
iHealth damage
        
fakedamage(victim"weapon_flamethrower"float(damage), DMG_BURN)
    else
    {
        
user_silentkill(victim)
        
make_deathmsg(idvictim0"flamethrower")
        
        new 
iOrigin[3]
        
get_user_origin(victimiOrigin0)
        
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(17)
        
write_coord(iOrigin[0])
        
write_coord(iOrigin[1])
        
write_coord(iOrigin[2] + 10)
        
write_short(sprite_burn)
        
write_byte(30)
        
write_byte(40)
        
message_end()
            
        if (
fm_cs_get_user_team(id) != fm_cs_get_user_team(victim))
        {
            
fm_set_user_frags(idget_user_frags(id) + get_pcvar_num(g_ft_extra_frags))
            
zp_set_user_ammo_packs(idzp_get_user_ammo_packs(id) + get_pcvar_num(g_ft_extra_ammo_packs))
        }
        
        
message_begin(MSG_ALLg_msgScoreInfo
        
write_byte(id
        
write_short(get_user_frags(id)) 
        
write_short(get_user_deaths(id)) 
        
write_short(0
        
write_short(get_user_team(id)) 
        
message_end() 
        
        
message_begin(MSG_ALLg_msgScoreInfo
        
write_byte(victim
        
write_short(get_user_frags(victim))
        
write_short(get_user_deaths(victim))
        
write_short(0)
        
write_short(get_user_team(victim))
        
message_end()
    }
}

stock get_percent(valuetvalue)       
    return 
floatround(floatmul(float(value) / float(tvalue) , 100.0))  

stock get_distance_to_line(Float:pos_start[3], Float:pos_end[3], Float:pos_object[3])  
{  
    new 
Float:vec_start_end[3], Float:vec_start_object[3], Float:vec_end_object[3], Float:vec_end_start[3]
    
xs_vec_sub(pos_endpos_startvec_start_end)         // vector from start to end 
    
xs_vec_sub(pos_objectpos_startvec_start_object)     // vector from end to object 
    
xs_vec_sub(pos_startpos_endvec_end_start)         // vector from end to start 
    
xs_vec_sub(pos_endpos_objectvec_end_object)         // vector object to end 
    
    
new Float:len_start_object getVecLen(vec_start_object
    new 
Float:angle_start floatacos(xs_vec_dot(vec_start_endvec_start_object) / (getVecLen(vec_start_end) * len_start_object), degrees)  
    new 
Float:angle_end floatacos(xs_vec_dot(vec_end_startvec_end_object) / (getVecLen(vec_end_start) * getVecLen(vec_end_object)), degrees)  

    if(
angle_start <= 90.0 && angle_end <= 90.0
        return 
floatround(len_start_object floatsin(angle_startdegrees)) 
    return -
1  
}

stock Float:getVecLen(Float:Vec[3])

    new 
Float:VecNull[3] = {0.00.00.0}
    new 
Float:len get_distance_f(VecVecNull)
    return 
len
}

stock bool:fm_is_ent_visible(indexentity
{
    new 
Float:origin[3], Float:view_ofs[3], Float:eyespos[3]
    
pev(indexpev_originorigin)
    
pev(indexpev_view_ofsview_ofs)
    
xs_vec_add(originview_ofseyespos)

    new 
Float:entpos[3]
    
pev(entitypev_originentpos)
    
engfunc(EngFunc_TraceLineeyesposentpos0index)

    switch(
pev(entitypev_solid)) 
    {
        case 
SOLID_BBOX..SOLID_BSP: return global_get(glb_trace_ent) == entity
    
}
    
    new 
Float:fraction
    global_get
(glb_trace_fractionfraction)
    if(
fraction == 1.0)
        return 
true
        
    
return false
}

stock bool:has_shield(id)
{
    new 
modelName[32]
    
entity_get_string(idEV_SZ_viewmodelmodelName31)

    if (
containi(modelName"v_shield_") != -1)
        return 
true
        
    
return false
}

stock fm_cs_get_user_team(id)
{
    return 
get_pdata_int(idOFFSET_CSTEAMSOFFSET_LINUX)
}

stock fm_cs_set_user_deaths(idvalue)
{
    
set_pdata_int(idOFFSET_CSDEATHSvalueOFFSET_LINUX)
}

stock fm_set_user_frags(indexfrags
{
    
set_pev(indexpev_fragsfloat(frags))

    return 
1
}

stock fm_strip_user_weapons(index
{
    new 
ent fm_create_entity("player_weaponstrip")
    if (!
pev_valid(ent))
        return 
0

    dllfunc
(DLLFunc_Spawnent)
    
dllfunc(DLLFunc_Useentindex)
    
engfunc(EngFunc_RemoveEntityent)

    return 
1
}

stock drop_weapons(iddropwhat)
{
    static 
weapons[32], numiweaponid
    num 
0
    get_user_weapons
(idweaponsnum)
    
    for (
0numi++)
    {
        
weaponid weapons[i]
        
        if ((
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
        {
            static 
wname[32], weapon_ent
            get_weaponname
(weaponidwnamecharsmax(wname))
            
weapon_ent fm_find_ent_by_owner(-1wnameid)
            
            
set_pev(weapon_entPEV_ADDITIONAL_AMMOcs_get_user_bpammo(idweaponid))
            
            
engclient_cmd(id"drop"wname)
            
cs_set_user_bpammo(idweaponid0)
        }
    }
}

stock fm_find_ent_by_owner(index, const classname[], ownerjghgtype 0
{
    new 
strtype[11] = "classname"ent index
    
switch (jghgtype) {
        case 
1strtype "target"
        
case 2strtype "targetname"
    
}

    while ((
ent engfunc(EngFunc_FindEntityByStringentstrtypeclassname)) && pev(entpev_owner) != owner) {}

    return 
ent
}

stock fm_create_entity(const classname[])
    return 
engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocStringclassname))

stock fm_give_item(index, const item[]) 
{
    if (!
equal(item"weapon_"7) && !equal(item"ammo_"5) && !equal(item"item_"5) && !equal(item"tf_weapon_"10))
        return 
0

    
new ent fm_create_entity(item)
    if (!
pev_valid(ent))
        return 
0

    
new Float:origin[3]
    
pev(indexpev_originorigin)
    
set_pev(entpev_originorigin)
    
set_pev(entpev_spawnflagspev(entpev_spawnflags) | SF_NORESPAWN)
    
dllfunc(DLLFunc_Spawnent)

    new 
save pev(entpev_solid)
    
dllfunc(DLLFunc_Touchentindex)
    if (
pev(entpev_solid) != save)
        return 
ent

    engfunc
(EngFunc_RemoveEntityent)

    return -
1
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/ 
* I was already forgetting the extra item flamethrower round after finishing the item is not taken from the players.

* .inc is to download
Attached Files
File Type: inc zpsp_class_licker.inc (296 Bytes, 49 views)
__________________

Last edited by GuTo; 09-28-2016 at 18:49.
GuTo is offline
Send a message via Skype™ to GuTo
Reply



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 02:44.


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