Raised This Month: $ Target: $400
 0% 

Weapons Spawn


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Jeyden
Member
Join Date: Feb 2011
Old 05-15-2013 , 13:11   Weapons Spawn
Reply With Quote #1

I tried to make a code that spawn weapons on random origins but for some reason
it isn`t working.

PHP Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <fakemeta>
#include <engine>

new const WeaponsList[][] = 
{
    
"weapon_p228",
    
"weapon_scout",
    
"weapon_mac10",
    
"weapon_aug",
    
"weapon_elite",
    
"weapon_fiveseven",
    
"weapon_ump45",
    
"weapon_galil",
    
"weapon_famas",
    
"weapon_glock18",
    
"weapon_mp5navy",
    
"weapon_m249",
    
"weapon_m3",
    
"weapon_m4a1",
    
"weapon_deagle",
    
"weapon_ak47"
}


public 
plugin_init() {
    
register_event("HLTV""EventRoundStart""a""1=0""2=0" );
}

public 
EventRoundStart()
{
    new 
players32 ], num
    get_players
playersnum"a" );
        
    new 
Float:Origin[3]
    new 
id
    
for(new 032i++)    
    {
        
id players[i]
        
pev(id,pev_origin,Origin)
        
        for(new 
j;2;j++)
            
Origin[j] += random_float(-500.0,500.0)
            
        new 
ran random_num(0sizeof WeaponsList)    

        new 
Ent create_entity(WeaponsList[ran])
   
        
engfunc(EngFunc_SetOrigin,Ent,Origin)    
    }


Last edited by Jeyden; 05-15-2013 at 13:11.
Jeyden is offline
grs4
Senior Member
Join Date: Dec 2010
Location: Poland
Old 05-15-2013 , 14:25   Re: Weapons Spawn
Reply With Quote #2

Origin have 3 arrays size. X Y Z
Code:
   {
        id = players[i]
        pev(id,pev_origin,Origin)
        
        for(new j ; j <= 3;j++)
            Origin[j] = random_float(-500.0,500.0)
        
        new ran = random(sizeof WeaponsList - 1)    

        new Ent = create_entity(WeaponsList[ran])
   
        engfunc(EngFunc_SetOrigin,Ent,Origin)    
        engfunc(EngFunc_DropToFloor, Ent)
You can
Code:
new ran = random(sizeof WeaponsList - 1) // Must be - 1    


grs4 is offline
Jeyden
Member
Join Date: Feb 2011
Old 05-15-2013 , 15:10   Re: Weapons Spawn
Reply With Quote #3

Quote:
Originally Posted by grs4 View Post
Origin have 3 arrays size. X Y Z
Code:
   {
        id = players[i]
        pev(id,pev_origin,Origin)
        
        for(new j ; j <= 3;j++)
            Origin[j] = random_float(-500.0,500.0)
        
        new ran = random(sizeof WeaponsList - 1)    

        new Ent = create_entity(WeaponsList[ran])
   
        engfunc(EngFunc_SetOrigin,Ent,Origin)    
        engfunc(EngFunc_DropToFloor, Ent)
You can
Code:
new ran = random(sizeof WeaponsList - 1) // Must be - 1    

Doesn't work
Jeyden is offline
Jeyden
Member
Join Date: Feb 2011
Old 05-16-2013 , 10:03   Re: Weapons Spawn
Reply With Quote #4

I edited weapon spawner plugin and it works
the only problem is that its not always giving me the right weapon.
Like when I go over an shotgun model it giving me shotgun + m4a1 or when I go over an
mp5 model it giving me m249.

Can some one please fix it.

PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <superspawns>

//ent name
#define wp_ent "weapon_entity"

//ent values
#define WP_Type pev_iuser4
#define WP_Left pev_iuser3
#define WP_Max  pev_iuser2

//primary and secondary weapons
#define PRIMARY_WEAPONS ((1<<CSW_SCOUT) | (1<<CSW_XM1014) | (1<<CSW_MAC10) | (1<<CSW_AUG) | (1<<CSW_UMP45) | (1<<CSW_GALIL) | (1<<CSW_FAMAS) | (1<<CSW_MP5NAVY) | (1<<CSW_M249) | (1<<CSW_M3) | (1<<CSW_M4A1) | (1<<CSW_TMP) | (1<<CSW_G3SG1) | (1<<CSW_AK47))
#define SECONDARY_WEAPONS ((1<<CSW_P228) | (1<<CSW_ELITE) | (1<<CSW_FIVESEVEN) | (1<<CSW_GLOCK18) | (1<<CSW_DEAGLE))

//offsets
#define OFFSET_SCOUT_AMMO    378
#define OFFSET_PARA_AMMO    379
#define OFFSET_FAMAS_AMMO     380
#define OFFSET_M3_AMMO        381
#define OFFSET_USP_AMMO        382
#define OFFSET_FIVESEVEN_AMMO    383
#define OFFSET_DEAGLE_AMMO    384
#define OFFSET_P228_AMMO    385
#define OFFSET_GLOCK_AMMO    386
#define OFFSET_FLASH_AMMO    387
#define OFFSET_HE_AMMO        388
#define OFFSET_SMOKE_AMMO    389
#define linuxdiff        5

//ammo for each gun
#define AMMO_P228    52
#define AMMO_SCOUT    90
#define AMMO_Xm1014    32
#define AMMO_Mac10    100
#define AMMO_Aug    90
#define AMMO_Elite    120
#define AMMO_Fiveseven    100
#define AMMO_Ump45    100
#define AMMO_Galil    90
#define AMMO_Famas    90
#define AMMO_Glock18    120
#define AMMO_Awp    30
#define AMMO_Mp5navy    120
#define AMMO_M249    200
#define AMMO_M3        32
#define AMMO_M4a1     90
#define AMMO_Tmp    120
#define AMMO_Deagle    35
#define AMMO_Ak47    90

new pcvar
new classname[20],left,type,i

new const Secondary[] = {CSW_P228CSW_ELITECSW_FIVESEVENCSW_GLOCK18CSW_DEAGLE};
new const 
Primary[] ={CSW_SCOUT,CSW_XM1014,CSW_MAC10,CSW_AUG,CSW_UMP45,CSW_GALIL,CSW_FAMAS,CSW_MP5NAVY,CSW_M249,CSW_M3,CSW_M4A1,CSW_TMP,CSW_AK47}    

public 
plugin_init()
{
    
// First we have to initialize the arrays and parameters
    // The value 3500.0 is the minimum distance between points
    // Nearest points will be found, but GetOrigin will erase points
    // with less than 3500.0 distance with other used points and return
    
SsInit(3500.0)

    
// Let start scanning the map
    
SsScan()

    
// This call is to dump on server logs the origins found
    
SsDump()

    
// This command will call GetOrigin() to get a new location, then spawn a model (is't just an example)
    
register_concmd("spawnent""spawnent")
    
register_forward(FM_Touch,"Equip")
    
    
pcvar register_cvar("ws_auto_remove","0")
    
pcvar get_pcvar_num(pcvar);
    
    
pcvar =    register_cvar("ws_reset_round","1")
    if(
get_pcvar_num(pcvar))
    {
        
register_logevent("reset"2"1=Round_End"
        
register_event("TextMsg""reset""a""2=#Game_will_restart_in")
    }
    
    
pcvar =    register_cvar("ws_reset_gun","1")
    if(
get_pcvar_num(pcvar))
    {
        
register_forward(FM_Think"Forward_Think")
        
        
pcvar register_cvar("ws_reset_gun_time","1")
        
        
pcvar =    register_cvar("ws_reset_gun_amount","1")
        
pcvar get_pcvar_num(pcvar)
    }
}

public 
Equip(id,weapon)
{
    if(!
pev_valid(weapon) || !pev_valid(id) )return
    
//static classname[20]
    
pev(weaponpev_classnameclassname,19)    
    if(!
equal(classname,wp_ent))return
    
    
//static left,type,i
    
left pev(weapon,WP_Left)
    if(!
left)return
    
type pev(weapon,WP_Type)
    
    
//check if its a primary
    
if(PRIMARY_WEAPONS & ( << type))
    {
        for (
0sizeof Primary; ++i)
        {
            
//cant have more then 1 primary
            
if(user_has_weapon(id,Primary[i]))return
        }
    }
    
//check if its secondary
    
if(SECONDARY_WEAPONS & ( << type))
    {
        for (
0sizeof Secondary; ++i)
        {
            
//cant have more then 2 secondary
            
if(user_has_weapon(id,Secondary[i]))return
        }
    }

    
    
//give weapon and ammo
    
switch(type)
    {
        case 
:
        {
            
fm_give_item(id,"weapon_p228")
            
set_pdata_int(id,OFFSET_P228_AMMO,AMMO_P228,linuxdiff)
        }
        case 
:
        {
            
fm_give_item(id,"weapon_scout")
            
set_pdata_int(id,OFFSET_SCOUT_AMMO,AMMO_SCOUT,linuxdiff)
        }
        case 
:
        {
            
fm_give_item(id,"weapon_hegrenade")
            
//set_pdata_int(id,OFFSET_HE_AMMO,amount,linuxdiff)
        
}
        case 
:
        {
            
fm_give_item(id,"weapon_xm1014")
            
set_pdata_int(id,OFFSET_M3_AMMO,AMMO_Xm1014,linuxdiff)
        }
        case 
:
        {
            
fm_give_item(id,"weapon_mac10")
            
set_pdata_int(id,OFFSET_USP_AMMO,AMMO_Mac10,linuxdiff)
        }
        case 
:
        {
            
fm_give_item(id,"weapon_aug")
            
set_pdata_int(id,OFFSET_FAMAS_AMMO,AMMO_Aug,linuxdiff)
        }
        case 
:
        {
            
fm_give_item(id,"weapon_smokegrenade")
            
//set_pdata_int(id,OFFSET_SMOKE_AMMO,amount,linuxdiff)
        
}
            
        case 
8:
        {
            
fm_give_item(id,"weapon_elite")
            
set_pdata_int(id,OFFSET_GLOCK_AMMO,AMMO_Elite,linuxdiff)
        }
        case 
9:
        {
            
fm_give_item(id,"weapon_fiveseven")
            
set_pdata_int(id,OFFSET_FIVESEVEN_AMMO,AMMO_Fiveseven,linuxdiff)
        }
        case 
10:
        {
            
fm_give_item(id,"weapon_ump45")
            
set_pdata_int(id,OFFSET_USP_AMMO,AMMO_Ump45,linuxdiff)
        }
        case 
11:
        {
            
fm_give_item(id,"weapon_galil")
            
set_pdata_int(id,OFFSET_FAMAS_AMMO,AMMO_Galil,linuxdiff)
        }
        case 
12:
        {
            
fm_give_item(id,"weapon_famas")
            
set_pdata_int(id,OFFSET_FAMAS_AMMO,AMMO_Famas,linuxdiff)
        }
        case 
13:
        {
            
fm_give_item(id,"weapon_glock18")
            
set_pdata_int(id,OFFSET_GLOCK_AMMO,AMMO_Glock18,linuxdiff)
        }
        case 
14:
        {
            
fm_give_item(id,"weapon_mp5navy")
            
set_pdata_int(id,OFFSET_GLOCK_AMMO,AMMO_Mp5navy,linuxdiff)
        }
        case 
15:
        {
            
fm_give_item(id,"weapon_m249")
            
set_pdata_int(id,OFFSET_PARA_AMMO,AMMO_M249,linuxdiff)
        }
        case 
16:
        {
            
fm_give_item(id,"weapon_m3")
            
set_pdata_int(id,OFFSET_M3_AMMO,AMMO_M3,linuxdiff)
        }
        case 
17:
        {
            
fm_give_item(id,"weapon_m4a1")
            
set_pdata_int(id,OFFSET_FAMAS_AMMO,AMMO_M4a1,linuxdiff)
        }
        case 
18:
        {
            
fm_give_item(id,"weapon_tmp")
            
set_pdata_int(id,OFFSET_GLOCK_AMMO,AMMO_Tmp,linuxdiff)
        }
        case 
19:
        {
            
fm_give_item(id,"weapon_flashbang")
            
//set_pdata_int(id,OFFSET_FLASH_AMMO,amount,linuxdiff)
        
}
        case 
20:
        {
            
fm_give_item(id,"weapon_deagle")
            
set_pdata_int(id,OFFSET_DEAGLE_AMMO,AMMO_Deagle,linuxdiff)
        }
        case 
21:
        {
            
fm_give_item(id,"weapon_ak47")
            
set_pdata_int(id,OFFSET_SCOUT_AMMO,AMMO_Ak47,linuxdiff)
        }
    }
    
left-=1
    set_pev
(weapon,WP_Left,left)
    
    
//if nothing left make invisiable
    
if(!left)
    {
        
set_pev(weaponpev_renderfxkRenderFxNone)
        
set_pev(weaponpev_rendercolor, {0.0,0.0,0.0})
        
set_pev(weaponpev_rendermodekRenderTransAlpha)
        
set_pev(weaponpev_renderamt0.0)
    }
}

public 
Forward_Think(ent)
{
    if(!
pev_valid(ent))return
    
    static 
classname[32]
    
pev(entpev_classnameclassname31)
    
    
//not our weapon
    
if(!equal(classnamewp_ent))return
    
    
//get values
    
classname[0] = pev(ent,WP_Max)
    
classname[1] = pev(ent,WP_Left)
    
    
//if its full return
    
if(classname[1] == classname[0])return
    
    
//if invisiable
    
if(!classname[1])
    {
        
set_pev(entpev_renderfxkRenderNormal)
        
set_pev(entpev_rendercolor, {255.0,255.0,255.0})
        
set_pev(entpev_rendermodekRenderTransAlpha)
        
set_pev(entpev_renderamt255.0)
    }
    
    
//add
    
classname[1] +=pcvar
    
    
//set it
    
if(classname[1] > classname[0])set_pev(ent,WP_Left,classname[0])
    else 
set_pev(ent,WP_Left,classname[1])
}

public 
spawnent(id)
{
    for(new 
046i++)
    {
        new 
Float:origin[3]
    
        
// SsGetOrigin() will return true if useful location was found
        // will return false if there's no more usefull locations
    
        
if(SsGetOrigin(origin))
        {
            new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
            if(
pev_valid(ent))
            {
                
set_pev(ent,pev_classnamewp_ent)
                new 
ran random_num(1,21)
                switch (
ran)
                {
                    case 
1:engfunc(EngFunc_SetModelent"models/w_p228.mdl")
                    case 
2:engfunc(EngFunc_SetModelent"models/w_scout.mdl")
                    case 
3:engfunc(EngFunc_SetModelent"models/w_hegrenade.mdl")
                    case 
4:engfunc(EngFunc_SetModelent"models/w_xm1014.mdl")
                    case 
5:engfunc(EngFunc_SetModelent"models/w_mac10.mdl")
                    case 
6:engfunc(EngFunc_SetModelent"models/w_aug.mdl")
                    case 
7:engfunc(EngFunc_SetModelent"models/w_smokegrenade.mdl")
                    case 
8:engfunc(EngFunc_SetModelent"models/w_elite.mdl")
                    case 
9:engfunc(EngFunc_SetModelent"models/w_fiveseven.mdl")
                    case 
10:engfunc(EngFunc_SetModelent"models/w_ump45.mdl")
                    case 
11:engfunc(EngFunc_SetModelent"models/w_galil.mdl")
                    case 
12:engfunc(EngFunc_SetModelent"models/w_famas.mdl")
                    case 
13:engfunc(EngFunc_SetModelent"models/w_glock18.mdl")
                    case 
14:engfunc(EngFunc_SetModelent"models/w_mp5.mdl")
                    case 
15:engfunc(EngFunc_SetModelent"models/w_m249.mdl")
                    case 
16:engfunc(EngFunc_SetModelent"models/w_m3.mdl")
                    case 
17:engfunc(EngFunc_SetModelent"models/w_m4a1.mdl")
                    case 
18:engfunc(EngFunc_SetModelent"models/w_tmp.mdl")
                    case 
19:engfunc(EngFunc_SetModelent"models/w_flashbang.mdl")
                    case 
20:engfunc(EngFunc_SetModelent"models/w_deagle.mdl")
                    case 
21:engfunc(EngFunc_SetModelent"models/w_ak47.mdl")
                }
                
engfunc(EngFunc_SetOriginentorigin)    
                
engfunc(EngFunc_SetSizeent, {-2.0,-2.0,-2.0},{2.0,2.0,2.0})
                
set_pev(ent,pev_solid,2)
                
set_pev(ent,pev_origin,origin)
        
                
set_pev(ent,WP_Type,ran)
                
set_pev(ent,WP_Left,ran)
                
set_pev(ent,WP_Max,ran)
                
engfunc(EngFunc_DropToFloorent)
            }
        }
    }

        return 
PLUGIN_HANDLED
}  

stock fm_give_item(index, const item[])
{
    
    new 
ent =  engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocStringitem))
    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;

Jeyden is offline
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 16:23.


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