AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   DropWeaponSlot (https://forums.alliedmods.net/showthread.php?t=317265)

LearninG 07-05-2019 11:19

DropWeaponSlot
 
PHP Code:

#include <amxmodx>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <fun>
#include <hamsandwich>
#include <xs>
#include <zombieplague>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"


public plugin_init() {

    
register_clcmd("say test" "test")
    
// Add your code here...
}

public 
test (id)
{
    
DropWeaponSlot id1);
}

stock DropWeaponSlotiPlayeriSlot 

    new 
iWeaponEntity GetWeaponFromSlotiPlayeriSlot ); 
    if( 
iWeaponEntity 
    { 
        new 
iWeaponID get_pdata_cbaseiWeaponEntitym_iId); 
         
        new 
szWeaponName32 ]; 
        
get_weaponnameiWeaponIDszWeaponNamecharsmaxszWeaponName ) ); 
         
        
engclient_cmdiPlayer"drop"szWeaponName ); 
    } 


stock GetWeaponFromSlotiPlayeriSlot 

    return ( 
<= iSlot <= ) ? get_pdata_cbaseiPlayerm_rpgPlayerItems_Slot0 iSlot) : -1


This is a test plugin but it has some errors i want to know what cause this errors ?

Compiler:
(32)undefined symbol "m_iId"
(43)undefined symbol "m_rpgPlayerItems_Slot0"

thEsp 07-05-2019 11:38

Re: DropWeaponSlot
 
Code:

#define m_rpgPlayerItems_Slot0 367
#define m_iId 43


LearninG 07-05-2019 13:19

Re: DropWeaponSlot
 
Quote:

Originally Posted by thEsp (Post 2657886)
Code:

#define m_rpgPlayerItems_Slot0 367
#define m_iId 43


Thanks for reply but , after i added this to plugin when i buy the "Magical Bow" from extra items server crashes!!

Plugin Code:
PHP Code:

#include <amxmodx>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <fun>
#include <hamsandwich>
#include <xs>
#include <zombieplague>

#if AMXX_VERSION_NUM < 183
#include <colorchat>
#define Red print_team_red
#define Blue print_team_blue
#define Grey print_team_grey
#define DontChange print_team_default
#endif




// Weapon/Arrow models
new const P_MODEL[] = "models/bow/p_Shina_by_Oxigen.mdl"
new const V_MODEL[] = "models/bow/v_Shina_by_Oxigen.mdl"
new const W_MODEL[] = "models/bow/w_Shina_by_Oxigen.mdl"
new const ARROW_MODEL[] = "models/bow/arrow.mdl"

#define BURN_CLASSNAME "flame"
#define BURN_MODEL "sprites/bow/flame_burn01.spr"
#define POISON_MODEL "sprites/bow/poison.spr"

#define m_rpgPlayerItems_Slot0 367 
#define m_iId 43

// Settings
#define SWITCH_TIME    0.5

#define BASE_SPEED 400
#define BONUS_SPEED 500

#define BURN_LIFE 10.0
#define BURN_PERIOD 2.0
#define BURN_DAMAGE 50.0


#define NORMAL_DMG 100.0

#define SPEED_LOW_ICE 0.5
#define SLOW_ICE_TIME 7.0

#define EXPLODE_DAMAGE 500
#define EXPLODE_HITRADIUS 400

// Base number of arrows
#define NORMAL_AMMO 20
#define FIRE_AMMO 15
#define ICE_AMMO 10
#define EXPLODE_AMMO 3

//Number of extra arrows
#define NORMAL_AMMO_BUY 5
#define FIRE_AMMO_BUY 4
#define ICE_AMMO_BUY 3
#define EXPLODE_AMMO_BUY 1

// Cost of extra arrows
#define AMMO_COST 10
#define NEXT_SHOT_TIME 0.97

// Fire sound
new const ARROW_SHOOT[] =
{
    
"crossbow_shoot1.wav"
}

new 
g_exp_sprid

new Float:g_start_time[33], Float:g_finish_time[33]

new 
Float:g_Burn[33], Float:g_Poisoned[33]
new 
g_slowed[33], g_pressed[33], Float:g_old_speed[33]

// Ammo 
new g_ammo[33], g_normal_ammo[33], g_fire_ammo[33], g_ice_ammo[33],  g_explode_ammo[33]

