Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

RSSEnt Follow Players


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

  • RSSy
Hello I have this code that makes the grenades follow the enemy, I wanted to know if it is possible (and how) to make the player follow other players?

Or if it is possible to create an entity that follows players, but the player in turn chases them through the entity?


PHP Code:


#define AMMOX_HEGRENADE 12

public plugin_init() {
    
// FIND THROWN GRENADES
    
register_event("AmmoX""on_AmmoX""b")
}
//----------------------------------------------------------------------------------------------
public on_AmmoX(id)
{
    if ( !
is_user_alive(id) ) return

    new 
iAmmoType read_data(1)
    new 
iAmmoCount read_data(2)

    if ( 
iAmmoType == AMMOX_HEGRENADE ) {

        if ( 
iAmmoCount == ) {
            
            
set_task(get_cvar_float("give_grenadetimer"), "give_weapons"id)
            new 
iGrenade = -1
            
while ( (iGrenade find_ent_by_class(iGrenade"grenade")) > ) {
                    

                
// Set speed here since it gets called so much
                
gNadeSpeed get_cvar_float("henade_nadespeed")
                if ( 
gNadeSpeed <= 0.0 gNadeSpeed 1.0

                gPauseEntity
[iGrenade] = true

                
new parm[3]
                
parm[0] = iGrenade
                parm
[1] = id
                
// If this changes so must nade_reset time or cooldown may not be set
                // The longer the nade_rest time the more chance for error with attacker identity
                
set_task(1.0"find_target"0parm3)

                
// Set the fuse
                
set_task(get_cvar_float("henade_fuse"), "unpause_nade"iGrenadeparm2)
                }
            }
        }

        else if ( 
iAmmoCount ) {
            
// Got a new nade remove the timer
            
remove_task(id)
        }
}
//----------------------------------------------------------------------------------------------
public find_target(parm[])
{
    new 
grenadeID parm[0]
    new 
grenadeOwner parm[1]

    if ( 
is_valid_ent(grenadeID) ) {
        new 
shortestDistance 9999
        
new nearestPlayer 0
        
new distanceteam[33], rgb[3], players[SH_MAXSLOTS], pnum

        get_user_team
(grenadeOwnerteam32)

        
// Find all alive enemies and set trail color
        
if ( cs_get_user_team(grenadeOwner) == CS_TEAM_CT ) {
            
get_players(playerspnum"ae""TERRORIST")
            
rgb = {5050175}
        }
        else {
            
get_players(playerspnum"ae""CT")
            
rgb = {1755050}
        }

        
// Find the closest enemy
        
for (new 0pnumi++) {
            if ( !
is_user_alive(players[i]) ) continue

            
distance =  get_entity_distance(players[i], grenadeID)

            if ( 
distance <= shortestDistance ) {
                
shortestDistance distance
                nearestPlayer 
players[i]
            }
        }

        
// Make the nade seek that enemy if one exists
        
if ( nearestPlayer ) {
            
// Trail on grenade
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(22)                // TE_BEAMFOLLOW
            
write_short(grenadeID)        // entity:attachment to follow
            
write_short(gSpriteTrail)    // sprite index
            
write_byte(10)        // life in 0.1's
            
write_byte(3)        // line width in 0.1's
            
write_byte(rgb[0])    // r
            
write_byte(rgb[1])    // g
            
write_byte(rgb[2])    // b
            
switch(random_num(0,2)) {
                case 
0:write_byte(64)    // brightness
                
case 1:write_byte(128)
                case 
2:write_byte(192)
            }
            
message_end()

            
parm[2] = nearestPlayer
            set_task
(0.1"seek_target"grenadeID+1000parm3"b")
        }
    }
}
//----------------------------------------------------------------------------------------------
public seek_target(parm[])
{
    new 
grenade parm[0]
    new 
target parm[2]

    if ( !
is_valid_ent(grenade) ) {
        
remove_task(grenade+1000)
        return
    }

    if ( 
is_user_alive(target) ) {
        
entity_set_follow(grenadetarget)
    }
    else {
        
// Remove the seek loop
        
remove_task(grenade+1000)

        
// Stop the Trail
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(99)            //TE_KILLBEAM
        
write_short(grenade)    // entity
        
message_end()

        
// Find a new player to seek
        
set_task(0.1"find_target"0parm3)
    }
}
//----------------------------------------------------------------------------------------------
stock entity_set_follow(entitytarget)
{
    if ( !
is_valid_ent(entity) || !is_user_alive(target) ) return 0

    
new Float:fl_Origin[3], Float:fl_EntOrigin[3]
    
entity_get_vector(targetEV_VEC_originfl_Origin)
    
entity_get_vector(entityEV_VEC_originfl_EntOrigin)

    new 
Float:fl_InvTime = (gNadeSpeed vector_distance(fl_Originfl_EntOrigin))

    new 
Float:fl_Distance[3]
    
fl_Distance[0] = fl_Origin[0] - fl_EntOrigin[0]
    
fl_Distance[1] = fl_Origin[1] - fl_EntOrigin[1]
    
fl_Distance[2] = fl_Origin[2] - fl_EntOrigin[2]

    new 
Float:fl_Velocity[3]
    
fl_Velocity[0] = fl_Distance[0] * fl_InvTime
    fl_Velocity
[1] = fl_Distance[1] * fl_InvTime
    fl_Velocity
[2] = fl_Distance[2] * fl_InvTime

    entity_set_vector
(entityEV_VEC_velocityfl_Velocity)

    new 
Float:fl_NewAngle[3]
    
vector_to_angle(fl_Velocityfl_NewAngle)
    
entity_set_vector(entityEV_VEC_anglesfl_NewAngle)

    return 
1
}
//---------------------------------------------------------------------------------------------- 

Przeczytaj cały wpis

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...