AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   help with adding new entity think (https://forums.alliedmods.net/showthread.php?t=210151)

avril-lavigne 03-07-2013 06:52

help with adding new entity think
 
help me smart guyZ. in create_lasermine i need new think for vectors because when mine is active the vector is immobile.I need to update it each second . in Mine_Activate func there is nextthink stuff> I tried to add it to create lasermine but without success


these vectors

PHP Code:

         vBeamEnd[0] = vNewOrigin[0] + random_num(-150,150)
        
vBeamEnd[1] = vNewOrigin[1] + 150
        vBeamEnd
[2] = vNewOrigin[2] + 150

                
new Float:vTracedBeamEnd[3]
                
trace_line(-1vNewOriginvBeamEndvTracedBeamEnd)
                
entity_set_vector(MineEV_VEC_vuser1vTracedBeamEnd

I need to set that vector each second it should use new direction each time (update itselft with random_num(-150,150)


PHP Code:

public Create_Mine(id)
{
    
    
    
    new 
Mine create_entity("info_target")
    if(
is_valid_ent(Mine))  
    {
        if(
g_PlayerMines[id] <= 0) {
             
client_print(id,3,"You have reached the maximum")
             return 
PLUGIN_HANDLED_MAIN
                  
}
        
entity_set_string(MineEV_SZ_classname"lasermine")
        
entity_set_int(MineEV_INT_movetypeMOVETYPE_FLY)
        
entity_set_int(MineEV_INT_solidSOLID_NOT)
        
entity_set_model(Mine"models/v_tripmine.mdl")
    
        
entity_set_float(MineEV_FL_frame0.0)
        
entity_set_int(MineEV_INT_body3)
        
entity_set_int(MineEV_INT_sequence7)
        
entity_set_float(MineEV_FL_framerate0.0)

        
entity_set_float(MineEV_FL_takedamage1.0)
        
entity_set_float(MineEV_FL_dmg100.0)
        
entity_set_float(MineEV_FL_healthfloat(MINE_HEALTH))

        
entity_set_int(MineEV_INT_iuser20)

        new 
Float:MinBox[3] = {-8.0, -8.0, -8.0}
        new 
Float:MaxBox[3] = {8.08.08.0}
        
entity_set_size(MineMinBoxMaxBox)

        new 
Float:vOrigin[3]
        
entity_get_vector(idEV_VEC_originvOrigin)
        
        new 
Float:flVelocity[3]
        
VelocityByAim(id64flVelocity)

        new 
Float:vTraceEnd[3]
        
vTraceEnd[0] = flVelocity[0] + vOrigin[0]
        
vTraceEnd[1] = flVelocity[1] + vOrigin[1]
        
vTraceEnd[2] = flVelocity[2] + vOrigin[2]

        new 
Float:vTraceResult[3]
        
trace_line(idvOriginvTraceEndvTraceResult)

        new 
Float:vNormal[3]
        if(
trace_normal(idvOriginvTraceEndvNormal) < 1)
        {
            
remove_entity(Mine)
            
client_print(idprint_chat"You must plant the Laser mine on a wall")
            return 
PLUGIN_HANDLED_MAIN
        
}
        
        new 
Float:vNewOrigin[3]
        
        
vNewOrigin[0] = vTraceResult[0] + (vNormal[0] * 8.0)
        
vNewOrigin[1] = vTraceResult[1] + (vNormal[1] * 8.0)
        
vNewOrigin[2] = vTraceResult[2] + (vNormal[2] * 8.0)
        
        
entity_set_origin(MinevNewOrigin)
        
        new 
Float:vMineAngles[3]
        
vector_to_angle(vNormalvMineAngles)    
        
entity_set_vector(MineEV_VEC_anglesvMineAngles)
        
        new 
Float:vBeamEnd[3]
        
        
        
vBeamEnd[0] = vNewOrigin[0] + random_num(-150,150)
        
vBeamEnd[1] = vNewOrigin[1] + 150
        vBeamEnd
[2] = vNewOrigin[2] + 150
        
        
new Float:vTracedBeamEnd[3]
        
trace_line(-1vNewOriginvBeamEndvTracedBeamEnd)
        
entity_set_vector(MineEV_VEC_vuser1vTracedBeamEnd)
        
        
emit_sound(MineCHAN_WEAPON"weapons/mine_deploy.wav"1.0ATTN_NORM0PITCH_NORM)
        
emit_sound(MineCHAN_ITEM"weapons/mine_charge.wav"1.0ATTN_NORM0PITCH_NORM)
        
        new 
PlayerTeam get_user_team(id)
        
entity_set_int(MineMINE_INT_TEAMPlayerTeam)
        
entity_set_int(MineMINE_OWNERid)
        
        
client_print(idprint_chat"Planted mine")
        
client_print(idprint_chat"%d mines left"g_PlayerMines[id] - 1)
        
g_PlayerMines[id] -= 1
    
        
new param[1]
        
param[0] = Mine
        set_task
(1.5"Mine_Activate"0param1)    
    }
    return 
PLUGIN_HANDLED_MAIN
}



public 
Mine_Activate(param[]) 
{
    new 
Mine param[0]
    if(
is_valid_ent(Mine)) 
    {
        
entity_set_int(MineEV_INT_iuser21)
        
entity_set_int(MineEV_INT_solid2)
        
entity_set_float(MineEV_FL_nextthinkhalflife_time() + 0.1)
        
emit_sound(MineCHAN_ITEM"weapons/mine_activate.wav"1.0ATTN_NORM0PITCH_NORM)
    }
}



public 
Lasermine_Think(Mine)
{
    if(
is_valid_ent(Mine)) 
    {
        new 
TeamColor[3], MineTeam entity_get_int(MineMINE_INT_TEAM)
        switch(
MineTeam)
        {
            case 
1:
            {
                
TeamColor[0] = 255
                TeamColor
[1] = 0
                TeamColor
[2] = 0
            
}
            case 
2:
            {
                
TeamColor[0] = 0
                TeamColor
[1] = 0
                TeamColor
[2] = 255
            
}
        }
            
        new 
Float:vOrigin[3], Float:vEnd[3]
        
entity_get_vector(MineEV_VEC_originvOrigin)
        
entity_get_vector(MineEV_VEC_vuser1vEnd)
        
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY
        
write_byte(0)
        
write_coord(floatround(vOrigin[0]))
        
write_coord(floatround(vOrigin[1]))
        
write_coord(floatround(vOrigin[2]))
        
write_coord(floatround(vEnd[0]))
        
write_coord(floatround(vEnd[1]))
        
write_coord(floatround(vEnd[2]))
        
write_short(beam)
        
write_byte(0)
        
write_byte(0)
        
write_byte(3)
        
write_byte(5)
        
write_byte(0)
        
write_byte(TeamColor[0])
        
write_byte(TeamColor[1])
        
write_byte(TeamColor[2])
        
write_byte(255)
        
write_byte(0)
        
message_end()
        
        if(
entity_get_int(MineEV_INT_iuser2) == 1
        {    
            if(
entity_get_float(MineEV_FL_health) <= 50) {
                
Detonate_Mine(Mine)
            }
            else
            {
                new 
Float:vOrigin[3], Float:vEnd[3]
                
entity_get_vector(MineEV_VEC_originvOrigin)
                
entity_get_vector(MineEV_VEC_vuser1vEnd)    
                    
                new 
Float:vTrace[3], id trace_line(MinevOriginvEndvTrace)        
                if(
is_user_connected(id) && is_user_alive(id)) 
                {    
                    new 
bool:doDamage
                    
new VictimTeam get_user_team(id)
                    new 
MineTeam entity_get_int(MineMINE_INT_TEAM)
                    new 
FriendlyFire get_cvar_num("mp_friendlyfire"
                    switch(
FriendlyFire)
                    {
                        case 
0:
                        {
                            if(
VictimTeam != MineTeam) {     
                                
doDamage true
                            
} else {
                                
doDamage false
                            
}
                        }
                        case 
1:    doDamage true
                    
}
                                
                    if(
doDamage)
                    {
                        new 
VictimHealth get_user_health(id
                        new 
Damage VictimHealth get_pcvar_num(minedamage)    
                    
                        if(
Damage <= 0
                        {
                            new 
MineOwner entity_get_int(MineMINE_OWNER)
                            
Create_Kill(idMineOwner"Lasermine")
                        }
                        else
                        {
                            
set_user_health(idDamage)
                                
                            
message_begin(MSG_ONE_UNRELIABLEg_msgDamage, {000}, id
                            
write_byte(get_pcvar_num(minedamage))
                            
write_byte(get_pcvar_num(minedamage))
                            
write_long(DMG_ACID)
                            
write_coord(floatround(vOrigin[0]))
                            
write_coord(floatround(vOrigin[1]))
                            
write_coord(floatround(vOrigin[2]))
                            
message_end()
                        }
                        
emit_sound(idCHAN_WEAPON"debris/beamstart9.wav"1.0ATTN_NORM0PITCH_NORM)
                    }
                }
            }
        }
    }
    
entity_set_float(MineEV_FL_nextthinkhalflife_time() + 0.01)




All times are GMT -4. The time now is 21:44.

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