Have Fun!
credit by me...
Now go to WarZ_Server.sln
search:
add below:
search:
add below:
search:
add below:
search:
add below:
search:
add below in the function Notice it and put it on top:
search:
add below:
search:
add below:
search:
add below:
search:
put on top:
search:
put on top:
Now go to WarZ.sln
search:
add below to observe:
search:
put on top:
search:
add below:
search:
add below:
search:
add below:
search:
add below:
Now go to ItemsDB.xml:
credit by me...
Now go to WarZ_Server.sln
search:
C++:
PKT_C2C_ChatMessage, // client sends to server chat message, server will relay it to everyone except for sender
add below:
C++:
PKT_C2C_Mercybandages,
search:
C++:
struct PKT_C2C_ChatMessage_s : public DefaultPacketMixin<PKT_C2C_ChatMessage>
add below:
C++:
struct PKT_C2C_Mercybandages_s : public DefaultPacketMixin<PKT_C2C_Mercybandages>
{
gp2pnetid_t PlayerID;
float Cooldown;
};
search:
C++:
m_lastTimeUsedConsumable = -99999.0f;
add below:
C++:
// There will be 2 of them when searching for both of them as well.
C++:
m_lastTimeUsedMercybandages = -99999.0f;
m_currentMercybandagesCooldownTime = 0;
search:
C++:
loadout_->Health -= d;
add below:
C++:
const HeroConfig* mercylol = g_pWeaponArmory->getHeroConfig(loadout_->HeroItemID);
if (mercylol && mercylol->m_ABMercy == 1)
{
if(loadout_->Health >= 0)
{
if(loadout_->Health < mercylol->m_ABHealth)
{
if((r3dGetTime() - m_lastTimeUsedMercybandages) > m_currentMercybandagesCooldownTime) //NoCooldown //Mercybandages
{
if((r3dGetTime() - m_lastTimeUsedConsumable) < m_currentConsumableCooldownTime)
{
}
else
{
m_lastTimeUsedMercybandages = r3dGetTime();
m_currentMercybandagesCooldownTime = mercylol->m_ABCooldown;
gServerLogic.MercybandagesSend(this,mercylol->m_ABCooldown);
loadout_->Health = 100.0f;
m_lastTimeUsedConsumable = r3dGetTime();
m_currentConsumableCooldownTime = 5;
}
}
}
}
}
search:
C++:
if((r3dGetTime()-m_lastTimeUsedConsumable)<(m_currentConsumableCooldownTime*0.95f))
add below in the function Notice it and put it on top:
C++:
m_lastTimeUsedConsumable = GPP_Data.c_fConsumableCooldownTimeTier[itmC->m_LevelRequired];
C++:
m_lastTimeUsedConsumable = GPP_Data.c_fConsumableCooldownTimeTier[itmC->m_LevelRequired];
const HeroConfig* mercylol = g_pWeaponArmory->getHeroConfig(loadout_->HeroItemID);
if (mercylol && mercylol->m_ABMercy == 1)
{
m_lastTimeUsedMercybandages = r3dGetTime();
m_currentMercybandagesCooldownTime = 5;
}
}
}
search:
C++:
float m_currentConsumableCooldownTime;
add below:
C++:
float m_lastTimeUsedMercybandages;
float m_currentMercybandagesCooldownTime;
search:
C++:
void ServerGameLogic::GiveDevEventLoadout(DWORD peerId)
add below:
C++:
void ServerGameLogic::MercybandagesSend(obj_ServerPlayer* plr, float m_ABCooldown)
{
PKT_C2C_Mercybandages_s n;
n.Cooldown = m_ABCooldown;
p2pSendToPeer(plr->peerId_, plr, &n, sizeof(n));
}
search:
C++:
void GetSpawnPositionAfterDeath2(const r3dPoint3D& GamePos, r3dPoint3D* pos, float* dir);
add below:
C++:
void MercybandagesSend(obj_ServerPlayer* plr, float m_ABCooldown);
search:
C++:
r3d_assert(m_HeadMeshes.size() == 0);
put on top:
C++:
m_ABMercy = xmlHero.child("BandagesAuto").attribute("OnOff").as_int();
m_ABHealth = xmlHero.child("BandagesAuto").attribute("Health").as_int();
m_ABCooldown = xmlHero.child("BandagesAuto").attribute("Cooldown").as_float();
search:
C++:
int m_ProtectionLevel;
put on top:
C++:
int m_ABMercy;
int m_ABHealth;
float m_ABCooldown;
Now go to WarZ.sln
search:
C++:
R3DPROFILE_FUNCTION("obj_Player::OnCreate");
add below to observe:
C++:
lastTimeAirHornUse = 0.0f;
C++:
lastTimeUsedMercybandages = -99999.0f;
search:
C++:
// show FPS and PING
put on top:
C++:
const HeroConfig* mercylol = g_pWeaponArmory->getHeroConfig(CurLoadout.HeroItemID);
if (NetworkLocal && mercylol && mercylol->m_ABMercy == 1 && !d_video_spectator_mode->GetBool() && gClientLogic().localPlayer_)
{
if((r3dGetTime() - lastTimeUsedMercybandages) < currentMercybandagesCooldownTime) //HaveCooldown
{
float time = mercylol->m_ABCooldown - (r3dGetTime() - lastTimeUsedMercybandages);
if (time>0)
{
Font_Editor->PrintF(10, 85, r3dColor(255,0,255), "Skill Delay : %.1f", time); //Mercybandages
}
}
}
search:
C++:
float m_SpawnProtectedUntil;
add below:
C++:
float lastTimeUsedMercybandages;
float currentMercybandagesCooldownTime;
search:
C++:
IMPL_PACKET_FUNC(ClientGameLogic, PKT_C2C_ChatMessage)
add below:
C++:
IMPL_PACKET_FUNC(ClientGameLogic, PKT_C2C_Mercybandages)
{
obj_Player* plr = gClientLogic().localPlayer_;
plr->lastTimeUsedMercybandages = r3dGetTime();
plr->currentMercybandagesCooldownTime = n.Cooldown;
SoundSys.PlayAndForget(SoundSys.GetEventIDByPath("Sounds/UI Events/User_Action/User_Action_Use_Bandage"), plr->GetPosition());
plr->CurLoadout.Health = 100;
plr->m_BandagesEffectTime = r3dGetTime() + 0.5f;
plr->lastTimeUsedConsumable = r3dGetTime();
plr->currentConsumableCooldownTime = 5;
}
search:
C++:
DEFINE_PACKET_HANDLER(PKT_C2C_ChatMessage);
add below:
C++:
DEFINE_PACKET_HANDLER(PKT_C2C_Mercybandages);
search:
C++:
DEFINE_PACKET_FUNC(PKT_C2C_ChatMessage);
add below:
C++:
DEFINE_PACKET_FUNC(PKT_C2C_Mercybandages);
Now go to ItemsDB.xml:
Rich (BB code):
<BandagesAuto OnOff="1" Health="19" Cooldown="30"/>