// Player variables
new g_HasBow[33// whether player has bow
new bool:draw_wpn[33
new 
Float:lastSwitchTime[33]

new 
g_bow_mode[33], g_dmg_mode[33]

new 
g_MaxPlayers

// Render effects debug
new g_FrozenRenderingFx[33]
new 
Float:g_FrozenRenderingColor[33][3]
new 
g_FrozenRenderingRender[33]
new 
Float:g_FrozenRenderingAmount[33]

// Message ID's
new g_MsgDamageg_msgBarTime

enum 
{
    
anim_idle,
    
anim_shot1,
    
anim_shot2,
    
anim_reload,
    
anim_draw
}

enum
{
    
NORMAL_MODE 1,
    
FIRE_MODE 4,
    
ICE_MODE 3,
    
EXPLODE_MODE 2
}

enum
{
    
dmg_fire 1,
    
dmg_poison 2
}

// Plugin precache
public plugin_precache()
{
    
// Models
    
precache_model(P_MODEL)
    
precache_model(V_MODEL)
    
precache_model(W_MODEL)
    
precache_model(ARROW_MODEL)
    
precache_model(BURN_MODEL)
    
precache_model(POISON_MODEL)
    
    
// Sounds
    
precache_sound(ARROW_SHOOT)
    
//precache_sound(GRENADE_DRAW)
    
precache_sound("weapons/357_cock1.wav")

    
g_exp_sprid engfunc(EngFunc_PrecacheModel"sprites/zerogxplode.spr")
}

// ITEM
new g_itemid


// Plugin init
public plugin_init()
{
    
// Register plugin
    
register_plugin("PLUGIN""VERSION""AUTHOR")
    
    
// Events
    
register_event("CurWeapon""Event_CurrentWeapon""be""1=1")
    
register_event("HLTV""Event_NewRound""a""1=0""2=0");
    
    
// Forwards
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_scout""fw_bow_PrimaryAttack")
    
RegisterHam(Ham_Weapon_SecondaryAttack"weapon_scout""fw_bow_SecondaryAttack")
    
RegisterHam(Ham_Weapon_Reload"weapon_scout""fw_bow_Reload")
    
RegisterHam(Ham_Item_Deploy"weapon_scout""fw_bow_Deploy_Post"1)
    
register_think(BURN_CLASSNAME"BurnThink")
    
register_forward(FM_CmdStart"fw_CmdStart")
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
    
register_forward(FM_Touch"fw_touch")
    
register_clcmd("drop","dropcmd")

    
// Messages
    
g_MsgDamage get_user_msgid("Damage")
    
g_msgBarTime get_user_msgid("BarTime")

    
g_itemid zp_register_extra_item("Magical Bow",6ZP_TEAM_HUMAN)

    
g_MaxPlayers get_maxplayers()
}

public 
zp_extra_item_selected(playeritemid)
{
    if (
itemid == g_itemid || is_user_alive(player))
    {
        
give_bow(player)
    }
    return 
PLUGIN_CONTINUE
}

public 
Event_NewRound()
{
    for (new 
0get_maxplayers(); i++)
        {
        
set_user_rendering(ikRenderFxGlowShell000kRenderNormal25)
        
g_Poisoned[i]=0.0    
        g_Burn
[i]=0.0    
        g_slowed
[i] = false
    
}
}

public 
dropcmd(id) {
            if(
g_HasBow[id] && get_user_weapon(id) == CSW_SCOUT) {
        new 
Float:Aim[3],Float:origin[3]
        
VelocityByAim(id64Aim)
        
entity_get_vector(id,EV_VEC_origin,origin)
        
        
origin[0] += Aim[0]
        
origin[1] += Aim[1]
        
        new 
bow create_entity("info_target")
        
entity_set_string(bow,EV_SZ_classname,"bow")
        
entity_set_model(bow,W_MODEL)    
        
        
entity_set_size(bow,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0})
        
entity_set_int(bow,EV_INT_solid,1)
        
        
entity_set_int(bow,EV_INT_movetype,6)
        
entity_set_vector(bow,EV_VEC_origin,origin)
        
g_HasBow[id] = false
        remowegun
(id)
        return 
PLUGIN_HANDLED
    

            return 
PLUGIN_CONTINUE
}

// remove gun  and save all guns
public remowegun(id) { 
    new 
wpnList[32
    new 
number
    get_user_weapons
(id,wpnList,number
    for (new 
0;number ;i++) { 
        if (
wpnList[i] == CSW_SCOUT) {
            
fm_strip_user_gun(idwpnList[i])
        }
    }


public 
buy_ammo(id)
{
    if(!
g_HasBow[id])
    {
        return 
PLUGIN_CONTINUE
    
}

    if(
is_user_alive(id))
    {
        
give_ammo(id)
        return 
PLUGIN_HANDLED
    
}

    if(
zp_get_user_ammo_packs(id) <= AMMO_COST)
    {
        
        return 
PLUGIN_CONTINUE
    
}
    

    
give_ammo(id)

    return 
PLUGIN_HANDLED
}

public 
give_ammo(id)
{
    if(
g_normal_ammo[id] == NORMAL_AMMO && g_fire_ammo[id] == FIRE_AMMO && g_ice_ammo[id] == ICE_AMMO  && g_explode_ammo[id] == EXPLODE_AMMO)
    {
        return 
PLUGIN_CONTINUE
    
}

    
zp_set_user_ammo_packs(idzp_get_user_ammo_packs(id) - AMMO_COST)

    
g_normal_ammo[id] += NORMAL_AMMO_BUY
    g_fire_ammo
[id] += FIRE_AMMO_BUY
    g_ice_ammo
[id] += ICE_AMMO_BUY
    g_explode_ammo
[id] += EXPLODE_AMMO_BUY

    
if(g_normal_ammo[id] > NORMAL_AMMOg_normal_ammo[id] = NORMAL_AMMO
    
if(g_fire_ammo[id] > FIRE_AMMOg_fire_ammo[id] = FIRE_AMMO
    
if(g_ice_ammo[id] > ICE_AMMOg_ice_ammo[id] = ICE_AMMO
    
if(g_explode_ammo[id] > EXPLODE_AMMOg_explode_ammo[id] = EXPLODE_AMMO

     update_ammo
(id)

    return 
PLUGIN_CONTINUE
}

//play anim
public playanim(player,anim)
{
    
set_pev(playerpev_weaponanimanim)
    
message_begin(MSG_ONESVC_WEAPONANIM, {000}, player)
    
write_byte(anim)
    
write_byte(pev(playerpev_body))
    
message_end()
}


// Client connected
public client_connect(id)
{
    
// Reset all
    
g_HasBow[id] = false
    g_finish_time
[id] = 0.0
}

// Current weapon player is holding
public Event_CurrentWeapon(id)
{
    if (
is_user_bot(id))
        return

    if(!
is_user_connected(id))
        return
    
    
// Read weapon ID
    
new weaponID read_data(2)
    
    if (
weaponID == CSW_SCOUT)
    {
        if (
g_HasBow[id])
        {
            if(!
draw_wpn[id])
            {
                
playanim(idanim_draw)
                
update_ammo(id)
                
//emit_sound(id, CHAN_WEAPON, GRENADE_DRAW, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
                // View model
                
entity_set_string(idEV_SZ_viewmodelV_MODEL)
                
                
// Player model
                
entity_set_string(idEV_SZ_weaponmodelP_MODEL)
                
draw_wpn[id] = true
            
}
        }
        else
        {
            
// View model
            
entity_set_string(idEV_SZ_viewmodel"models/v_scout.mdl")
            
            
// Player model
            
entity_set_string(idEV_SZ_weaponmodel"models/p_scout.mdl")
        }
    } 
    else 
    {
        
draw_wpn[id] = false
    
}
}

public 
remove_bow() {
    new 
nextitem find_ent_by_class(-1"bow")
    while ((
nextitem find_ent_by_class(-1"bow")) != 0) {
        
remove_entity(nextitem)
    }
    return 
PLUGIN_CONTINUE
}        

// Player killed
public fw_PlayerKilled(victimattackershouldgib)
{
    if (
g_HasBow[victim])        
    {
        
// Reset all
        
g_HasBow[victim] = false
        set_user_rendering
(victimkRenderFxGlowShell000kRenderNormal25)

        
// Remove screen's bar
        
message_begin(MSG_ONEg_msgBarTime_victim)
        
write_byte(0// time
        
write_byte(0// unknown
        
message_end()
        
        
remowegun(victim)
    }
}

public 
give_bow(id)
{
    
give_weapon(id)
    
g_bow_mode[id] = NORMAL_MODE

    g_normal_ammo
[id] = NORMAL_AMMO
    g_fire_ammo
[id] = FIRE_AMMO
    g_ice_ammo
[id] = ICE_AMMO
    g_explode_ammo
[id] = EXPLODE_AMMO
}

//give weapon
public give_weapon(id){
    
g_HasBow[id] = true
    DropWeaponSlot
(id1)
    
give_item(id"weapon_scout")
    
update_ammo(id)
}

public 
fw_bow_PrimaryAttack(Weapon)
{
    new 
Player get_pdata_cbase(Weapon414)
    
    if (
g_HasBow[Player])
    return 
HAM_SUPERCEDE

    
return HAM_IGNORED
}

public 
fw_bow_SecondaryAttack(Weapon)
{
    new 
Player get_pdata_cbase(Weapon414)
    
    if (
g_HasBow[Player])
    return 
HAM_SUPERCEDE

    
return HAM_IGNORED
}

public 
fw_bow_Reload(Weapon
{
         new 
Player get_pdata_cbase(Weapon414)
    
    if (
g_HasBow[Player])
    return 
HAM_SUPERCEDE

    
return HAM_IGNORED
}

public 
fw_bow_Deploy_Post(Weapon)
{
    new 
Player get_pdata_cbase(Weapon414)
    
    
update_ammo(Player)
}

// Command start
public fw_CmdStart(idUC_HandleSeed
{
    if(!
g_HasBow[id] || !is_user_alive(id))
        return 
FMRES_IGNORED

    
static CurButtonOldButton
    
    CurButton 
get_uc(UC_HandleUC_Buttons)
    
OldButton = (pev(idpev_oldbuttons) & IN_ATTACK)
    
    if(
get_gametime() - g_finish_time[id] > NEXT_SHOT_TIME)
    {
        
// Attack1 button pressed
        
if(CurButton IN_ATTACK && !OldButton)
        {
            if(
get_user_weapon(id) != CSW_SCOUT)
                return 
FMRES_IGNORED

            
if((g_bow_mode[id] == NORMAL_MODE && g_normal_ammo[id] <= 0) || (g_bow_mode[id] == FIRE_MODE && g_fire_ammo[id] <= 0) || (g_bow_mode[id] == ICE_MODE && g_ice_ammo[id] <= 0) || (g_bow_mode[id] == EXPLODE_MODE && g_explode_ammo[id] <= 0))
                return 
FMRES_IGNORED

            g_start_time
[id] = get_gametime()

            
// A bar appears in his screen
            
message_begin(MSG_ONE_UNRELIABLEg_msgBarTime_id)
            
write_byte(3// time
            
write_byte(0// unknown
            
message_end()

            
g_pressed[id] = true
        
}

        if(
CurButton IN_ATTACK && OldButton)
        {
            if((
g_bow_mode[id] == NORMAL_MODE && g_normal_ammo[id] <= 0) || (g_bow_mode[id] == FIRE_MODE && g_fire_ammo[id] <= 0) || (g_bow_mode[id] == ICE_MODE && g_ice_ammo[id] <= 0) || (g_bow_mode[id] == EXPLODE_MODE && g_explode_ammo[id] <= 0))
                return 
FMRES_IGNORED

            
if(!g_pressed[id])
                return 
FMRES_IGNORED
        
            
if(get_user_weapon(id) != CSW_SCOUT)
            {
                
g_finish_time[id] = get_gametime()
        
                
FireArrow(id)

                
// Remove screen's bar
                
message_begin(MSG_ONEg_msgBarTime_id)
                
write_byte(0// time
                
write_byte(0// unknown
                
message_end()

                
g_pressed[id] = false
            
}
        }

        if(!(
CurButton IN_ATTACK) && OldButton)
        {            
            if(
get_user_weapon(id) != CSW_SCOUT)
                return 
FMRES_IGNORED

            
if((g_bow_mode[id] == NORMAL_MODE && g_normal_ammo[id] <= 0) || (g_bow_mode[id] == FIRE_MODE && g_fire_ammo[id] <= 0) || (g_bow_mode[id] == ICE_MODE && g_ice_ammo[id] <= 0) || (g_bow_mode[id] == EXPLODE_MODE && g_explode_ammo[id] <= 0))
                return 
FMRES_IGNORED

            
if(!g_pressed[id])
                return 
FMRES_IGNORED

            g_finish_time
[id] = get_gametime()
        
            
FireArrow(id)

            
// Remove screen's bar
            
message_begin(MSG_ONEg_msgBarTime_id)
            
write_byte(0// time
            
write_byte(0// unknown
            
message_end()

            
g_pressed[id] = false
        
}
    }

    if((
CurButton IN_ATTACK2) && !(pev(idpev_oldbuttons) & IN_ATTACK2))
    {        
        if(
get_user_weapon(id) != CSW_SCOUT)
            return 
FMRES_IGNORED
            
        
if ( get_gametime ( ) - lastSwitchTime id ] < SWITCH_TIME || (OldButton IN_ATTACK2)) return

        if(!
g_pressed[id])
        {
            if (
is_user_alive(id))

            switch(
g_bow_mode[id])
            {
                case 
1:
                {
                    
g_bow_mode[id]= 4
                    client_print
(id,print_center,"Fire Mode")
                    
update_ammo(id)
                    
                }
                case 
2:
                {
                    
g_bow_mode[id]= 1
                    client_print
(id,print_center,"Normal Mode")
                    
update_ammo(id)
                    
                    
                }
                case 
3:
                {
                    
g_bow_mode[id]= 2
                    client_print
(id,print_center,"Explode Mode")
                    
update_ammo(id)
                    
                }
                case 
4:
                {
                    
g_bow_mode[id]= 3
                    client_print
(id,print_center,"Ice Mode")
                    
update_ammo(id)
                }
            }
            
lastSwitchTime id ] = get_gametime ( )
        }
    }        
}

//block anim standart wpn 
public fw_UpdateClientData_Post(idsendweaponscd_handle
{    
    if (!
is_user_alive(id)) 
    return 
FMRES_IGNORED

    
// Block default sounds    
    
if (get_user_weapon(id) == CSW_SCOUT && g_HasBow[id]) 
    {
        
set_cd(cd_handleCD_flNextAttackhalflife_time() + 0.001 ); 
    }

    return 
FMRES_HANDLED
}

// Fire gremade
public FireArrow(id)
{
    
// Set animation
    
playanim(idanim_shot1)

    
// Get origin. angle and velocity
    
new velocity[33]
    new 
Float:fAngle[3], Float:fVelocity[3]
    
pev(idpev_v_anglefAngle)
    
    
// Create ent
    
new arrow create_entity("info_target")
    
    
// Not grenade
    
if (!arrow) return PLUGIN_HANDLED

    
// Classname
    
entity_set_string(arrowEV_SZ_classname"bow_arrow")
    
    
// Model
    
entity_set_model(arrowARROW_MODEL)

    if(
g_bow_mode[id] == NORMAL_MODE)
    {
        
set_rendering(arrowkRenderFxGlowShell255255255kRenderNormal50)
        
g_normal_ammo[id]--
    }
    else if(
g_bow_mode[id] == FIRE_MODE)
    {
        
set_rendering(arrowkRenderFxGlowShell25500kRenderNormal50)
        
g_fire_ammo[id]--
    }
    else if(
g_bow_mode[id] == ICE_MODE)
    {
        
set_rendering(arrowkRenderFxGlowShell00255kRenderNormal50)
        
g_ice_ammo[id]--
    }
    else if(
g_bow_mode[id] == EXPLODE_MODE)
    {
        
set_rendering(arrowkRenderFxGlowShell1501050kRenderNormal50)
        
g_explode_ammo[id]--
    }

    
update_ammo(id)

    new 
Float:vOrigin[3],Float:vUp[3]
    
pev(idpev_originvOrigin)
    
    
global_get(glb_v_upvUp)
    new 
up 17
    vOrigin
[0] = vOrigin[0] + vUp[0] * up
    vOrigin
[1] = vOrigin[1] + vUp[1] * up
    vOrigin
[2] = vOrigin[2] + vUp[2] * up
    
    
// Origin
    
entity_set_origin(arrowvOrigin)
    
    
// Angles
    
entity_set_vector(arrowEV_VEC_anglesfAngle)
    
    
// Size
    
new Float:MinBox[3] = {-1.0, -1.0, -1.0}
    new 
Float:MaxBox[3] = {1.01.01.0}
    
entity_set_vector(arrowEV_VEC_minsMinBox)
    
entity_set_vector(arrowEV_VEC_maxsMaxBox)
    
    
// Interaction
    
entity_set_int(arrowEV_INT_solidSOLID_SLIDEBOX)
    
    
// Movetype
    
entity_set_int(arrowEV_INT_movetypeMOVETYPE_TOSS)
    
    
// Owner
    
entity_set_edict(arrowEV_ENT_ownerid)
    
    
// Velocity
    
new Floatholdtime[33
    new 
Floatmnoji[33]

    
holdtime[id] = g_finish_time[id] - g_start_time[id]

    if(
holdtime[id] < 1.0holdtime[id] = 1.0
    
if(holdtime[id] > 3.0holdtime[id] = 3.0

    
    mnoji
[id] = BASE_SPEED holdtime[id] * BONUS_SPEED
    velocity
[id] = floatround(mnoji[id],floatround_round)
    
VelocityByAim(idvelocity[id], fVelocity)
    
    
entity_set_vector(arrowEV_VEC_velocityfVelocity)
    
    
// Launch sound
    
emit_sound(arrowCHAN_WEAPONARROW_SHOOTVOL_NORMATTN_NORM0PITCH_NORM)

    return 
PLUGIN_CONTINUE
}    

// We hit something!!!
public pfn_touch(ptrptd)
{
    
// If ent is valid
    
if (pev_valid(ptr))
    {    
        
// Get classnames
        
static classname[32], classnameptd[32]
        
pev(ptrpev_classnameclassname31)
        
        
// Our ent
        
if(equal(classname"bow_arrow"))
        {
            
// Get it's origin
            
new Float:Origin[3]
            
pev(ptrpev_originOrigin)

            new 
owner pev(ptrpev_owner)

            if(
g_bow_mode[owner] == EXPLODE_MODE)
            {
                
// Explosion
                
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYOrigin0)
                
write_byte(TE_EXPLOSION)
                
engfunc(EngFunc_WriteCoordOrigin[0])
                
engfunc(EngFunc_WriteCoordOrigin[1])
                
engfunc(EngFunc_WriteCoordOrigin[2])
                
write_short(g_exp_sprid)
                
write_byte(40)
                
write_byte(30)
                
write_byte(0)
                
message_end()

                
check_radius_damage(ptrowner)
            }

            if(
is_user_alive(ptd))
            {
                if(
cs_get_user_team(ptd) != cs_get_user_team(owner))
                {
                    
g_old_speed[ptd] = get_user_maxspeed(ptd)

                    if(
g_bow_mode[owner] == NORMAL_MODE)
                    {
                        
ExecuteHamB(Ham_TakeDamageptdptrownerNORMAL_DMGDMG_BULLET)
                    }
                    else if(
g_bow_mode[owner] == FIRE_MODE)
                    {
                        if (!
g_slowed[ptd] || !g_Burn[ptd] || g_slowed[ptd] || g_Burn[ptd])
                        {
                                                                
g_dmg_mode[ptd] = dmg_fire
                                 CreateBurn
(ptdowner)
                            }
                        
                    }
                    else if(
g_bow_mode[owner] == ICE_MODE)
                    {
                        if (!
g_slowed[ptd] || !g_Burn[ptd] || g_slowed[ptd] || g_Burn[ptd])
                        {

                            
g_FrozenRenderingFx[ptd] = pev(ptdpev_renderfx)
                            
pev(ptdpev_rendercolorg_FrozenRenderingColor[ptd])
                            
g_FrozenRenderingRender[ptd] = pev(ptdpev_rendermode)
                            
pev(ptdpev_renderamtg_FrozenRenderingAmount[ptd])

                            
set_user_rendering(ptdkRenderFxGlowShell0100200kRenderNormal25)
                            
set_user_maxspeed(ptdget_user_maxspeed(ptd) * SPEED_LOW_ICE)
                            
g_slowed[ptd] = true
                            set_task
(SLOW_ICE_TIME"make_speed"ptd__"a"1)
                
                            
message_begin(MSG_ONE_UNRELIABLEg_MsgDamage_ptd)
                            
write_byte(0// damage save
                            
write_byte(0// damage take
                            
write_long(DMG_DROWN// damage type - DMG_FREEZE
                            
write_coord(0// x
                            
write_coord(0// y
                            
write_coord(0// z
                            
message_end()
                        }
                    
                    }
                }
            }
            
// We hit breakable
            
if(pev_valid(ptd))
            {
                
pev(ptdpev_classnameclassnameptd31)
                if (
equali(classnameptd"func_breakable"))
                {
                    
// Destroy it
                    //force_use(ptr,ptd)
                
}
            }
            
set_pev(ptrpev_flagsFL_KILLME)
        }
    }    
    if(
is_valid_ent(ptr)) 
    {
        new 
classname[32]
        
entity_get_string(ptr,EV_SZ_classname,classname,31)
        
        if(
equal(classname"bow")) 
        {
            if(
is_valid_ent(ptd)) 
            {
                new 
id ptd
                
if(id && id 34
                {
                    if(
allowed_toucher(id))
                    {
                        
// Pick up weapon
                        
give_weapon(id)
                        
remove_entity(ptr)
                    }
                }
            }
        }
    }
}    

public 
CreateBurn(idattacker)
{
    if(
g_Burn[id])
        return

    if(
g_dmg_mode[id] == dmg_fire)
    {
        new 
ent=CreateAnimationSprite(attackerBURN_CLASSNAMEBURN_MODEL1.010.0)
    
        
set_pev(entpev_solidSOLID_NOT)
        
set_pev(entpev_movetypeMOVETYPE_FOLLOW)
    
        
set_pev(entpev_aimentid)
    
        
set_pev(entpev_fuser2get_gametime()+BURN_LIFE)
    
        
g_Burn[id]=get_gametime()+BURN_PERIOD
    
}
}

public 
BurnThink(ent)
{
    if(!
pev_valid(ent))
        return
        
    static 
Float:lifeaim_ent
    
    pev
(ent,pev_fuser2life)
    
    
aim_ent=pev(entpev_aiment)

    if(
g_dmg_mode[aim_ent] == dmg_fire)
    {    
        if(
get_gametime()>life||!is_user_alive(aim_ent) ||!zp_get_user_zombie(aim_ent))
        {
            
g_Burn[aim_ent]=0.0    
        
            fm_remove_entity
(ent)
        
            return
        }
    
        if(
get_gametime()>g_Burn[aim_ent])
        {
            
ExecuteHamB(Ham_TakeDamageaim_ent ent ,pev(entpev_owner), BURN_DAMAGEDMG_BURN)
        
            
g_Burn[aim_ent]=get_gametime()+BURN_PERIOD
        
}
    }
}


public 
make_speed(id)
{
    if(
is_user_alive(id) && g_slowed[id])
    {
        
g_slowed[id] = false
        set_user_maxspeed
(idg_old_speed[id])
        
fm_set_rendering_float(idg_FrozenRenderingFx[id], g_FrozenRenderingColor[id], g_FrozenRenderingRender[id], g_FrozenRenderingAmount[id])
    }
}

public 
check_radius_damage(entattacker)
{
    for(new 
0g_MaxPlayersi++)
    {
        if(!
is_user_alive(i))
            continue
        if(
cs_get_user_team(attacker) == cs_get_user_team(i))
            continue
        if(
entity_range(enti) > EXPLODE_HITRADIUS)
            continue
            
        
Do_TakeDamage(entiattackercan_see_fm(enti))
    }
}

public 
Do_TakeDamage(EntVictimAttackercan_see)
{
    static 
Float:DamageFloat:CurrentDis
    
    CurrentDis 
entity_range(EntVictim)
    
Damage EXPLODE_DAMAGE - ((CurrentDis EXPLODE_HITRADIUS) * EXPLODE_DAMAGE)
    
    if(
Damage 0)
    {
        static 
WeaponEnt
        WeaponEnt 
fm_get_user_weapon_entity(AttackerCSW_HEGRENADE)
        
        if(!
pev_valid(WeaponEnt))
            
WeaponEnt 0

        
if(!can_see)
            
Damage /= 2
            
        ExecuteHamB
(Ham_TakeDamageVictimWeaponEntAttackerDamageDMG_BULLET)
    }    
}

public 
update_ammo(id)
{
    if(!
is_user_alive(id))
        return

    if(
g_bow_mode[id] == NORMAL_MODE)
    {
        
g_ammo[id] = g_normal_ammo[id]
    }
    else if(
g_bow_mode[id] == FIRE_MODE)
    {
        
g_ammo[id] = g_fire_ammo[id]
    }
    else if(
g_bow_mode[id] == ICE_MODE)
    {
        
g_ammo[id] = g_ice_ammo[id]
    }
    else if(
g_bow_mode[id] == EXPLODE_MODE)
    {
        
g_ammo[id] = g_explode_ammo[id]
    }
    
    static 
weapon_entweapon_ent fm_find_ent_by_owner(-1"weapon_scout"id)
    if(
pev_valid(weapon_ent)) cs_set_weapon_ammo(weapon_ent1)    
    
    
cs_set_user_bpammo(idCSW_SCOUTg_ammo[id])
    
    
engfunc(EngFunc_MessageBeginMSG_ONE_UNRELIABLEget_user_msgid("CurWeapon"), {000}, id)
    
write_byte(1)
    
write_byte(CSW_SCOUT)
    
write_byte(-1)
    
message_end()

    
set_task(0.1"hud_debug"id)
}

public 
hud_debug(id)
{
    
engfunc(EngFunc_MessageBeginMSG_ONE_UNRELIABLEget_user_msgid("CurWeapon"), {000}, id)
    
write_byte(1)
    
write_byte(CSW_SCOUT)
    
write_byte(-1)
    
message_end()
}

// Allowed toucher
stock allowed_toucher(player)
{
    if (
g_HasBow[player])
        return 
false
    
    
return true
}
 

stock CreateAnimationSprite(owner, const classname[], const model[], Float:scaleFloat:framerate)
{
    new 
ent=fm_create_entity("env_sprite")

    
set_pev(entpev_framerateframerate)
    
set_pev(entpev_modelmodel)

    
dllfunc(DLLFunc_Spawnent)

    
set_pev(entpev_classnameclassname)
    
set_pev(entpev_ownerowner)

    
fm_entity_set_model(entmodel)
    
fm_set_rendering(entkRenderFxNoDissipation255255255kRenderGlow255)

    
set_pev(entpev_framerateframerate)
    
set_pev(entpev_scalescale)

    return 
ent
}

public 
can_see_fm(entindex1entindex2)
{
    if (!
entindex1 || !entindex2)
        return 
false

    
if (pev_valid(entindex1) && pev_valid(entindex1))
    {
        new 
flags pev(entindex1pev_flags)
        if (
flags EF_NODRAW || flags FL_NOTARGET)
        {
            return 
0
        
}

        new 
Float:lookerOrig[3]
        new 
Float:targetBaseOrig[3]
        new 
Float:targetOrig[3]
        new 
Float:temp[3]

        
pev(entindex1pev_originlookerOrig)
        
pev(entindex1pev_view_ofstemp)
        
lookerOrig[0] += temp[0]
        
lookerOrig[1] += temp[1]
        
lookerOrig[2] += temp[2]

        
pev(entindex2pev_origintargetBaseOrig)
        
pev(entindex2pev_view_ofstemp)
        
targetOrig[0] = targetBaseOrig [0] + temp[0]
        
targetOrig[1] = targetBaseOrig [1] + temp[1]
        
targetOrig[2] = targetBaseOrig [2] + temp[2]

        
engfunc(EngFunc_TraceLinelookerOrigtargetOrig0entindex10//  checks the had of seen player
        
if (get_tr2(0TraceResult:TR_InOpen) && get_tr2(0TraceResult:TR_InWater))
        {
            return 
0
        

        else 
        {
            new 
Float:flFraction
            get_tr2
(0TraceResult:TR_flFractionflFraction)
            if (
flFraction == 1.0 || (get_tr2(0TraceResult:TR_pHit) == entindex2))
            {
                return 
1
            
}
            else
            {
                
targetOrig[0] = targetBaseOrig [0]
                
targetOrig[1] = targetBaseOrig [1]
                
targetOrig[2] = targetBaseOrig [2]
                
engfunc(EngFunc_TraceLinelookerOrigtargetOrig0entindex10//  checks the body of seen player
                
get_tr2(0TraceResult:TR_flFractionflFraction)
                if (
flFraction == 1.0 || (get_tr2(0TraceResult:TR_pHit) == entindex2))
                {
                    return 
1
                
}
                else
                {
                    
targetOrig[0] = targetBaseOrig [0]
                    
targetOrig[1] = targetBaseOrig [1]
                    
targetOrig[2] = targetBaseOrig [2] - 17.0
                    engfunc
(EngFunc_TraceLinelookerOrigtargetOrig0entindex10//  checks the legs of seen player
                    
get_tr2(0TraceResult:TR_flFractionflFraction)
                    if (
flFraction == 1.0 || (get_tr2(0TraceResult:TR_pHit) == entindex2))
                    {
                        return 
1
                    
}
                }
            }
        }
    }
    return 
0
}

stock fm_set_rendering_float(entityfx kRenderFxNoneFloat:color[3], render kRenderNormalFloat:amount 16.0)
{
    
set_pev(entitypev_renderfxfx)
    
set_pev(entitypev_rendercolorcolor)
    
set_pev(entitypev_rendermoderender)
    
set_pev(entitypev_renderamtamount)
}

stock DropWeaponSlotiPlayeriSlot 

    new 
iWeaponEntity GetWeaponFromSlotiPlayeriSlot ); 
    if( 
iWeaponEntity 
    { 
        new 
iWeaponID get_pdata_cbaseiWeaponEntitym_iId); 
         
        new 
szWeaponName32 ]; 
        
get_weaponnameiWeaponIDszWeaponNamecharsmaxszWeaponName ) ); 
         
        
engclient_cmdiPlayer"drop"szWeaponName ); 
    } 


stock GetWeaponFromSlotiPlayeriSlot 

    return ( 
<= iSlot <= ) ? get_pdata_cbaseiPlayerm_rpgPlayerItems_Slot0 iSlot) : -1


can you check where is the problem ?!

Thing that have been added :
PHP Code:

stock DropWeaponSlotiPlayeriSlot )  
{  
    new 
iWeaponEntity GetWeaponFromSlotiPlayeriSlot );  
    if( 
iWeaponEntity )  
    {  
        new 
iWeaponID get_pdata_cbaseiWeaponEntitym_iId);  
          
        new 
szWeaponName32 ];  
        
get_weaponnameiWeaponIDszWeaponNamecharsmaxszWeaponName ) );  
          
        
engclient_cmdiPlayer"drop"szWeaponName );  
    }  
}  

stock GetWeaponFromSlotiPlayeriSlot )  
{  
    return ( 
<= iSlot <= ) ? get_pdata_cbaseiPlayerm_rpgPlayerItems_Slot0 iSlot) : -1;  


PHP Code:

#define m_rpgPlayerItems_Slot0 367 
#define m_iId 43 

PHP Code:

public give_bow(id)
{
    
give_weapon(id)
    
g_bow_mode[id] = NORMAL_MODE

    g_normal_ammo
[id] = NORMAL_AMMO
    g_fire_ammo
[id] = FIRE_AMMO
    g_ice_ammo
[id] = ICE_AMMO
    g_explode_ammo
[id] = EXPLODE_AMMO
}

//give weapon
public give_weapon(id){
    
g_HasBow[id] = true
    DropWeaponSlot
(id1)
    
give_item(id"weapon_scout")
    
update_ammo(id)


EDIT: there is no errors in log but server crashes!

LearninG 07-06-2019 02:03

Re: DropWeaponSlot
 
I want to give player a weapon , but if he/she has a primary weapon he will get 2 primary weapons !
so i want to check if he/she has primary weapon , if yes then drop that gun and give the new gun that's all.

thEsp 07-06-2019 03:11

Re: DropWeaponSlot
 
What is wrong with peoples these days? Why are you bumping 5 posts per day?


All times are GMT -4. The time now is 17:16.

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