Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*****************************************************
- Fuck tutorial by blackshark
- Development by DouglasPro
- *****************************************************/
- In WarZ_Server.sln -> Server Solution
- Search for That (In obj_ServerPlayer.cpp):
- Add:
- #include "MasterServerLogic.h"
- void obj_ServerPlayer::OnNetPacket(const PKT_C2S_FallingDamage_s& n)
- {
- r3dOutToLog("Falling damage to %s, damage=%.2f\n", Name.c_str(), n.damage); CLOG_INDENT;
- //r3dOutToLog("Falling damage Disable\n", Name.c_str(), n.damage); CLOG_INDENT; // No Damage Enabled
- if (!profile_.ProfileData.isDevAccount)
- {
- gServerLogic.ApplyDamage(this, this, GetPosition(), n.damage, true, storecat_INVALID);
- }
- }
- And Add below:
- void obj_ServerPlayer::OnNetPacket(const PKT_C2S_BlackShark_ValidateEnvironment_s& n)//DouglasPro:: player time !!!
- {
- r3dOutToLog("%s lastCurTime %.2f , CurTime %.2f\n",userName,lastCurTime,n.CurTime);
- if (fabs(n.CurTime - lastCurTime) < 0.01f && !firstTime) //
- {
- char msg[512];
- sprintf(msg,"lastCurTime %.2f , CurTime %.2f\n",lastCurTime,n.CurTime);
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- //gServerLogic.DisconnectPeer(peerId_,true,msg)
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);;
- return;
- }
- if (firstTime)
- {
- firstTime = false;
- lastCurTime = n.CurTime;
- }
- lastCurTime = n.CurTime;
- }
- void obj_ServerPlayer::OnNetPacket(const PKT_C2S_BlackShark_BulletValidateConfig_s& n)//DouglasPro:: check bullet !!!
- {
- // not need to check weapons. this is for bullet , not weapon.
- const WeaponConfig* wc = g_pWeaponArmory->getWeaponConfig((uint32_t)n.m_itemId);
- bool heHaveWep = false; //DouglasPro:: the weapons need to sync with servers.
- for (int i = 0; i<2;i++)
- {
- ServerWeapon* wpn = m_WeaponArray[i];
- if (!wpn)
- continue;
- if (wpn->m_pConfig->m_itemID == (uint32_t)n.m_itemId && wc == wpn->m_pConfig) //DouglasPro:: yeah he have this weapon
- {
- heHaveWep = true;
- break;
- }
- }
- if (!wc && n.m_itemId != 0 || !heHaveWep) //DouglasPro:: itemDB.xml or weapon not sync with servers. disconnect him!
- {
- // i think he have a problem. not all % he cheats.
- gServerLogic.DisconnectPeer(peerId_,false,"BulletValidate: %s weapon not sync with servers. itemid %d",userName,n.m_itemId);
- return;
- }
- // used for debug.
- //r3dOutToLog("PKT_C2S_BulletValidateConfig_s from %s , speed %.2f , mass %.2f , svspeed %.2f , svmass %.2f\n",userName,n.m_AmmoSpeed,n.m_AmmoMass,(float)wc->m_AmmoSpeed,(float)wc->m_AmmoMass);
- char msg[512];
- if (fabs((float)wc->m_AmmoMass - n.m_AmmoMass) > 0.01f) //DouglasPro:: no bullet drop hack.
- {
- sprintf(msg,"m_AmmoMass not match itemid:%d sv:%.2f , cl:%.2f\n",n.m_itemId,(float)wc->m_AmmoMass,n.m_AmmoMass);
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- r3dOutToLog(msg);
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
- //gServerLogic.DisconnectPeer(peerId_,true,msg);
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
- return;
- }
- else if (fabs((float)wc->m_AmmoSpeed - n.m_AmmoSpeed) > 0.01f) //DouglasPro:: instant hit hack.
- {
- sprintf(msg,"m_AmmoSpeed not match itemid:%d sv:%.2f , cl:%.2f\n",n.m_itemId,(float)wc->m_AmmoSpeed,n.m_AmmoSpeed);
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- r3dOutToLog(msg);
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
- //gServerLogic.DisconnectPeer(peerId_,true,msg);
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
- return;
- }
- }
- void obj_ServerPlayer::OnNetPacket(const PKT_C2S_BlackShark_PlayerState_s& n)//DouglasPro:: coded by me
- {
- // NOTE: STATE NEED TO SYNC WITH SERVER!
- char msg[512];
- if (!profile_.ProfileData.isDevAccount)
- {
- if (n.state == PLAYER_MOVE_SPRINT)
- {
- // for this check only forward speed. cannot move backward.
- if (n.accel.z > 5.46f)
- {
- sprintf(msg,"SpeedHack PLAYER_MOVE_SPRINT cl:%.2f\n",n.accel.z);
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- r3dOutToLog(msg);
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
- //gServerLogic.DisconnectPeer(peerId_,true,msg);
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
- return;
- }
- }
- else if (n.state == PLAYER_MOVE_RUN)
- {
- if (n.accel.z > 3.64f || n.accel.z < -2.73f)
- {
- sprintf(msg,"SpeedHack PLAYER_MOVE_RUN cl:%.2f\n",n.accel.z);
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- r3dOutToLog(msg);
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
- //gServerLogic.DisconnectPeer(peerId_,true,msg);
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
- return;
- }
- }
- else if (n.state == PLAYER_MOVE_WALK_AIM)//DouglasPro:: fuckkk
- {
- if (n.accel.z > 2.08f || n.accel.z < -1.56f)
- {
- sprintf(msg,"SpeedHack PLAYER_MOVE_WALK_AIM cl:%.2f\n",n.accel.z);
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- r3dOutToLog(msg);
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
- //gServerLogic.DisconnectPeer(peerId_,true,msg);
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
- return;
- }
- }
- else if (n.state == PLAYER_MOVE_CROUCH)//DouglasPro:: fuck hackers noob !!!
- {
- if (n.accel.z > 1.46f || n.accel.z < -1.10f)
- {
- sprintf(msg,"SpeedHack PLAYER_MOVE_CROUCH cl:%.2f\n",n.accel.z);
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- r3dOutToLog(msg);
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
- //gServerLogic.DisconnectPeer(peerId_,true,msg);
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
- return;
- }
- }
- else if (n.state == PLAYER_MOVE_CROUCH_AIM)//DouglasPro:: check player speed !!
- {
- if (n.accel.z > 0.83f || n.accel.z < -0.65f)
- {
- sprintf(msg,"SpeedHack PLAYER_MOVE_CROUCH_AIM cl:%.2f\n",n.accel.z);
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- r3dOutToLog(msg);
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
- //gServerLogic.DisconnectPeer(peerId_,true,msg);
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
- return;
- }
- }
- else if (n.state == PLAYER_MOVE_PRONE)//DouglasPro:: checking speed hack !!
- {
- if (n.accel.z > 0.73f || n.accel.z < -0.55f)
- {
- sprintf(msg,"SpeedHack PLAYER_MOVE_PRONE cl:%.2f\n",n.accel.z);
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- r3dOutToLog(msg);
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
- //gServerLogic.DisconnectPeer(peerId_,true,msg);
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
- return;
- }
- }
- }
- }
- void obj_ServerPlayer::OnNetPacket(const PKT_C2S_BlackShark_WpnLog_s& n)
- {
- const WeaponConfig* wc = g_pWeaponArmory->getWeaponConfig((uint32_t)n.itemid);
- LastWpnLog = r3dGetTime();
- ServerWeapon* wpn = m_WeaponArray[n.slot];
- if (!wc && n.itemid != 0) // not match.
- {
- gServerLogic.DisconnectPeer(peerId_,true,"WpnLog not match. itemid:%d",n.itemid);
- return;
- }
- // NOTE : THIS IS VERY IMPORTANT CODE. IF FAILED THIS PLAYER WILL GET BANNED BY ERROR SYSTEM.
- float spread = (float)wc->m_spread; spread = spread * (1.0f+n.m_spreadattm);
- spread *= 0.5f;
- // SKILL SYNC CODE
- if (loadout_->Stats.skillid9)
- spread *= 0.8f;
- float recoil = (float)wc->m_recoil;
- recoil = recoil * (1.0f+n.m_recoilattm);
- // SKILL SYNC CODE
- if (loadout_->Stats.skillid11)
- recoil *= 0.8f;
- recoil *= 0.05f;//DouglasPro:: recoil
- //DouglasPro:: copy from client.
- float fireDelay = (float)wc->m_fireDelay;
- int firerate = (int)ceilf(60.0f / fireDelay); // convert back to rate of fire
- firerate = (int)ceilf(float(firerate) * (1.0f+n.m_rateattm)); // add bonus , but i will use value by client. it's not sync with servers.
- fireDelay = 60.0f / firerate; // convert back to fire delay
- float fireRatePerc = 0.0f;
- float adjInPerc = (fireDelay / 100.0f) * fireRatePerc;
- fireDelay -= adjInPerc;
- //DouglasPro:: MasterServerLogic::SendNoticeMsg(msg , ...)
- char msg[512];
- if (fabs((float)spread - (float)n.m_spread) > 0.01f) // spread hack
- {
- sprintf(msg,"m_spread not match itemid:%d sv:%.2f , cl:%.2f\n",n.itemid,spread,n.m_spread);
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- r3dOutToLog(msg);
- //gServerLogic.DisconnectPeer(peerId_,true,"m_spread not match itemid:%d sv:%.2f , cl:%.2f",n.itemid,wc->m_spread,n.m_spread);
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
- return;
- }
- else if (fabs((float)recoil - (float)n.m_recoil) > 0.01f) //DouglasPro:: recoil hack.
- {
- sprintf(msg,"m_recoil not match itemid:%d sv:%.2f , cl:%.2f\n",n.itemid,recoil,n.m_recoil);
- r3dOutToLog(msg);
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Killed Recoil hack '%s'",userName);
- //gServerLogic.DisconnectPeer(peerId_,true,"m_recoil not match itemid:%d sv:%.2f , cl:%.2f",n.itemid,wc->m_recoil,n.m_recoil);
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
- return;
- }
- else if (fabs((float)fireDelay - (float)n.m_rateoffire) > 0.01f) //DouglasPro:: rapid fire hack.
- {
- sprintf(msg,"m_rateoffire not match itemid:%d sv:%.2f , cl:%.2f\n",n.itemid,fireDelay,n.m_rateoffire);
- r3dOutToLog(msg);
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Killed Rapid fire '%s'",userName);
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
- //gServerLogic.DisconnectPeer(peerId_,true,"m_rateoffire not match itemid:%d sv:%.2f , cl:%.2f",n.itemid,fireDelay,n.m_rateoffire);
- return;
- }
- // STEP 2 - TPROGAME NO RECOIL LOGIC
- // USED m_recoil2
- recoil *= 1.1f; // recoil = getRecoil()*1.1f;
- if (fabs((float)recoil - (float)n.m_recoil2) > 0.01f) //DouglasPro:: RECOIL HACK
- {
- sprintf(msg,"m_recoil2 not match itemid:%d sv:%.2f , cl:%.2f\n",n.itemid,recoil,n.m_recoil2);
- r3dOutToLog(msg);
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Killed Recoil Hack '%s'",userName);
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
- //gServerLogic.DisconnectPeer(peerId_,true,msg);
- return;
- }
- }
- Now Search for This:
- Code:
- void obj_ServerPlayer::OnNetPacket(const PKT_C2S_PlayerWeapDataRep_s& n)
- IMPORTANT: CHANGE FULL FUNCTION FOR THIS:
- Code:
- Code:
- void obj_ServerPlayer::OnNetPacket(const PKT_C2S_PlayerWeapDataRep_s& n)
- {
- lastWeapDataRep = r3dGetTime();
- // if weapon data was updated more that once it mean that updated happened in middle of the game
- // so skip validation
- if(gServerLogic.weaponDataUpdates_ >= 2)
- return;
- for(int i=0; i<2; i++)
- {
- if(m_WeaponArray[i] == NULL)
- continue;
- DWORD hash = m_WeaponArray[i]->getConfig()->GetClientParametersHash();
- if(hash == n.weaponsDataHash[i])
- continue;
- const WeaponConfig& wc1 = *m_WeaponArray[i]->getConfig();
- WeaponConfig wc2(n.debug_wid[i]);
- wc2.copyParametersFrom(n.debug_winfo[i]);
- if(wc1.m_itemID != wc2.m_itemID)
- {
- gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_Protocol, false, "weapDataRep different",
- "slot%d %d - %d", i, wc1.m_itemID, wc2.m_itemID);
- }
- else
- {
- // create diffs string for logging
- char diffs[4096] = "";
- if(fabs((float)wc1.m_spread - (float)wc2.m_spread) > 0.01f)
- sprintf(diffs + strlen(diffs), "spread:%.2f/%.2f ", (float)wc1.m_spread, (float)wc2.m_spread);
- if(fabs((float)wc1.m_recoil - (float)wc2.m_recoil) > 0.01f)
- sprintf(diffs + strlen(diffs), "recoil:%.2f/%.2f ", (float)wc1.m_recoil, (float)wc2.m_recoil);
- if(fabs((float)wc1.m_reloadTime - (float)wc2.m_reloadTime) > 0.01f)
- sprintf(diffs + strlen(diffs), "reloadtime:%.2f/%.2f ", (float)wc1.m_reloadTime, (float)wc2.m_reloadTime);
- if(fabs((float)wc1.m_fireDelay - (float)wc2.m_fireDelay) > 0.01f)
- sprintf(diffs + strlen(diffs), "rateoffire:%.2f/%.2f ", (float)wc1.m_fireDelay, (float)wc2.m_fireDelay);
- if(fabs((float)wc1.m_AmmoSpeed - (float)wc2.m_AmmoSpeed) > 0.01f)
- sprintf(diffs + strlen(diffs), "ammospeed:%.2f/%.2f ", (float)wc1.m_AmmoSpeed, (float)wc2.m_AmmoSpeed);
- // report it only once per session (for now, because there is no disconnect yet)
- if(diffs[0] && !weapCheatReported)
- { //DouglasPRO:: BlackShark Banned Players FuckShit Fuck Hammepoint Fuck InfestationW fuck HATERS FUCKK ALL ...
- char chatmessage[128] = {0};
- //g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,diffs));
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Kick Player '%s'",userName);
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
- weapCheatReported = true;
- gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_BadWeapData, false, "BLACKSHARK DETECT weapDataRep different",
- "id:%d, diff:%s", wc1.m_itemID, diffs);
- }
- //DouglasPro:: automatic ban.
- if(diffs[0])
- {
- char chatmessage[128] = {0};
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,diffs));
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
- }
- }
- }
- }
- Now in obj_ServerPlayer.h, Search for this:
- void OnNetPacket(const PKT_C2S_FallingDamage_s& n);
- And add Below:
- Code:
- //DouglasPro:: for BlackShark Anti-cheating
- void OnNetPacket(const PKT_C2S_BlackShark_BulletValidateConfig_s& n);
- void OnNetPacket(const PKT_C2S_BlackShark_BulletValidateConfig_s& n);
- void OnNetPacket(const PKT_C2S_BlackShark_PlayerState_s& n);
- void OnNetPacket(const PKT_C2S_BlackShark_WpnLog_s& n);
- Search for this:
- bool isTargetDummy_;
- Add Below:
- //DouglasPro:: for Black Shark
- float lastCurTime;
- bool firstTime;
- Search for that:
- Code:
- float m_Stamina;
- Add Below:
- Code:
- float LastWpnLog;//DouglasPro:: logs in DB
- Now, Search for this (in P2PMessages.h):
- Code:
- struct PKT_S2C_SetPlayerReputation_s : public DefaultPacketMixin<PKT_S2C_SetPlayerReputation>
- {
- int Reputation;
- };
- IF YOU DON'T FOUND THIS, SEARCH FOR THAT:
- Code:
- struct PKT_C2S_DBG_LogMessage_s : public DefaultPacketMixin<PKT_C2S_DBG_LogMessage>
- {
- char msg[128];
- };
- Add Below:
- //DouglasPro:: check logs in DB
- struct PKT_C2S_WpnLog_s : public DefaultPacketMixin<PKT_C2S_WpnLog>
- {
- float m_spread;
- float m_recoil;
- float m_AmmoSpeed;
- float m_AmmoMass;
- float m_AmmoDamage;
- DWORD itemid;
- DWORD slot;
- float m_recoilattm;
- float m_spreadattm;
- float m_rateoffire;
- float m_rateattm;
- float m_spread2;
- float m_recoil2;
- };
- //DouglasPro:: check bullet hack
- struct PKT_C2S_BlackShark_BulletValidateConfig_s : public DefaultPacketMixin<PKT_C2S_BulletValidateConfig>
- {
- int m_itemId;
- float m_AmmoMass;
- float m_AmmoSpeed;
- };
- //DouglasPro::: check time cheat
- struct PKT_C2S_BlackShark_ValidateEnvironment_s : public DefaultPacketMixin<PKT_C2S_ValidateEnvironment>
- {
- float CurTime;
- };
- struct PKT_C2S_BlackShark_UpdateEnvironment_s : public DefaultPacketMixin<PKT_S2C_UpdateEnvironment>
- {
- bool rain;
- };
- //DouglasPro:: check player speed
- struct PKT_C2S_BlackShark_PlayerState_s : public DefaultPacketMixin<PKT_C2S_PlayerState>
- {
- r3dPoint3D accel;
- int state;
- };
- Search for That:
- PKT_S2C_SetPlayerReputation,
- Or if you don't found
- PKT_C2S_DBG_LogMessage,
- Add Below:
- //**********************************
- //DouglasPro:: paket for blackshark !!
- PKT_C2S_BlackShark_BulletValidateConfig,
- PKT_C2S_BlackShark_ValidateEnvironment,
- PKT_S2C_BlackShark_UpdateEnvironment,
- PKT_C2S_BlackShark_WpnLog,
- PKT_C2S_BlackShark_PlayerState,
- //**********************************
- Now in AsyncFuncs.cpp, Search for:
- CJobProcessUserJoin::CJobProcessUserJoin(int in_peerId) : CAsyncApiJob()
- {
- sprintf(desc, "CJobProcessUserJoin[%d] %p", CustomerID, this);
- ServerGameLogic::peerInfo_s& peer = gServerLogic.GetPeer(in_peerId);
- r3d_assert(peer.startGameAns == 0);
- peerId = in_peerId;
- CustomerID = peer.CustomerID;
- SessionID = peer.SessionID;
- CharID = peer.CharID;
- r3d_assert(CustomerID);
- r3d_assert(CharID);
- }
- Add Below:
- CJobBanID::CJobBanID(int in_CustomerID , char reason1[512]) : CAsyncApiJob()//DouglasPro:: Execute punish black shark !!!!
- {
- sprintf(desc, "CJobBanID[%d] %p", in_CustomerID, this);
- CustomerID = in_CustomerID;
- sprintf(reason,reason1);
- r3d_assert(CustomerID);
- }
- void CJobBanID::OnSuccess()
- {
- }
- int CJobBanID::Exec()//DouglasPro:: Execute punish black shark !!!!
- {
- CWOBackendReq req("api_BanID.aspx");
- req.AddSessionInfo(CustomerID, SessionID);
- req.AddParam("CustomerID", CustomerID);
- req.AddParam("reason", reason);
- if (!req.Issue())
- r3dOutToLog("apiBanID Failed. Code %d\n",req.resultCode_);
- else
- r3dOutToLog("apiBanID %d Success\n",CustomerID);
- return 0;
- }
- Now in AsyncFuncs.h, search for it:
- class CJobProcessUserJoin : public CAsyncApiJob
- {
- CServerUserProfile prof;
- int GameJoinResult;
- public:
- CJobProcessUserJoin(int in_peerId);
- int Exec();
- void OnSuccess();
- };
- Add Below:
- class CJobBanID : public CAsyncApiJob//DouglasPro
- {
- public:
- CJobBanID(int in_CustomerID , char reason1[512]);
- char reason[512];
- int Exec();
- void OnSuccess();
- };
- Now, in MasterServerLogic.cpp, Search for this:
- FIRST ADD:
- #include "ServerGameLogic.h"
- void MasterServerLogic::FinishGame()
- {
- if(net_ == NULL)
- return;
- CREATE_PACKET(SBPKT_G2M_FinishGame, n);
- net_->SendToHost(&n, sizeof(n), true);
- return;
- }
- Add Below:
- void MasterServerLogic::BlackShark_SendNoticeMsg(const char* msg , ...)
- {
- if(net_ == NULL)
- return;
- char buf[1024];
- va_list ap;
- va_start(ap, msg);
- StringCbVPrintfA(buf, sizeof(buf), msg, ap);
- va_end(ap);
- CREATE_PACKET(SBPKT_G2M_BlackShark_SendNoticeMsg, n);
- r3dscpy(n.msg,buf);
- net_->SendToHost(&n, sizeof(n), true);
- r3dOutToLog("BrostCast Notice Msg to all servers. '%s'\n",buf);
- return;
- }
- Now Search for this:
- case SBPKT_M2G_UpdateWeaponData:
- {
- const SBPKT_M2G_UpdateWeaponData_s& n = *(SBPKT_M2G_UpdateWeaponData_s*)packetData;
- r3d_assert(sizeof(n) == packetSize);
- /*
- WeaponConfig* wc = const_cast<WeaponConfig*>(g_pWeaponArmory->getWeaponConfig(n.itemId));
- if(wc == NULL) {
- r3dOutToLog("!!! got update for not existing weapon %d\n", n.itemId);
- return;
- }
- wc->copyParametersFrom(n.wi);
- //r3dOutToLog("got update for weapon %s\n", wc->m_StoreName);
- */
- break;
- }
- Add Below:
- case SBPKT_G2M_BlackShark_SendNoticeMsg:
- {//DouglasPro:: send notice all servers !!!
- const SBPKT_G2M_SendNoticeMsg_s& n = *(SBPKT_G2M_SendNoticeMsg_s*)packetData;
- r3d_assert(sizeof(n) == packetSize);
- r3dOutToLog("Received notice packet from master. msg '%s' , brostcast to all players.\n",n.msg);
- // brostcast by chat packet.
- PKT_C2C_ChatMessage_s n1;
- r3dscpy(n1.gamertag, "<BlackShark>");
- r3dscpy(n1.msg, n.msg);
- n1.msgChannel = 1;
- n1.userFlag = 2;
- gServerLogic.p2pBroadcastToAll(NULL, &n1, sizeof(n1), true);
- break;
- }
- Now, in MasterServerLogic.h, Search for:
- void FinishGame();
- Add Below:
- void BlackShark_SendNoticeMsg(const char* msg , ...);//DouglasPro
- Now, in NetPacketsServerBrowser.h, Search for:
- SBPKT_G2M_CloseGame,
- Add Below:
- SBPKT_G2M_BlackShark_SendNoticeMsg,//DouglasPro
- Now Search for it:
- struct SBPKT_G2M_CloseGame_s : public r3dNetPacketMixin<SBPKT_G2M_CloseGame>
- {
- };
- Add Below:
- struct SBPKT_G2M_BlackShark_SendNoticeMsg_s : public r3dNetPacketMixin<SBPKT_G2M_BlackShark_SendNoticeMsg>//DouglasPro
- {
- char msg[512];
- };
- Now in MasterServerGame.cpp, Search for:
- case SBPKT_G2M_RegisterGame:
- {
- const SBPKT_G2M_RegisterGame_s& n = *(SBPKT_G2M_RegisterGame_s*)PacketData;
- r3d_assert(sizeof(n) == PacketSize);
- r3d_assert(peer.status == PEER_Validated);
- r3dOutToLog("game 0x%x connected\n", n.gameId);
- // register this game in supervisor
- CServerS* super = GetServerByGameId(n.gameId);
- if(super == NULL) {
- // this might happen when supervisor crashed between game start & registration
- r3dOutToLog("game 0x%x without supervisor\n", n.gameId);
- SBPKT_M2G_KillGame_s n1;
- net_->SendToPeer(&n1, sizeof(n1), peerId);
- net_->DisconnectPeer(peerId);
- break;
- }
- CServerG* game = super->CreateGame(n.gameId, peerId);
- r3d_assert(game);
- games_.insert(TGamesList::value_type(peerId, game));
- r3d_assert(peer.status == PEER_Validated);
- peer.status = PEER_GameServer;
- #if ENABLED_SERVER_WEAPONARMORY
- SendArmoryInfoToGame(game);
- #endif
- break;
- }
- Add Below:
- case SBPKT_G2M_BlackShark_SendNoticeMsg:
- {//DouglasPro
- const SBPKT_G2M_BlackShark_SendNoticeMsg_s& n = *(SBPKT_G2M_BlackShark_SendNoticeMsg_s*)PacketData;
- r3dOutToLog("Received notice message from peer%d '%s'\n",peerId,n.msg);
- //r3dOutToLog("Brostcast to all servers.\n");
- // scans servers.
- int numgames = 0;
- for(CMasterGameServer::TSupersList::const_iterator it = gMasterGameServer.supers_.begin();
- it != gMasterGameServer.supers_.end();
- ++it)
- {
- const CServerS* super = it->second;
- numgames += super->GetExpectedGames();//DouglasPro
- for(int i=0; i<super->maxGames_; i++)
- {
- const CServerG* game = super->games_[i].game;
- if(!game)
- continue;
- // resend this packet to all servers.
- net_->SendToPeer(&n, sizeof(n), game->peer_, true);
- }
- }//DouglasPro
- r3dOutToLog("Send notice packet to %d servers\n",numgames);
- break;//DouglasPro
- }
- search for:
- PKT_C2S_ScreenshotData,
- add bellow
- PKT_C2S_BlackSharkPlayerD3DPossibility,
- search for:
- struct PKT_S2C_PlayerNameJoined_s : public DefaultPacketMixin<PKT_S2C_PlayerNameJoined>
- {
- //DouglasPro:: new logic implemented here
- BYTE peerId;
- char gamertag[32*2];
- BYTE flags; // 1=isLegend
- int Reputation;
- };
- add bellow
- struct PKT_C2S_BlackSharkPlayerD3DPossibility_s : public DefaultPacketMixin<PKT_C2S_BlackSharkPlayerD3DPossibility>
- {
- //DouglasPro:: Logic based on The Hexa with some improvements for example against D3D HACK 666slk
- //TheHexa:: Send some features to BlackShark on the server..
- bool isD3DIssue;
- bool isFredaikiZHook;
- bool isPureWarZHook;
- bool isZedHook;
- bool isTokolokoSKHook;
- bool isSmilleHook;
- bool is666slk;
- bool isCapitinHook;
- };
- search for
- char userName[64];
- add bellow
- //DouglasPro:: BlackShark Logic Help By TheHexa
- int m_ForcingHeadShotDetection;
- int m_PlayerInvisibleDetection;
- int m_PlayerTeleportDetection;
- int m_D3DIssueDetection;
- int m_PlayerPickupDecoyDetection;
- int m_PlayerPickupDetection;
- int m_PlayerGameTimeDetection;
- //// Fineshed BlackShark ///
- search for
- // precalculated boost vars
- float boostXPBonus_;
- float boostWPBonus_;
- add bellow
- //DouglasPro:: [BlackShark]
- r3dPoint3D CurPositionPackets;
- float lastPickupNotifyTime;
- search for
- bool CheckForFastMove();
- add bellow
- float lastPlayerAction_; // used for AFK checks
- int fireAtSafezone_;//DouglasPro:: BlackShark
- search for
- void UseItem_CreateNote(const PKT_C2S_CreateNote_s& n);
- add bellow
- bool IsInVehicle();//BlackShark Parameter
- bool isInVehicle;//BlackShark Parameter
- search for
- else
- {
- fromPlr->numChatMessages_++;
- if(fromPlr->numChatMessages_ >= CHAT_NUMBER_TO_SPAM)
- {
- DisconnectPeer(peerId, true, "invalid PKT_C2C_ChatMessage #3 - spam");
- return;
- }
- }
- add bellow
- //TheHexa:: Simple logic for chat text detection...
- if(strncmp(n.msg, "UC", 2) == 0 ||
- strncmp(n.msg, "cheats", 6) == 0 ||
- strncmp(n.msg, "cheat", 5) == 0 ||
- strncmp(n.msg, "hacks", 5) == 0 ||
- strncmp(n.msg, "hack", 4) == 0 ||
- strncmp(n.msg, "unknown", 7) == 0 ||
- strncmp(n.msg, "tmcheats", 8) == 0 ||
- strncmp(n.msg, "unknowncheats", 13) == 0 ||
- strncmp(n.msg, "tmcheats", 7) == 0 ||
- strncmp(n.msg, "aimjunkies", 9) == 0 ||
- strncmp(n.msg, "LastDay", 7) == 0 ||
- strncmp(n.msg, "NewLastDay", 10) == 0 ||
- strncmp(n.msg, "WarZone", 7) == 0 ||
- strncmp(n.msg, "WarZombie", 9) == 0 ||
- strncmp(n.msg, "LeNinjaZ", 8) == 0 ||
- strncmp(n.msg, "LeNinja", 7) == 0 ||
- strncmp(n.msg, "InfectZ", 7) == 0)
- {
- char msg[512]; //DouglasPro:: simple New parameter Added ...
- char userName[512];
- gMasterServerLogic.BlackShark_SendNoticeMsg("another emulator chatting Player Kicked '%s'",userName);
- gServerLogic.DisconnectPeer(peerId,true,msg);
- return;
- }
- search for
- IMPL_PACKET_FUNC(ServerGameLogic, PKT_C2S_TEST_SpawnDummyReq)
- {
- r3dOutToLog("!!!!!!! NOPE: dummies not implemented\n");
- r3d_assert(fromObj);
- r3d_assert(IsServerPlayer(fromObj));
- return;
- }
- add bellow
- IMPL_PACKET_FUNC(ServerGameLogic, PKT_C2S_BlackSharkPlayerD3DPossibility)
- {
- obj_ServerPlayer* fromPlr = GetPeer(peerId).player;
- if(!fromPlr)
- {
- return;
- }
- //DouglasPro:: 25/08 - Just check d3d issues for now...
- if(n.isD3DIssue)
- {
- //DouglasPro:: Here we detect D3D hacks!
- if(fromPlr->profile_.ProfileData.isDevAccount == 0) //DouglasPro:: We have DEV ESP - That can force some error on detection code, so, skip for devs :}
- {
- fromPlr->m_D3DIssueDetection++;
- if(fromPlr->m_D3DIssueDetection > u_GetRandom(1.0f, 3.0f))
- {
- char msg[128];
- char userName[512];
- gMasterServerLogic.BlackShark_SendNoticeMsg("Player WallHack Kicked Server '%s'",userName);
- gServerLogic.DisconnectPeer(fromPlr->peerId_,true,msg);
- }
- }
- }
- }
- search for
- void ServerGameLogic::OnPKT_C2S_ScreenshotData(DWORD peerId, const int size, const char* data)
- {
- char fname[MAX_PATH];
- const peerInfo_s& peer = GetPeer(peerId);
- if(peer.player == NULL) {
- return;
- } else {
- sprintf(fname, "FairFightSS\\JPG_%d_%d_%d_%x.jpg", ginfo_.gameServerId, peer.player->profile_.CustomerID, peer.player->loadout_->LoadoutID, GetTickCount());
- }
- r3dOutToLog("peer%02d received screenshot, fname:%s", peerId, fname);
- FILE* f = fopen(fname, "wb");
- if(f == NULL) {
- LogInfo(peerId, "SaveScreenshot", "unable to save fname:%s", fname);
- return;
- }
- fwrite(data, 1, size, f);
- fclose(f);
- return;
- }
- add above
- ////////////////////////////////////////// B L A C K S H A R K [ANTICHEAT] ///////////////////////////////////////////////////
- int file_exists(const char *filename) //DouglasPro:: BlackSharK checking...
- {
- FILE *arquivo;
- if(arquivo = fopen(filename, "r"))
- {
- fclose(arquivo);
- return 1;
- }
- return 0;
- }
- void Injetado()
- {
- Sleep (5000);
- ExitProcess(0);
- }
- void I_loop(){
- //DouglasPRO Dica: [NOME.extenção] não é case sensitive.
- if (GetModuleHandle("speedhack.dll") ||
- (GetModuleHandle("FredaikiZ_[www.unknowncheats.me]_.dll")) ||
- (GetModuleHandle("DeadZ_CFF.dll")) ||
- (GetModuleHandle("Wall.dll")) ||
- (GetModuleHandle("WallHack.dll")) ||
- (GetModuleHandle("Wall WarZ.dll")) ||
- (GetModuleHandle("Wall Infestation.dll")) ||
- (GetModuleHandle("Pure WarZ_[www.unknowncheats.me]_.dll")) ||
- (GetModuleHandle("Disco_[www.unknowncheats.me]_.dll")) ||
- (GetModuleHandle("smoll.dll")) ||
- (GetModuleHandle("speed-hack.dll")) ||
- (GetModuleHandle("speed-hack.dll")) ||
- (GetModuleHandle("speed_hack.dll")) ||
- (GetModuleHandle("hack_speed.dll")) ||
- (GetModuleHandle("hack-speed.dll")) ||
- (GetModuleHandle("hackspeed.dll")) ||
- (GetModuleHandle("hack.dll")) ||
- (GetModuleHandle("wpepro.dll")) ||
- (GetModuleHandle("Cr4ck3r.dll")) ||
- (GetModuleHandle("wpeprospy.dll")) ||
- (GetModuleHandle("engine.dll")) ||
- (GetModuleHandle("CheatEngine.dll")) ||
- (GetModuleHandle("c.e.dll")) ||
- (GetModuleHandle("cheat.dll")) ||
- (GetModuleHandle("AlphaMMO.dll")) ||
- (GetModuleHandle("NerVoSuh_TheHexa_v5_6_[www.unknowncheats.me]_.dll")) ||
- (GetModuleHandle("kernel.dll")) ||
- (GetModuleHandle("Kernell.dll")) ||
- (GetModuleHandle("nervosuh.dll")) ||
- (GetModuleHandle("L-Loader.dll")) ||
- (GetModuleHandle("Sml.dll")) ||
- (GetModuleHandle("Sml_[www.unknowncheats.me]_.dll")) ||
- (GetModuleHandle("ExtremeEgine.dll")) ||
- (GetModuleHandle("Sml V2_[www.unknowncheats.me]_.dll")) ||
- (GetModuleHandle("[unknowncheats.me].dll")) ||
- (GetModuleHandle("smoll.dll")) )
- {
- Injetado();
- MessageBox(NULL, "Detect DLL Inject , Exiting Game...", "AlphaMMO [BLACKSHARK]", MB_OK);
- }
- if(!FindWindow(NULL,"BlackShark 'Kicked'"))
- {
- }
- }
- void I_Scan(){
- again:
- I_loop();
- Sleep(1000);
- goto again;
- }
- void Dll_Inject(){
- CreateThread(NULL,NULL,LPTHREAD_START_ROUTINE(I_Scan),NULL,0,0);
- I_loop();
- }
- ////////////////////////// FINESHED BLACK SHARK //////////////////////////////////////////////////////////////////////
- search for
- DEFINE_PACKET_HANDLER(PKT_C2S_DBG_LogMessage);
- add bellow
- //DouglasPRO::BlackShark AC logic based TheHexa !!
- DEFINE_PACKET_HANDLER(PKT_C2S_BlackSharkPlayerD3DPossibility);
- search for
- #include "GameObjects/ObjManag.h"
- add bellow
- #include "StdAfx.h" //DouglasPRO:: BlackShark AC
- search for
- startPlayTime_ = r3dGetTime();
- add bellow
- security_utcGameTimeSent = false;// for BlackShark
- security_GameTimeSent = false;// for BlackShark
- m_PlayerFlyingAntiCheatTimer = 0.0f;
- m_PlayerUndergroundAntiCheatTimer = 0.0f;
- //DouglasPro:: BlackShark Logic By Help TheHexa
- m_ForcingHeadShotDetection = 0;
- m_PlayerInvisibleDetection = 0;
- m_PlayerTeleportDetection = 0;
- m_D3DIssueDetection = 0;
- m_PlayerPickupDecoyDetection = 0;
- m_PlayerPickupDetection = 0;
- m_PlayerGameTimeDetection = 0;
- lastPickupNotifyTime = 0;
- //// FineshedBlackShark /////
- search for
- m_PlayerState = 0;
- add bellow
- fireAtSafezone_ = 0;//DouglasPro:: BlackShark
- search for
- if(wid < 0 || wid >= NUM_WEAPONS_ON_PLAYER)
- {
- gServerLogic.LogInfo(peerId_, "wid invalid", "%s %d", pktName, wid);
- return false;
- }
- add bellow
- // BlackShark Detect Players SafeZone Fired
- if(loadout_->GameFlags & wiCharDataFull::GAMEFLAG_NearPostBox)
- {
- fireAtSafezone_++;
- if(fireAtSafezone_ > u_GetRandom(4.0f, 10.0f))
- {
- char msg[128];
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Detect SafeZone Kill Player Banned '%s'",userName);
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- //gServerLogic.DisconnectPeer(peerId_,true,msg)
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);;
- }
- return false;
- }
- search for
- gServerLogic.TrackWeaponUsage(wpn->getConfig()->m_itemID, 1, 0, 0);
- add bellow or replace to
- //DouglasPRO :: BlackShark Testings
- if(executeFire && gServerLogic.weaponDataUpdates_ < 2 && profile_.ProfileData.isDevAccount == 0)
- {
- // check if we fired more that we was able
- wiInventoryItem& wi = wpn->getPlayerItem();
- if(wi.Var1 <= 0 && profile_.ProfileData.isDevAccount == 0)
- {
- char msg[128];
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- //gServerLogic.DisconnectPeer(peerId_,true,msg)
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);;
- gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_NumShots, true, "bullethack", "%d/%d clip:%d(%s)",
- wi.Var1,
- wpn->getClipConfig()->m_Clipsize,
- wpn->getClipConfig()->m_itemID,
- wpn->getClipConfig()->m_StoreName
- );
- return false;
- }
- wpn->getPlayerItem().Var1--;
- }
- return true;
- }
- search for
- const float TimePassed = R3D_MIN(r3dGetFrameTime(), 0.1f);
- if(m_PlayerState == PLAYER_MOVE_SPRINT)
- add bellow
- if(m_PlayerState == PLAYER_MOVE_SPRINT)
- {
- m_Stamina -= TimePassed;
- if(m_Stamina < -60.0f && profile_.ProfileData.isDevAccount == 0) //DouglasPro:: BlackShark AC implemented
- {
- gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_Stamina, true, "stamina");
- gMasterServerLogic.BlackShark_SendNoticeMsg("Stamina Passed Limit '%s'",userName);
- }
- }
- seach for
- float avgSpeed = moveAccumDist / moveAccumTime;
- bool isCheat = false;
- replace to
- //r3dOutToLog("avgSpeed: %f vs %f\n", avgSpeed, GPP_Data.AI_SPRINT_SPEED);
- if(loadout_->Alive && avgSpeed > GPP_Data.AI_SPRINT_SPEED * 1.7f && profile_.ProfileData.isDevAccount == 0)//DouglasPro:: [BlackShark AC]
- {
- //char msg[128];
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Killed '%s'",userName);
- //g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);;
- {
- gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_FastMove, true, "CheatFastMove",
- "dist: %f for %f, speed:%f\n",
- moveAccumDist,
- moveAccumTime,
- avgSpeed
- );
- isCheat = true;
- }
- }
- search for
- p1.y = 0;
- p2.y = 0;
- float dist = (p1 - p2).Length();
- add bellow or replace to
- // check for teleport - more that 3 sec of sprint speed. MAKE sure that max dist is more that current netMover.cellSize
- if(loadout_->Alive && dist > GPP_Data.AI_SPRINT_SPEED * 3.0f && profile_.ProfileData.isDevAccount == 0) //DouglasPro:: don't kick devs for speed hack :)
- {
- m_PlayerTeleportDetection++;
- if(m_PlayerTeleportDetection > u_GetRandom(6.0f, 16.0f))
- {
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark kicked '%s'",userName);//DouglasPro:: BlackShark Checking !!
- //gServerLogic.DisconnectPeer(peerId_,true,msg)
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);;
- gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_NumShots, true, "TELEPORT");
- }
- return;
- }
- }
- search for
- void obj_ServerPlayer::OnNetPacket(const PKT_C2C_PlayerHitStatic_s& n)
- replace function
- void obj_ServerPlayer::OnNetPacket(const PKT_C2C_PlayerHitStatic_s& n)
- {
- //r3dOutToLog("FireHitCount--: PKT_C2C_PlayerHitStatic_s\n");
- FireHitCount--;
- if(FireHitCount < -10) // -10 - to allow some buffer
- {
- // char msg[128];
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Kicked '%s'",userName);//DouglasPro:: BlackShark Checking !!
- //g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- //gServerLogic.DisconnectPeer(peerId_,true,msg)
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);;
- gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_NumShots, true, "bullethack2");
- return;
- }
- RelayPacket(&n, sizeof(n), false);
- }
- search for
- if(!gServerLogic.CanDamageThisObject(targetObj))
- {
- gServerLogic.LogInfo(peerId_, "HitBody1", "hit object that is not damageable!");
- return;
- }
- add bellow
- // DouglasPro:: TheHexa thanks for this logic motherfucker !
- if(n.hit_body_part == 1 && n.wasHeadShoting != 0x50 || OBJTYPE_Zombie)
- {
- //DouglasPro:: WHOOOA!
- //That is a FORCE HEADSHOT!!!
- //but we need get some random for that
- //to prevent kids crying after get punished by BLACKSHARK
- m_ForcingHeadShotDetection++;
- if(m_ForcingHeadShotDetection > u_GetRandom(40.0f, 65.0f))
- {
- char msg[512];
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned Player '%s'",userName);
- g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- //gServerLogic.DisconnectPeer(peerId_,true,msg)
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);;
- gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_BadWeapData, false, "[BLACKSHARK DETECT] FORCE_HEAD_SHOT PLAYER");
- }
- }
- search for
- if (!wc && n.m_itemId != 0 || !heHaveWep) // itemDB.xml or weapon not sync with servers. disconnect him!
- {
- // i think he have a problem. not all % he cheats.
- gServerLogic.DisconnectPeer(peerId_,false,"BulletValidate: %s weapon not sync with servers. itemid %d",userName,n.m_itemId);
- return;
- }
- addbellow
- if(wc->m_reloadTime > 1.0f && u_GetRandom(6.0f, 15.0f) || profile_.ProfileData.isDevAccount == 0)
- {
- //char msg[512];
- //g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
- gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Anti Cheat Killed '%s' Violation Server",userName);
- //gServerLogic.DisconnectPeer(peerId_,true,msg);
- gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement