Senior Member
|
10-26-2022
, 19:49
healing entities ?
|
#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 iEntTest; iEntTest = FM_NULLENT
while((iEntTest = find_ent_by_class(iEntTest, dispenser_classname)))
{
if(pev_valid(iEntTest))
{
static entlist[3]
if(find_sphere_class(iEntTest, dispenser_classname, 300.0, entlist, 2))
{
}
}
}
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(iEnt, DISPENSER_OWNER)
if(!is_user_connected(iOwner))
return PLUGIN_CONTINUE
static id, fRadius, iDispHp, iLevel, iDispAp, Float:iTakeApHp
iLevel = pev(iEnt, DISPENSER_LEVEL)
if(get_pcvar_num(g_Cvar[CVAR_EFFECT_LVL_4]))
{
if(iLevel == 4)
{
if(!(pev(iEnt, pev_effects) & EF_BRIGHTFIELD))
set_pev(iEnt, pev_effects, pev(iEnt, pev_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 = 1; id <= MaxClients; id++)
{
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(id, pev_origin, flOrigin)
if(get_distance_f(g_DispOrigin[iOwner], flOrigin) <= fRadius)
{
if(UTIL_IsVisible(id, iEnt, 1))
{
if(get_user_health(id) < iDispHp)
{
if(pev(id, pev_health) < iDispHp)
{
set_pev(id, pev_health, floatmin(pev(id, pev_health) + iTakeApHp, float(iDispHp)))
if(get_pcvar_num(g_Cvar[CVAR_SHOW_LIFE_SPRITE]))
{
static iOrigin[3]
get_user_origin(id, iOrigin)
message_begin(MSG_PVS, SVC_TEMPENTITY, iOrigin)
write_byte(TE_PROJECTILE)
write_coord(iOrigin[0] + random_num(-10, 15))
write_coord(iOrigin[1] + random_num(-10, 15))
write_coord(iOrigin[2] + random_num(5, 30))
write_coord(10)
write_coord(15)
write_coord(20)
write_short(iTeam == 1 ? g_PrecSprHealLifeR : g_PrecSprHealLifeB)
write_byte(1)
write_byte(id)
message_end()
}
}
if(get_pcvar_num(g_Cvar[CVAR_SHOW_LINE_LIFE]))
UTIL_BeamEnts(flOrigin, g_DispOrigin[iOwner], g_BeamColor[iOwner][0], g_BeamColor[iOwner][1], g_BeamColor[iOwner][2], g_PrecSprLife, 40, 0, 1)
}
}
if(UTIL_IsVisible(id, iEnt, 1) && get_user_armor(id) < iDispAp)
{
if(pev(id, pev_armorvalue) < iDispAp)
{
set_pev(id, pev_armorvalue, floatmin(pev(id, pev_armorvalue) + iTakeApHp, float(iDispAp)))
}
if(get_pcvar_num(g_Cvar[CVAR_SHOW_LINE_LIFE]))
UTIL_BeamEnts(flOrigin, g_DispOrigin[iOwner], g_BeamColor[iOwner][0], g_BeamColor[iOwner][1], g_BeamColor[iOwner][2], g_PrecSprLife, 40, 0, 1)
}
}
if(UTIL_IsVisible(id, iEnt, 1) && get_distance_f(g_DispOrigin[iOwner], flOrigin) <= float(get_pcvar_num(g_Cvar[CVAR_GIVE_MONEY_DISTANCE])) && iLevel == 4 && 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(id, cs_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(id, iEnt, 1) && 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 fammo, fbammo, xUserGetWpn
xUserGetWpn = get_user_weapon(id)
switch(xUserGetWpn)
{
case CSW_P228 : fammo = 13, fbammo = 52;
case CSW_SCOUT : fammo = 10, fbammo = 90;
case CSW_MAC10 : fammo = 30, fbammo = 100;
case CSW_AUG : fammo = 30, fbammo = 90;
case CSW_ELITE : fammo = 30, fbammo = 120;
case CSW_FIVESEVEN : fammo = 20, fbammo = 100;
case CSW_UMP45 : fammo = 25, fbammo = 100;
case CSW_SG550 : fammo = 30, fbammo = 90;
case CSW_GALI : fammo = 35, fbammo = 90;
case CSW_FAMAS : fammo = 25, fbammo = 90;
case CSW_USP : fammo = 12, fbammo = 100;
case CSW_GLOCK18 : fammo = 20, fbammo = 120;
case CSW_AWP : fammo = 10, fbammo = 30;
case CSW_MP5NAVY : fammo = 30, fbammo = 120;
case CSW_M249 : fammo = 100, fbammo = 200;
case CSW_M3 : fammo = 8, fbammo = 32;
case CSW_M4A1 : fammo = 30, fbammo = 90;
case CSW_TMP : fammo = 30, fbammo = 120;
case CSW_G3SG1 : fammo = 20, fbammo = 90;
case CSW_SG552 : fammo = 30, fbammo = 90;
case CSW_AK47 : fammo = 30, fbammo = 90;
case CSW_P90 : fammo = 50, fbammo = 100;
default: continue
}
if(pev_valid(id) == 2)
{
static xUserWpn, currentAmmo, currentBammo, newAmmo, newBAmmo
xUserWpn = get_pdata_cbase(id, 373)
currentAmmo = cs_get_weapon_ammo(xUserWpn)
currentBammo = cs_get_user_bpammo(id, xUserGetWpn)
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(xUserWpn, newAmmo)
emit_sound(id, CHAN_ITEM, xBulletsSounds[random_num(0, charsmax(xBulletsSounds))], 0.3, ATTN_NORM, 0, PITCH_NORM)
}
else
{
if(newBAmmo <= fbammo)
cs_set_user_bpammo(id, xUserGetWpn, newBAmmo)
else
cs_set_user_bpammo(id, xUserGetWpn, fbammo)
emit_sound(id, CHAN_ITEM, xBulletsSounds[random_num(0, charsmax(xBulletsSounds))], 0.3, ATTN_NORM, 0, PITCH_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 iEntTest; iEntTest = FM_NULLENT
while((iEntTest = find_ent_by_class(iEntTest, dispenser_classname)))
{
if(pev_valid(iEntTest))
{
static entlist[3]
if(find_sphere_class(iEntTest, dispenser_classname, 300.0, entlist, 2))
{
}
}
}
static Float:entorigin[3]
pev(iEnt, pev_origin, entorigin)
static xHP
xHP = pev(iEnt, pev_health)
if(xHP <= 350.0)
{
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_SMOKE)
engfunc(EngFunc_WriteCoord, entorigin[0] + random_float(-8.0, 8.0))
engfunc(EngFunc_WriteCoord, entorigin[1] + random_float(-8.0, 8.0))
engfunc(EngFunc_WriteCoord, entorigin[2] + random_float(25.0, 50.0))
write_short(g_PrecSprSmoke)
write_byte(random_num(3,10))
write_byte(30) //def: 30
message_end()
}
if(get_user_team(iOwner) != pev(iEnt, DISPENSER_TEAM)) // remove o dispenser se eu mudar de time :)
{
BreakAllPlayerDispensers(iOwner) // remove todos dispensers da PESSOA
return PLUGIN_CONTINUE
}
set_pev(iEnt, pev_nextthink, get_gametime() + 0.1)
}
return PLUGIN_CONTINUE
}
|
|