Raised This Month: $51 Target: $400
 12% 

healing entities ?


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
yagami
Senior Member
Join Date: Jan 2021
Old 10-26-2022 , 19:49   healing entities ?
Reply With Quote #1

What I am basically trying to do is "if dispensers can heal each other, in this case by healing each other".
here there is no id where i can locate dispenser so easily after several attempts i could find it this way

PHP Code:
static iEntTestiEntTest FM_NULLENT

        
while((iEntTest find_ent_by_class(iEntTestdispenser_classname)))
        {
                if(
pev_valid(iEntTest))
                {
                        static 
entlist[3]
                        if(
find_sphere_class(iEntTestdispenser_classname300.0entlist2))
                        {                            

                        }
                }
        } 
But now I do not know how to do this, does anyone know how to do this code here
This is tk function can someone help me for the love of god I am two d

PHP Code:
public tk_Dispenser(iEnt)
{
    if(
pev_valid(iEnt))
    {
        static 
iOwner
        iOwner 
pev(iEntDISPENSER_OWNER)

        if(!
is_user_connected(iOwner))
            return 
PLUGIN_CONTINUE

        
static idfRadiusiDispHpiLeveliDispApFloat:iTakeApHp
        iLevel 
pev(iEntDISPENSER_LEVEL)

        if(
get_pcvar_num(g_Cvar[CVAR_EFFECT_LVL_4]))
        {
            if(
iLevel == 4)
            {
                if(!(
pev(iEntpev_effects) & EF_BRIGHTFIELD))
                    
set_pev(iEntpev_effectspev(iEntpev_effects) | EF_BRIGHTFIELD)
            }
        }
        
        switch(
iLevel)
        {
            case 
1:
            {
                
iDispHp get_pcvar_num(g_Cvar[CVAR_HP_LVL1])
                
iDispAp get_pcvar_num(g_Cvar[CVAR_AP_LVL1])
                
iTakeApHp 1.0
            
}

            case 
2:
            {
                
iDispHp get_pcvar_num(g_Cvar[CVAR_HP_LVL2])
                
iDispAp get_pcvar_num(g_Cvar[CVAR_AP_LVL2])
                
iTakeApHp 1.5
            
}

            case 
3:
            {
                
iDispHp get_pcvar_num(g_Cvar[CVAR_HP_LVL3])
                
iDispAp get_pcvar_num(g_Cvar[CVAR_AP_LVL3])
                
iTakeApHp 2.0
            
}

            case 
4:
            {
                
iDispHp get_pcvar_num(g_Cvar[CVAR_HP_LVL4])
                
iDispAp get_pcvar_num(g_Cvar[CVAR_AP_LVL4])
                
iTakeApHp 2.5
            
}
        }
        
        static 
Float:time
        time 
get_gametime()

        for(
id 1id <= MaxClientsid++)
        {
            static 
iTeam
            iTeam 
get_user_team(id)

            if(
is_user_alive(id) && get_user_team(id) == get_user_team(iOwner))
            {
                if(
g_IsVip[id])
                    
fRadius get_pcvar_num(g_Cvar[CVAR_DISTANCE_LIFE_VIP])
                else
                    
fRadius get_pcvar_num(g_Cvar[CVAR_DISTANCE_LIFE])

                static 
Float:flOrigin[3]
                
pev(idpev_originflOrigin)

                if(
get_distance_f(g_DispOrigin[iOwner], flOrigin) <= fRadius)
                {
                    if(
UTIL_IsVisible(idiEnt1))
                    {
                        if(
get_user_health(id) < iDispHp)
                        {
                            if(
pev(idpev_health) < iDispHp)
                            {
                                
set_pev(idpev_healthfloatmin(pev(idpev_health) + iTakeApHpfloat(iDispHp)))
                                
                                if(
get_pcvar_num(g_Cvar[CVAR_SHOW_LIFE_SPRITE]))
                                {
                                    static 
iOrigin[3]
                                    
get_user_origin(idiOrigin)

                                    
message_begin(MSG_PVSSVC_TEMPENTITYiOrigin)
                                    
write_byte(TE_PROJECTILE)
                                    
write_coord(iOrigin[0] + random_num(-1015))
                                    
write_coord(iOrigin[1] + random_num(-1015))
                                    
write_coord(iOrigin[2] + random_num(530))
                                    
write_coord(10)
                                    
write_coord(15)
                                    
write_coord(20)
                                    
write_short(iTeam == g_PrecSprHealLifeR g_PrecSprHealLifeB)
                                    
write_byte(1)
                                    
write_byte(id)
                                    
message_end()
                                }
                            }
                            if(
get_pcvar_num(g_Cvar[CVAR_SHOW_LINE_LIFE]))
                                
UTIL_BeamEnts(flOriging_DispOrigin[iOwner], g_BeamColor[iOwner][0], g_BeamColor[iOwner][1], g_BeamColor[iOwner][2], g_PrecSprLife4001)
                        }
                    }

                    if(
UTIL_IsVisible(idiEnt1) && get_user_armor(id) < iDispAp)
                    {                                                             
                        if(
pev(idpev_armorvalue) < iDispAp)
                        {
                            
set_pev(idpev_armorvaluefloatmin(pev(idpev_armorvalue) + iTakeApHpfloat(iDispAp)))
                        }
                    
                        if(
get_pcvar_num(g_Cvar[CVAR_SHOW_LINE_LIFE]))
                            
UTIL_BeamEnts(flOriging_DispOrigin[iOwner], g_BeamColor[iOwner][0], g_BeamColor[iOwner][1], g_BeamColor[iOwner][2], g_PrecSprLife4001)
                    }
                }

                if(
UTIL_IsVisible(idiEnt1) && get_distance_f(g_DispOrigin[iOwner], flOrigin) <= float(get_pcvar_num(g_Cvar[CVAR_GIVE_MONEY_DISTANCE])) && iLevel == && get_pcvar_num(g_Cvar[CVAR_GIVE_MONEY_TIME]))
                {
                    if(
time float(get_pcvar_num(g_Cvar[CVAR_GIVE_MONEY_TIME])) > f_TimeGiveMoney[id])
                    {
                        
cs_set_user_money(idcs_get_user_money(id) + random_num(get_pcvar_num(g_Cvar[CVAR_GIVE_MONEY_MIN]), get_pcvar_num(g_Cvar[CVAR_GIVE_MONEY_MAX])))

                        
f_TimeGiveMoney[id] = time
                    
}
                }


                if(
UTIL_IsVisible(idiEnt1) && get_distance_f(g_DispOrigin[iOwner], flOrigin) <= float(get_pcvar_num(g_Cvar[CVAR_GIVE_AMMO_DISTANCE])) && get_pcvar_num(g_Cvar[CVAR_GIVE_AMMO_TIME]))
                {
                    if(
get_pcvar_num(g_Cvar[CVAR_ALL_LVL_GIVE_AMMO]) || iLevel == 4)
                    {
                        if(
time float(get_pcvar_num(g_Cvar[CVAR_GIVE_AMMO_TIME])) > f_TimeGiveAmmo[id])
                        {
                            static 
fammofbammoxUserGetWpn
                            xUserGetWpn 
get_user_weapon(id)

                            switch(
xUserGetWpn)
                            {
                                case 
CSW_P228 fammo 13fbammo 52;
                                case 
CSW_SCOUT fammo 10fbammo 90;
                                case 
CSW_MAC10 fammo 30fbammo 100;
                                case 
CSW_AUG fammo 30fbammo 90;
                                case 
CSW_ELITE fammo 30fbammo 120;
                                case 
CSW_FIVESEVEN fammo 20fbammo 100;
                                case 
CSW_UMP45 fammo 25fbammo 100;
                                case 
CSW_SG550 fammo 30fbammo 90;
                                case 
CSW_GALI fammo 35fbammo 90;
                                case 
CSW_FAMAS fammo 25fbammo 90;
                                case 
CSW_USP fammo 12fbammo 100;
                                case 
CSW_GLOCK18 fammo 20fbammo 120;
                                case 
CSW_AWP fammo 10fbammo 30;
                                case 
CSW_MP5NAVY fammo 30fbammo 120;
                                case 
CSW_M249 fammo 100fbammo 200;
                                case 
CSW_M3 fammo 8fbammo 32;
                                case 
CSW_M4A1 fammo 30fbammo 90;
                                case 
CSW_TMP fammo 30fbammo 120;
                                case 
CSW_G3SG1 fammo 20fbammo 90;
                                case 
CSW_SG552 fammo 30fbammo 90;
                                case 
CSW_AK47 fammo 30fbammo 90;
                                case 
CSW_P90 fammo 50fbammo 100;
                                default: continue
                            }

                            if(
pev_valid(id) == 2)
                            {
                                static 
xUserWpncurrentAmmocurrentBammonewAmmonewBAmmo

                                xUserWpn 
get_pdata_cbase(id373)
                                
currentAmmo cs_get_weapon_ammo(xUserWpn)
                                
currentBammo cs_get_user_bpammo(idxUserGetWpn)
                                
newAmmo currentAmmo random_num(get_pcvar_num(g_Cvar[CVAR_GIVE_AMMO_MIN]), get_pcvar_num(g_Cvar[CVAR_GIVE_AMMO_MAX]))
                                
newBAmmo currentBammo random_num(get_pcvar_num(g_Cvar[CVAR_GIVE_AMMO_MIN]), get_pcvar_num(g_Cvar[CVAR_GIVE_AMMO_MAX]))
                                
                                if(
currentAmmo == fammo && currentBammo == fbammo)
                                    continue

                                if(
newAmmo <= fammo)
                                {
                                    
cs_set_weapon_ammo(xUserWpnnewAmmo)
                                    
emit_sound(idCHAN_ITEMxBulletsSounds[random_num(0charsmax(xBulletsSounds))], 0.3ATTN_NORM0PITCH_NORM)
                                }
                                else
                                {
                                    if(
newBAmmo <= fbammo)
                                        
cs_set_user_bpammo(idxUserGetWpnnewBAmmo)
                                    else
                                        
cs_set_user_bpammo(idxUserGetWpnfbammo)

                                    
emit_sound(idCHAN_ITEMxBulletsSounds[random_num(0charsmax(xBulletsSounds))], 0.3ATTN_NORM0PITCH_NORM)
                                }
                            }

                            
f_TimeGiveAmmo[id] = time
                        
}
                    }
                    
                }
            }
        }

        
/*static Float:LastPrint = 0.0

        new iOwner2 = pev(iEnt, DISPENSER_OWNER);
        new CsTeam:iOwnerTeam = cs_get_user_team(iOwner2);
        new sClassname [32];
        new Float:iTakeHp[4] = {1.0, 1.5, 2.0, 2.5};
        new Float:entHealth;
        new Float:entMaxHealth;
        new ent = -1;
        static Float:flOrigin[3]
        pev(id, pev_origin, flOrigin)

        while((ent = engfunc(EngFunc_FindEntityInSphere, ent, flOrigin, 1000.000)) != 0)
        {                
                if(pev_valid(ent))
                {
                        pev(ent, pev_health, entHealth);
                        pev(ent, pev_classname, sClassname, charsmax(sClassname));
                        pev(ent, pev_origin, flOrigin);

                        if(get_gametime() < LastPrint + 2.0)
                                server_print("%s", sClassname)

                        if(equali(sClassname, dispenser_classname))
                        {
                                server_print("Classn")

                                /*check the team by the team's pev_iuser
                                if(iOwnerTeam == pev(ent, DISPENSER_TEAM) && ent != iEnt)
                                {
                                        if(UTIL_IsVisible(id, iEnt))
                                        {
                                        // function that returns the maximum hp of the dispenser at the current level
                                        entMaxHealth == pev(ent, DISPENSER_LEVEL);

                                        if(entHealth >= entMaxHealth)
                                        {
                                                continue;
                                        }

                                        entHealth = entHealth + iTakeHp [iLevel -1] < entMaxHealth ? entHealth + iTakeHp [iLevel -1] : entMaxHealth; 

                                        set_pev( ent, pev_health, entHealth );

                                        UTIL_BeamEnts(flOrigin, g_DispOrigin[iOwner], g_BeamColor[iOwner][0], g_BeamColor[iOwner][1], g_BeamColor[iOwner][2], g_PrecSprLife, 40, 0, 1)

                                        }
                                }
                        }
                }

                LastPrint = get_gametime()
        }*/

        
static iEntTestiEntTest FM_NULLENT

        
while((iEntTest find_ent_by_class(iEntTestdispenser_classname)))
        {
                if(
pev_valid(iEntTest))
                {
                        static 
entlist[3]
                        if(
find_sphere_class(iEntTestdispenser_classname300.0entlist2))
                        {                            

                        }
                }
        }

        static 
Float:entorigin[3]
        
pev(iEntpev_originentorigin)

        static 
xHP
        xHP 
pev(iEntpev_health)

        if(
xHP <= 350.0)
        {
            
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
            
write_byte(TE_SMOKE)
            
engfunc(EngFunc_WriteCoordentorigin[0] + random_float(-8.08.0))
            
engfunc(EngFunc_WriteCoordentorigin[1] + random_float(-8.08.0))
            
engfunc(EngFunc_WriteCoordentorigin[2] + random_float(25.050.0))
            
write_short(g_PrecSprSmoke)
            
write_byte(random_num(3,10))
            
write_byte(30//def: 30
            
message_end()
        }

        if(
get_user_team(iOwner) != pev(iEntDISPENSER_TEAM)) // remove o dispenser se eu mudar de time :)
        
{
            
BreakAllPlayerDispensers(iOwner// remove todos dispensers da PESSOA

            
return PLUGIN_CONTINUE
        
}

        
set_pev(iEntpev_nextthinkget_gametime() + 0.1)
    }
    
    return 
PLUGIN_CONTINUE

yagami is offline
zXCaptainXz
Member
Join Date: May 2017
Old 10-27-2022 , 15:45   Re: healing entities ?
Reply With Quote #2

Is this the part you're struggling with?
PHP Code:
/*static Float:LastPrint = 0.0

        new iOwner2 = pev(iEnt, DISPENSER_OWNER);
        new CsTeam:iOwnerTeam = cs_get_user_team(iOwner2);
        new sClassname [32];
        new Float:iTakeHp[4] = {1.0, 1.5, 2.0, 2.5};
        new Float:entHealth;
        new Float:entMaxHealth;
        new ent = -1;
        static Float:flOrigin[3]
        pev(id, pev_origin, flOrigin)

        while((ent = engfunc(EngFunc_FindEntityInSphere, ent, flOrigin, 1000.000)) != 0)
        {                
                if(pev_valid(ent))
                {
                        pev(ent, pev_health, entHealth);
                        pev(ent, pev_classname, sClassname, charsmax(sClassname));
                        pev(ent, pev_origin, flOrigin);

                        if(get_gametime() < LastPrint + 2.0)
                                server_print("%s", sClassname)

                        if(equali(sClassname, dispenser_classname))
                        {
                                server_print("Classn")

                                /*check the team by the team's pev_iuser
                                if(iOwnerTeam == pev(ent, DISPENSER_TEAM) && ent != iEnt)
                                {
                                        if(UTIL_IsVisible(id, iEnt))
                                        {
                                        // function that returns the maximum hp of the dispenser at the current level
                                        entMaxHealth == pev(ent, DISPENSER_LEVEL);

                                        if(entHealth >= entMaxHealth)
                                        {
                                                continue;
                                        }

                                        entHealth = entHealth + iTakeHp [iLevel -1] < entMaxHealth ? entHealth + iTakeHp [iLevel -1] : entMaxHealth; 

                                        set_pev( ent, pev_health, entHealth );

                                        UTIL_BeamEnts(flOrigin, g_DispOrigin[iOwner], g_BeamColor[iOwner][0], g_BeamColor[iOwner][1], g_BeamColor[iOwner][2], g_PrecSprLife, 40, 0, 1)

                                        }
                                }
                        }
                }

                LastPrint = get_gametime()
        }*/ 
zXCaptainXz is offline
yagami
Senior Member
Join Date: Jan 2021
Old 11-01-2022 , 12:23   Re: healing entities ?
Reply With Quote #3

Quote:
Originally Posted by zXCaptainXz View Post
Is this the part you're struggling with?
PHP Code:
/*static Float:LastPrint = 0.0

        new iOwner2 = pev(iEnt, DISPENSER_OWNER);
        new CsTeam:iOwnerTeam = cs_get_user_team(iOwner2);
        new sClassname [32];
        new Float:iTakeHp[4] = {1.0, 1.5, 2.0, 2.5};
        new Float:entHealth;
        new Float:entMaxHealth;
        new ent = -1;
        static Float:flOrigin[3]
        pev(id, pev_origin, flOrigin)

        while((ent = engfunc(EngFunc_FindEntityInSphere, ent, flOrigin, 1000.000)) != 0)
        {                
                if(pev_valid(ent))
                {
                        pev(ent, pev_health, entHealth);
                        pev(ent, pev_classname, sClassname, charsmax(sClassname));
                        pev(ent, pev_origin, flOrigin);

                        if(get_gametime() < LastPrint + 2.0)
                                server_print("%s", sClassname)

                        if(equali(sClassname, dispenser_classname))
                        {
                                server_print("Classn")

                                /*check the team by the team's pev_iuser
                                if(iOwnerTeam == pev(ent, DISPENSER_TEAM) && ent != iEnt)
                                {
                                        if(UTIL_IsVisible(id, iEnt))
                                        {
                                        // function that returns the maximum hp of the dispenser at the current level
                                        entMaxHealth == pev(ent, DISPENSER_LEVEL);

                                        if(entHealth >= entMaxHealth)
                                        {
                                                continue;
                                        }

                                        entHealth = entHealth + iTakeHp [iLevel -1] < entMaxHealth ? entHealth + iTakeHp [iLevel -1] : entMaxHealth; 

                                        set_pev( ent, pev_health, entHealth );

                                        UTIL_BeamEnts(flOrigin, g_DispOrigin[iOwner], g_BeamColor[iOwner][0], g_BeamColor[iOwner][1], g_BeamColor[iOwner][2], g_PrecSprLife, 40, 0, 1)

                                        }
                                }
                        }
                }

                LastPrint = get_gametime()
        }*/ 
Yes, I can't even find an entity to give you an idea

This was the only way to find class using reapi, otherwise I can't make it heal itself

PHP Code:
 static Float:fEntLife
        
new iOwner2
        
new CsTeam:iOwnerTeam 
        
new szClass[50]
        
        for(new 
0entity_count(); i++)
        {
            if(!
pev_valid(i))
                continue

            
pev(ipev_classnameszClasscharsmax(szClass))

            
pev(ipev_originflOrigin2)

            if(
equal(szClassdispenser_classname) && get_distance_f(flOrigin1flOrigin2) < 400.0 && != iEnt)
            {
                
//server_print("Got")
                //iOwnerTeam = cs_get_user_team(iOwner2);
                //iOwner2 = pev(i, DISPENSER_OWNER)
                //if(iOwnerTeam == pev(i, DISPENSER_TEAM) && iEnt != i)
                
{
                    
te_create_beam_between_entities(iEntig_PrecSprLife01102000025525530)
                    
fEntLife Float:get_entvar(ivar_health)

                    
set_entvar(ivar_healthfEntLife 3.0)

                }
            }
        }*/ 
yagami 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 22:45.


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