- Joined
- Jan 21, 2013
- Messages
- 158
- Reaction score
- 53
Its easy to skip damage if you are a dev 
Last edited:
Or make a god armor if you don't know how to make the godmode.
int GetPlayerStruct(peerInfo_s& pr, const char* user);
int Cmd_SetPlayerVitals(obj_ServerPlayer* plr, const char* cmd);
if(strncmp(cmd, "/sv", 3) == 0 && plr->profile_.ProfileData.isDevAccount)
return Cmd_SetVitals(plr, cmd);
if(strncmp(cmd, "/spv", 4) == 0 && plr->profile_.ProfileData.isDevAccount)
return Cmd_SetPlayerVitals(plr, cmd);
int ServerGameLogic::GetPlayerStruct(peerInfo_s& pr, const char* user)
{
for(int i=0; i<MAX_PEERS_COUNT; ++i)
{
pr = GetPeer(i);
if (pr.status_ == PEER_PLAYING && pr.player && (strcmp(pr.player->userName, user) == 0) )
return 1;
}
return 0;
}
int ServerGameLogic::Cmd_SetPlayerVitals(obj_ServerPlayer* plr, const char* cmd)
{
char buf[128];
char user[128];
int v1, v2, v3, v4;
peerInfo_s pr;
if(6 != sscanf(cmd, "%s %s %d %d %d %d", buf, user, &v1, &v2, &v3, &v4))
return 2;
if (GetPlayerStruct(pr, user))
{
pr.player->loadout_->Health = (float)v1;
pr.player->loadout_->Hunger = (float)v2;
pr.player->loadout_->Thirst = (float)v3;
pr.player->loadout_->Toxic = (float)v4;
r3dOutToLog("Cmd_SetPlayervitals: %s was given %f, %f, %f and %f\n", user, v1, v2, v3, v4);
return 0;
}
r3dOutToLog("Cmd_SetPlayerVitals: Player %s not Found!", user);
return 2;
}
r3dOutToLog("Cannot fine: %s!\n", user);
}
r3dOutToLog("There was an Error while Searching for Players!\n");
return 2;
}
r3dOutToLog("Cmd_TPMTP: Cannot find: %s!\n", user);
return 2;
int Cmd_GivePlayerItem(obj_ServerPlayer* plr, const char* cmd);
if(strncmp(cmd, "/gi", 3) == 0 && plr->profile_.ProfileData.isDevAccount)
return Cmd_GiveItem(plr, cmd);
if(strncmp(cmd, "/gpi", 4) == 0 && plr->profile_.ProfileData.isDevAccount)
return Cmd_GivePlayerItem(plr, cmd);
int ServerGameLogic::Cmd_GivePlayerItem(obj_ServerPlayer* plr, const char* cmd)
{
char buf[128];
char user[128];
int itemid, amount;
peerInfo_s pr;
if(4 != sscanf(cmd, "%s %s %d %d", buf, user, &itemid, &amount))
return 2;
if (GetPlayerStruct(pr, user))
{
if(g_pWeaponArmory->getConfig(itemid) == NULL) {
r3dOutToLog("Cmd_GiveItem: no item %d\n", itemid);
return 3;
}
wiInventoryItem wi;
wi.itemID = itemid;
wi.quantity = amount;
pr.player->BackpackAddItem(wi);
return 0;
}
r3dOutToLog("Cmd_GivePlayerItem: Player %s not Found!", user);
return 2;
}
bool obj_Zombie::IsPlayerDetectable(const obj_ServerPlayer* plr, float dist)
{
if(plr->loadout_->Alive == 0)
return false;
if (plr->GodMode == 2)
return false;
bool obj_Zombie::SenseWeaponFire(const obj_ServerPlayer* plr, const ServerWeapon* wpn)
{
if(ZombieState == EZombieStates::ZState_Dead)
return false; // no attack while dead.
if(ZombieState == EZombieStates::ZState_Waking)
return false; // give him time to wake!
if (plr->GodMode == 2)
return false;
case EZombieStates::ZState_Attack:
{
obj_ServerPlayer* trg = IsServerPlayer(GameWorld().GetObject(hardObjLock));
if(!trg || trg->loadout_->Alive == 0 || trg->GodMode == 2)
float deathTime;
void DoDeath();
int GodMode;
FireHitCount = 0;
GodMode = 0;
int ProcessChatCommand(obj_ServerPlayer* plr, const char* cmd);
int Cmd_GodMode(obj_ServerPlayer* plr, const char* cmd);
bool ServerGameLogic::ApplyDamageToPlayer(GameObject* fromObj, obj_ServerPlayer* targetPlr, const r3dPoint3D&
dmgPos, float damage, int bodyBone, int bodyPart, bool force_damage, STORE_CATEGORIES damageSource, int airState
)
{
r3d_assert(fromObj);
r3d_assert(targetPlr);
if(targetPlr->loadout_->Alive == 0)
return false;
if(targetPlr->GodMode)
return false;
int ServerGameLogic::ProcessChatCommand(obj_ServerPlayer* plr, const char* cmd)
{
r3dOutToLog("cmd: %s admin:%d\n", cmd, plr->profile_.ProfileData.isDevAccount);
if(strncmp(cmd, "/gm", 3) == 0 && plr->profile_.ProfileData.isDevAccount)
return Cmd_GodMode(plr, cmd);
int ServerGameLogic::Cmd_GodMode(obj_ServerPlayer* plr, const char* cmd){
char buf[128];
int onoff;
sscanf(cmd, "%s %d", buf, &onoff);
plr->GodMode = onoff;
r3dOutToLog("Setting godmode for %s to %d!", plr->userName, onoff);
return 0;
}
New GodMode command (not fully tested, pretty alone atm on my srv, should work for player<->player, tested with zombies):
Added /gm command to give player godmode status on or off (leading to ApplyDamageToPlayer() ineffective and/or Zombies attitude):
Needed Files to be changed:
\WarZ Game Server\sobj_Zombie.cpp
\WarZ Game Server\obj_ServerPlayer.h
\WarZ Game Server\obj_ServerPlayer.cpp
\WarZ Game Server\ServerGameLogic.cpp
\WarZ Game Server\ServerGameLogic.h
sobj_Zombie.cpp:
-----------------
Look for:
Add:Code:bool obj_Zombie::IsPlayerDetectable(const obj_ServerPlayer* plr, float dist) { if(plr->loadout_->Alive == 0) return false;
Code:if (plr->GodMode == 2) return false;
Look for:
Add:Code:bool obj_Zombie::SenseWeaponFire(const obj_ServerPlayer* plr, const ServerWeapon* wpn) { if(ZombieState == EZombieStates::ZState_Dead) return false; // no attack while dead. if(ZombieState == EZombieStates::ZState_Waking) return false; // give him time to wake!
obj_ServerPlayer.hCode:if (plr->GodMode == 2) return false;
------------------
Look for:
AddCode:float deathTime; void DoDeath();
Code:int GodMode;
obj_ServerPlayer.cpp
--------------------
in function obj_ServerPlayer::OnCreate():
Look for:
Add:Code:FireHitCount = 0;
Code:GodMode = 0;
ServerGameLogic.h
------------------
Look for:
Add:Code:int ProcessChatCommand(obj_ServerPlayer* plr, const char* cmd);
Code:int Cmd_GodMode(obj_ServerPlayer* plr, const char* cmd);
ServerGameLogic.cpp
Look For:
Add below:Code:bool ServerGameLogic::ApplyDamageToPlayer(GameObject* fromObj, obj_ServerPlayer* targetPlr, const r3dPoint3D& dmgPos, float damage, int bodyBone, int bodyPart, bool force_damage, STORE_CATEGORIES damageSource, int airState ) { r3d_assert(fromObj); r3d_assert(targetPlr); if(targetPlr->loadout_->Alive == 0) return false;
Code:if(targetPlr->GodMode) return false;
Look for:
Add below:Code:int ServerGameLogic::ProcessChatCommand(obj_ServerPlayer* plr, const char* cmd) { r3dOutToLog("cmd: %s admin:%d\n", cmd, plr->profile_.ProfileData.isDevAccount);
Code:if(strncmp(cmd, "/gm", 3) == 0 && plr->profile_.ProfileData.isDevAccount) return Cmd_GodMode(plr, cmd);
Add Below the ProcessChatCommand
How-To-Use: /gm [status]Code:int ServerGameLogic::Cmd_GodMode(obj_ServerPlayer* plr, const char* cmd){ char buf[128]; int onoff; sscanf(cmd, "%s %d", buf, &onoff); plr->GodMode = onoff; r3dOutToLog("Setting godmode for %s to %d!", plr->userName, onoff); return 0; }
where
[status] = 0 -> godmode OFF
[status] = 1 -> godmode ON but detectable by zombies
[status] = 2 -> godmode ON and not detectable by Zombies
Hint: even with GodMode=2, zombie if hit *will* begin to walk toward sound origin but won't attack
thanks but i got it eventually.That means: after the ProcessChatCommand function in ServerGameLogic.cpp file, add this code, which is a new function.
For me it allways Just say Player reported