AlliedModders

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

Jeyden 05-15-2013 13:11

Weapons Spawn
 
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)    
    }



grs4 05-15-2013 14:25

Re: Weapons Spawn
 
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   




Jeyden 05-15-2013 15:10

Re: Weapons Spawn
 
Quote:

Originally Posted by grs4 (Post 1952521)
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 05-16-2013 10:03

Re: Weapons Spawn
 
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;




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

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