Advertisement
Guest User

BLACK SHARK TUT WARZ_SERVER.SLN

a guest
Dec 15th, 2018
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 39.46 KB | None | 0 0
  1. /*****************************************************
  2. Fuck tutorial by blackshark
  3. Development by DouglasPro
  4. *****************************************************/
  5.  
  6. In WarZ_Server.sln -> Server Solution
  7.  
  8. Search for That (In obj_ServerPlayer.cpp):
  9.  
  10. Add:
  11.  
  12. #include "MasterServerLogic.h"
  13.  
  14. void obj_ServerPlayer::OnNetPacket(const PKT_C2S_FallingDamage_s& n)
  15. {
  16. r3dOutToLog("Falling damage to %s, damage=%.2f\n", Name.c_str(), n.damage); CLOG_INDENT;
  17. //r3dOutToLog("Falling damage Disable\n", Name.c_str(), n.damage); CLOG_INDENT; // No Damage Enabled
  18. if (!profile_.ProfileData.isDevAccount)
  19. {
  20. gServerLogic.ApplyDamage(this, this, GetPosition(), n.damage, true, storecat_INVALID);
  21. }
  22. }
  23.  
  24. And Add below:
  25.  
  26. void obj_ServerPlayer::OnNetPacket(const PKT_C2S_BlackShark_ValidateEnvironment_s& n)//DouglasPro:: player time !!!
  27. {
  28. r3dOutToLog("%s lastCurTime %.2f , CurTime %.2f\n",userName,lastCurTime,n.CurTime);
  29. if (fabs(n.CurTime - lastCurTime) < 0.01f && !firstTime) //
  30. {
  31. char msg[512];
  32. sprintf(msg,"lastCurTime %.2f , CurTime %.2f\n",lastCurTime,n.CurTime);
  33. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
  34. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  35. //gServerLogic.DisconnectPeer(peerId_,true,msg)
  36. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);;
  37. return;
  38. }
  39. if (firstTime)
  40. {
  41. firstTime = false;
  42. lastCurTime = n.CurTime;
  43. }
  44.  
  45.  
  46. lastCurTime = n.CurTime;
  47. }
  48. void obj_ServerPlayer::OnNetPacket(const PKT_C2S_BlackShark_BulletValidateConfig_s& n)//DouglasPro:: check bullet !!!
  49. {
  50. // not need to check weapons. this is for bullet , not weapon.
  51.  
  52.  
  53. const WeaponConfig* wc = g_pWeaponArmory->getWeaponConfig((uint32_t)n.m_itemId);
  54. bool heHaveWep = false; //DouglasPro:: the weapons need to sync with servers.
  55. for (int i = 0; i<2;i++)
  56. {
  57. ServerWeapon* wpn = m_WeaponArray[i];
  58. if (!wpn)
  59. continue;
  60.  
  61.  
  62. if (wpn->m_pConfig->m_itemID == (uint32_t)n.m_itemId && wc == wpn->m_pConfig) //DouglasPro:: yeah he have this weapon
  63. {
  64. heHaveWep = true;
  65. break;
  66. }
  67. }
  68. if (!wc && n.m_itemId != 0 || !heHaveWep) //DouglasPro:: itemDB.xml or weapon not sync with servers. disconnect him!
  69. {
  70. // i think he have a problem. not all % he cheats.
  71. gServerLogic.DisconnectPeer(peerId_,false,"BulletValidate: %s weapon not sync with servers. itemid %d",userName,n.m_itemId);
  72. return;
  73. }
  74.  
  75.  
  76. // used for debug.
  77. //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);
  78. char msg[512];
  79. if (fabs((float)wc->m_AmmoMass - n.m_AmmoMass) > 0.01f) //DouglasPro:: no bullet drop hack.
  80. {
  81. sprintf(msg,"m_AmmoMass not match itemid:%d sv:%.2f , cl:%.2f\n",n.m_itemId,(float)wc->m_AmmoMass,n.m_AmmoMass);
  82. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  83. r3dOutToLog(msg);
  84. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
  85. //gServerLogic.DisconnectPeer(peerId_,true,msg);
  86. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
  87. return;
  88. }
  89. else if (fabs((float)wc->m_AmmoSpeed - n.m_AmmoSpeed) > 0.01f) //DouglasPro:: instant hit hack.
  90. {
  91. sprintf(msg,"m_AmmoSpeed not match itemid:%d sv:%.2f , cl:%.2f\n",n.m_itemId,(float)wc->m_AmmoSpeed,n.m_AmmoSpeed);
  92. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  93. r3dOutToLog(msg);
  94. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
  95. //gServerLogic.DisconnectPeer(peerId_,true,msg);
  96. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
  97. return;
  98. }
  99. }
  100. void obj_ServerPlayer::OnNetPacket(const PKT_C2S_BlackShark_PlayerState_s& n)//DouglasPro:: coded by me
  101. {
  102. // NOTE: STATE NEED TO SYNC WITH SERVER!
  103. char msg[512];
  104. if (!profile_.ProfileData.isDevAccount)
  105. {
  106. if (n.state == PLAYER_MOVE_SPRINT)
  107. {
  108. // for this check only forward speed. cannot move backward.
  109. if (n.accel.z > 5.46f)
  110. {
  111. sprintf(msg,"SpeedHack PLAYER_MOVE_SPRINT cl:%.2f\n",n.accel.z);
  112. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  113. r3dOutToLog(msg);
  114. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
  115. //gServerLogic.DisconnectPeer(peerId_,true,msg);
  116. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
  117. return;
  118. }
  119. }
  120. else if (n.state == PLAYER_MOVE_RUN)
  121. {
  122. if (n.accel.z > 3.64f || n.accel.z < -2.73f)
  123. {
  124. sprintf(msg,"SpeedHack PLAYER_MOVE_RUN cl:%.2f\n",n.accel.z);
  125. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  126. r3dOutToLog(msg);
  127. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
  128. //gServerLogic.DisconnectPeer(peerId_,true,msg);
  129. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
  130. return;
  131. }
  132. }
  133. else if (n.state == PLAYER_MOVE_WALK_AIM)//DouglasPro:: fuckkk
  134. {
  135. if (n.accel.z > 2.08f || n.accel.z < -1.56f)
  136. {
  137. sprintf(msg,"SpeedHack PLAYER_MOVE_WALK_AIM cl:%.2f\n",n.accel.z);
  138. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  139. r3dOutToLog(msg);
  140. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
  141. //gServerLogic.DisconnectPeer(peerId_,true,msg);
  142. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
  143. return;
  144. }
  145. }
  146. else if (n.state == PLAYER_MOVE_CROUCH)//DouglasPro:: fuck hackers noob !!!
  147. {
  148. if (n.accel.z > 1.46f || n.accel.z < -1.10f)
  149. {
  150. sprintf(msg,"SpeedHack PLAYER_MOVE_CROUCH cl:%.2f\n",n.accel.z);
  151. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  152. r3dOutToLog(msg);
  153. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
  154. //gServerLogic.DisconnectPeer(peerId_,true,msg);
  155. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
  156. return;
  157. }
  158. }
  159. else if (n.state == PLAYER_MOVE_CROUCH_AIM)//DouglasPro:: check player speed !!
  160. {
  161. if (n.accel.z > 0.83f || n.accel.z < -0.65f)
  162. {
  163. sprintf(msg,"SpeedHack PLAYER_MOVE_CROUCH_AIM cl:%.2f\n",n.accel.z);
  164. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  165. r3dOutToLog(msg);
  166. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
  167. //gServerLogic.DisconnectPeer(peerId_,true,msg);
  168. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
  169. return;
  170. }
  171. }
  172. else if (n.state == PLAYER_MOVE_PRONE)//DouglasPro:: checking speed hack !!
  173. {
  174. if (n.accel.z > 0.73f || n.accel.z < -0.55f)
  175. {
  176. sprintf(msg,"SpeedHack PLAYER_MOVE_PRONE cl:%.2f\n",n.accel.z);
  177. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  178. r3dOutToLog(msg);
  179. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
  180. //gServerLogic.DisconnectPeer(peerId_,true,msg);
  181. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
  182. return;
  183. }
  184. }
  185. }
  186. }
  187. void obj_ServerPlayer::OnNetPacket(const PKT_C2S_BlackShark_WpnLog_s& n)
  188. {
  189. const WeaponConfig* wc = g_pWeaponArmory->getWeaponConfig((uint32_t)n.itemid);
  190. LastWpnLog = r3dGetTime();
  191.  
  192.  
  193.  
  194.  
  195. ServerWeapon* wpn = m_WeaponArray[n.slot];
  196. if (!wc && n.itemid != 0) // not match.
  197. {
  198. gServerLogic.DisconnectPeer(peerId_,true,"WpnLog not match. itemid:%d",n.itemid);
  199. return;
  200. }
  201.  
  202.  
  203. // NOTE : THIS IS VERY IMPORTANT CODE. IF FAILED THIS PLAYER WILL GET BANNED BY ERROR SYSTEM.
  204. float spread = (float)wc->m_spread; spread = spread * (1.0f+n.m_spreadattm);
  205. spread *= 0.5f;
  206.  
  207.  
  208. // SKILL SYNC CODE
  209. if (loadout_->Stats.skillid9)
  210. spread *= 0.8f;
  211.  
  212.  
  213. float recoil = (float)wc->m_recoil;
  214. recoil = recoil * (1.0f+n.m_recoilattm);
  215.  
  216.  
  217. // SKILL SYNC CODE
  218. if (loadout_->Stats.skillid11)
  219. recoil *= 0.8f;
  220.  
  221.  
  222. recoil *= 0.05f;//DouglasPro:: recoil
  223.  
  224.  
  225. //DouglasPro:: copy from client.
  226. float fireDelay = (float)wc->m_fireDelay;
  227. int firerate = (int)ceilf(60.0f / fireDelay); // convert back to rate of fire
  228. 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.
  229. fireDelay = 60.0f / firerate; // convert back to fire delay
  230. float fireRatePerc = 0.0f;
  231. float adjInPerc = (fireDelay / 100.0f) * fireRatePerc;
  232. fireDelay -= adjInPerc;
  233.  
  234. //DouglasPro:: MasterServerLogic::SendNoticeMsg(msg , ...)
  235. char msg[512];
  236. if (fabs((float)spread - (float)n.m_spread) > 0.01f) // spread hack
  237. {
  238. sprintf(msg,"m_spread not match itemid:%d sv:%.2f , cl:%.2f\n",n.itemid,spread,n.m_spread);
  239. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  240. r3dOutToLog(msg);
  241. //gServerLogic.DisconnectPeer(peerId_,true,"m_spread not match itemid:%d sv:%.2f , cl:%.2f",n.itemid,wc->m_spread,n.m_spread);
  242. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
  243. return;
  244. }
  245. else if (fabs((float)recoil - (float)n.m_recoil) > 0.01f) //DouglasPro:: recoil hack.
  246. {
  247. sprintf(msg,"m_recoil not match itemid:%d sv:%.2f , cl:%.2f\n",n.itemid,recoil,n.m_recoil);
  248. r3dOutToLog(msg);
  249. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  250. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Killed Recoil hack '%s'",userName);
  251. //gServerLogic.DisconnectPeer(peerId_,true,"m_recoil not match itemid:%d sv:%.2f , cl:%.2f",n.itemid,wc->m_recoil,n.m_recoil);
  252. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
  253. return;
  254. }
  255. else if (fabs((float)fireDelay - (float)n.m_rateoffire) > 0.01f) //DouglasPro:: rapid fire hack.
  256. {
  257. sprintf(msg,"m_rateoffire not match itemid:%d sv:%.2f , cl:%.2f\n",n.itemid,fireDelay,n.m_rateoffire);
  258. r3dOutToLog(msg);
  259. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  260. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Killed Rapid fire '%s'",userName);
  261. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
  262. //gServerLogic.DisconnectPeer(peerId_,true,"m_rateoffire not match itemid:%d sv:%.2f , cl:%.2f",n.itemid,fireDelay,n.m_rateoffire);
  263. return;
  264. }
  265.  
  266.  
  267. // STEP 2 - TPROGAME NO RECOIL LOGIC
  268. // USED m_recoil2
  269. recoil *= 1.1f; // recoil = getRecoil()*1.1f;
  270. if (fabs((float)recoil - (float)n.m_recoil2) > 0.01f) //DouglasPro:: RECOIL HACK
  271. {
  272. sprintf(msg,"m_recoil2 not match itemid:%d sv:%.2f , cl:%.2f\n",n.itemid,recoil,n.m_recoil2);
  273. r3dOutToLog(msg);
  274.  
  275. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  276. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Killed Recoil Hack '%s'",userName);
  277. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
  278. //gServerLogic.DisconnectPeer(peerId_,true,msg);
  279. return;
  280. }
  281.  
  282.  
  283. }
  284.  
  285. Now Search for This:
  286.  
  287. Code:
  288.  
  289. void obj_ServerPlayer::OnNetPacket(const PKT_C2S_PlayerWeapDataRep_s& n)
  290.  
  291. IMPORTANT: CHANGE FULL FUNCTION FOR THIS:
  292.  
  293. Code:
  294.  
  295. Code:
  296.  
  297. void obj_ServerPlayer::OnNetPacket(const PKT_C2S_PlayerWeapDataRep_s& n)
  298. {
  299. lastWeapDataRep = r3dGetTime();
  300.  
  301.  
  302. // if weapon data was updated more that once it mean that updated happened in middle of the game
  303. // so skip validation
  304. if(gServerLogic.weaponDataUpdates_ >= 2)
  305. return;
  306.  
  307.  
  308. for(int i=0; i<2; i++)
  309. {
  310. if(m_WeaponArray[i] == NULL)
  311. continue;
  312. DWORD hash = m_WeaponArray[i]->getConfig()->GetClientParametersHash();
  313.  
  314.  
  315. if(hash == n.weaponsDataHash[i])
  316. continue;
  317.  
  318.  
  319. const WeaponConfig& wc1 = *m_WeaponArray[i]->getConfig();
  320. WeaponConfig wc2(n.debug_wid[i]);
  321. wc2.copyParametersFrom(n.debug_winfo[i]);
  322.  
  323.  
  324. if(wc1.m_itemID != wc2.m_itemID)
  325. {
  326.  
  327.  
  328. gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_Protocol, false, "weapDataRep different",
  329. "slot%d %d - %d", i, wc1.m_itemID, wc2.m_itemID);
  330. }
  331. else
  332. {
  333. // create diffs string for logging
  334. char diffs[4096] = "";
  335. if(fabs((float)wc1.m_spread - (float)wc2.m_spread) > 0.01f)
  336. sprintf(diffs + strlen(diffs), "spread:%.2f/%.2f ", (float)wc1.m_spread, (float)wc2.m_spread);
  337. if(fabs((float)wc1.m_recoil - (float)wc2.m_recoil) > 0.01f)
  338. sprintf(diffs + strlen(diffs), "recoil:%.2f/%.2f ", (float)wc1.m_recoil, (float)wc2.m_recoil);
  339. if(fabs((float)wc1.m_reloadTime - (float)wc2.m_reloadTime) > 0.01f)
  340. sprintf(diffs + strlen(diffs), "reloadtime:%.2f/%.2f ", (float)wc1.m_reloadTime, (float)wc2.m_reloadTime);
  341. if(fabs((float)wc1.m_fireDelay - (float)wc2.m_fireDelay) > 0.01f)
  342. sprintf(diffs + strlen(diffs), "rateoffire:%.2f/%.2f ", (float)wc1.m_fireDelay, (float)wc2.m_fireDelay);
  343. if(fabs((float)wc1.m_AmmoSpeed - (float)wc2.m_AmmoSpeed) > 0.01f)
  344. sprintf(diffs + strlen(diffs), "ammospeed:%.2f/%.2f ", (float)wc1.m_AmmoSpeed, (float)wc2.m_AmmoSpeed);
  345.  
  346.  
  347. // report it only once per session (for now, because there is no disconnect yet)
  348. if(diffs[0] && !weapCheatReported)
  349. { //DouglasPRO:: BlackShark Banned Players FuckShit Fuck Hammepoint Fuck InfestationW fuck HATERS FUCKK ALL ...
  350. char chatmessage[128] = {0};
  351. //g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,diffs));
  352. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Kick Player '%s'",userName);
  353. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
  354. weapCheatReported = true;
  355. gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_BadWeapData, false, "BLACKSHARK DETECT weapDataRep different",
  356. "id:%d, diff:%s", wc1.m_itemID, diffs);
  357. }
  358. //DouglasPro:: automatic ban.
  359. if(diffs[0])
  360. {
  361. char chatmessage[128] = {0};
  362. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,diffs));
  363. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
  364. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
  365. }
  366. }
  367. }
  368. }
  369.  
  370.  
  371. Now in obj_ServerPlayer.h, Search for this:
  372.  
  373. void OnNetPacket(const PKT_C2S_FallingDamage_s& n);
  374.  
  375. And add Below:
  376.  
  377. Code:
  378. //DouglasPro:: for BlackShark Anti-cheating
  379. void OnNetPacket(const PKT_C2S_BlackShark_BulletValidateConfig_s& n);
  380. void OnNetPacket(const PKT_C2S_BlackShark_BulletValidateConfig_s& n);
  381. void OnNetPacket(const PKT_C2S_BlackShark_PlayerState_s& n);
  382. void OnNetPacket(const PKT_C2S_BlackShark_WpnLog_s& n);
  383.  
  384. Search for this:
  385. bool isTargetDummy_;
  386.  
  387. Add Below:
  388. //DouglasPro:: for Black Shark
  389. float lastCurTime;
  390. bool firstTime;
  391.  
  392. Search for that:
  393.  
  394. Code:
  395.  
  396. float m_Stamina;
  397.  
  398. Add Below:
  399.  
  400. Code:
  401.  
  402. float LastWpnLog;//DouglasPro:: logs in DB
  403.  
  404.  
  405. Now, Search for this (in P2PMessages.h):
  406.  
  407. Code:
  408.  
  409. struct PKT_S2C_SetPlayerReputation_s : public DefaultPacketMixin<PKT_S2C_SetPlayerReputation>
  410. {
  411. int Reputation;
  412. };
  413.  
  414. IF YOU DON'T FOUND THIS, SEARCH FOR THAT:
  415. Code:
  416.  
  417. struct PKT_C2S_DBG_LogMessage_s : public DefaultPacketMixin<PKT_C2S_DBG_LogMessage>
  418. {
  419. char msg[128];
  420. };
  421.  
  422. Add Below:
  423.  
  424. //DouglasPro:: check logs in DB
  425. struct PKT_C2S_WpnLog_s : public DefaultPacketMixin<PKT_C2S_WpnLog>
  426. {
  427. float m_spread;
  428. float m_recoil;
  429. float m_AmmoSpeed;
  430. float m_AmmoMass;
  431. float m_AmmoDamage;
  432. DWORD itemid;
  433. DWORD slot;
  434. float m_recoilattm;
  435. float m_spreadattm;
  436. float m_rateoffire;
  437. float m_rateattm;
  438. float m_spread2;
  439. float m_recoil2;
  440. };
  441.  
  442. //DouglasPro:: check bullet hack
  443. struct PKT_C2S_BlackShark_BulletValidateConfig_s : public DefaultPacketMixin<PKT_C2S_BulletValidateConfig>
  444. {
  445. int m_itemId;
  446. float m_AmmoMass;
  447. float m_AmmoSpeed;
  448. };
  449.  
  450. //DouglasPro::: check time cheat
  451. struct PKT_C2S_BlackShark_ValidateEnvironment_s : public DefaultPacketMixin<PKT_C2S_ValidateEnvironment>
  452. {
  453. float CurTime;
  454. };
  455. struct PKT_C2S_BlackShark_UpdateEnvironment_s : public DefaultPacketMixin<PKT_S2C_UpdateEnvironment>
  456. {
  457. bool rain;
  458. };
  459. //DouglasPro:: check player speed
  460. struct PKT_C2S_BlackShark_PlayerState_s : public DefaultPacketMixin<PKT_C2S_PlayerState>
  461. {
  462. r3dPoint3D accel;
  463. int state;
  464. };
  465.  
  466. Search for That:
  467.  
  468. PKT_S2C_SetPlayerReputation,
  469.  
  470. Or if you don't found
  471.  
  472. PKT_C2S_DBG_LogMessage,
  473.  
  474. Add Below:
  475.  
  476. //**********************************
  477. //DouglasPro:: paket for blackshark !!
  478. PKT_C2S_BlackShark_BulletValidateConfig,
  479. PKT_C2S_BlackShark_ValidateEnvironment,
  480. PKT_S2C_BlackShark_UpdateEnvironment,
  481. PKT_C2S_BlackShark_WpnLog,
  482. PKT_C2S_BlackShark_PlayerState,
  483. //**********************************
  484.  
  485.  
  486.  
  487. Now in AsyncFuncs.cpp, Search for:
  488.  
  489. CJobProcessUserJoin::CJobProcessUserJoin(int in_peerId) : CAsyncApiJob()
  490. {
  491. sprintf(desc, "CJobProcessUserJoin[%d] %p", CustomerID, this);
  492.  
  493.  
  494. ServerGameLogic::peerInfo_s& peer = gServerLogic.GetPeer(in_peerId);
  495. r3d_assert(peer.startGameAns == 0);
  496.  
  497.  
  498. peerId = in_peerId;
  499. CustomerID = peer.CustomerID;
  500. SessionID = peer.SessionID;
  501. CharID = peer.CharID;
  502.  
  503.  
  504. r3d_assert(CustomerID);
  505. r3d_assert(CharID);
  506. }
  507.  
  508. Add Below:
  509.  
  510. CJobBanID::CJobBanID(int in_CustomerID , char reason1[512]) : CAsyncApiJob()//DouglasPro:: Execute punish black shark !!!!
  511. {
  512. sprintf(desc, "CJobBanID[%d] %p", in_CustomerID, this);
  513.  
  514.  
  515. CustomerID = in_CustomerID;
  516.  
  517.  
  518. sprintf(reason,reason1);
  519. r3d_assert(CustomerID);
  520. }
  521. void CJobBanID::OnSuccess()
  522. {
  523. }
  524. int CJobBanID::Exec()//DouglasPro:: Execute punish black shark !!!!
  525. {
  526. CWOBackendReq req("api_BanID.aspx");
  527. req.AddSessionInfo(CustomerID, SessionID);
  528. req.AddParam("CustomerID", CustomerID);
  529. req.AddParam("reason", reason);
  530. if (!req.Issue())
  531. r3dOutToLog("apiBanID Failed. Code %d\n",req.resultCode_);
  532. else
  533. r3dOutToLog("apiBanID %d Success\n",CustomerID);
  534.  
  535.  
  536. return 0;
  537. }
  538.  
  539. Now in AsyncFuncs.h, search for it:
  540.  
  541. class CJobProcessUserJoin : public CAsyncApiJob
  542. {
  543. CServerUserProfile prof;
  544. int GameJoinResult;
  545.  
  546.  
  547. public:
  548. CJobProcessUserJoin(int in_peerId);
  549.  
  550.  
  551. int Exec();
  552. void OnSuccess();
  553. };
  554.  
  555. Add Below:
  556.  
  557. class CJobBanID : public CAsyncApiJob//DouglasPro
  558. {
  559.  
  560.  
  561. public:
  562. CJobBanID(int in_CustomerID , char reason1[512]);
  563. char reason[512];
  564.  
  565.  
  566. int Exec();
  567. void OnSuccess();
  568. };
  569.  
  570. Now, in MasterServerLogic.cpp, Search for this:
  571.  
  572. FIRST ADD:
  573.  
  574. #include "ServerGameLogic.h"
  575.  
  576. void MasterServerLogic::FinishGame()
  577. {
  578. if(net_ == NULL)
  579. return;
  580.  
  581.  
  582. CREATE_PACKET(SBPKT_G2M_FinishGame, n);
  583. net_->SendToHost(&n, sizeof(n), true);
  584.  
  585. return;
  586. }
  587.  
  588. Add Below:
  589.  
  590. void MasterServerLogic::BlackShark_SendNoticeMsg(const char* msg , ...)
  591. {
  592. if(net_ == NULL)
  593. return;
  594.  
  595.  
  596. char buf[1024];
  597.  
  598.  
  599. va_list ap;
  600. va_start(ap, msg);
  601. StringCbVPrintfA(buf, sizeof(buf), msg, ap);
  602. va_end(ap);
  603.  
  604.  
  605. CREATE_PACKET(SBPKT_G2M_BlackShark_SendNoticeMsg, n);
  606. r3dscpy(n.msg,buf);
  607. net_->SendToHost(&n, sizeof(n), true);
  608.  
  609.  
  610. r3dOutToLog("BrostCast Notice Msg to all servers. '%s'\n",buf);
  611. return;
  612. }
  613.  
  614. Now Search for this:
  615.  
  616. case SBPKT_M2G_UpdateWeaponData:
  617. {
  618. const SBPKT_M2G_UpdateWeaponData_s& n = *(SBPKT_M2G_UpdateWeaponData_s*)packetData;
  619. r3d_assert(sizeof(n) == packetSize);
  620.  
  621.  
  622. /*
  623. WeaponConfig* wc = const_cast<WeaponConfig*>(g_pWeaponArmory->getWeaponConfig(n.itemId));
  624. if(wc == NULL) {
  625. r3dOutToLog("!!! got update for not existing weapon %d\n", n.itemId);
  626. return;
  627. }
  628.  
  629.  
  630. wc->copyParametersFrom(n.wi);
  631. //r3dOutToLog("got update for weapon %s\n", wc->m_StoreName);
  632. */
  633. break;
  634. }
  635.  
  636. Add Below:
  637.  
  638. case SBPKT_G2M_BlackShark_SendNoticeMsg:
  639. {//DouglasPro:: send notice all servers !!!
  640. const SBPKT_G2M_SendNoticeMsg_s& n = *(SBPKT_G2M_SendNoticeMsg_s*)packetData;
  641. r3d_assert(sizeof(n) == packetSize);
  642. r3dOutToLog("Received notice packet from master. msg '%s' , brostcast to all players.\n",n.msg);
  643. // brostcast by chat packet.
  644. PKT_C2C_ChatMessage_s n1;
  645. r3dscpy(n1.gamertag, "<BlackShark>");
  646. r3dscpy(n1.msg, n.msg);
  647. n1.msgChannel = 1;
  648. n1.userFlag = 2;
  649. gServerLogic.p2pBroadcastToAll(NULL, &n1, sizeof(n1), true);
  650. break;
  651. }
  652.  
  653. Now, in MasterServerLogic.h, Search for:
  654. void FinishGame();
  655.  
  656. Add Below:
  657.  
  658. void BlackShark_SendNoticeMsg(const char* msg , ...);//DouglasPro
  659.  
  660. Now, in NetPacketsServerBrowser.h, Search for:
  661.  
  662. SBPKT_G2M_CloseGame,
  663.  
  664. Add Below:
  665.  
  666. SBPKT_G2M_BlackShark_SendNoticeMsg,//DouglasPro
  667.  
  668. Now Search for it:
  669.  
  670. struct SBPKT_G2M_CloseGame_s : public r3dNetPacketMixin<SBPKT_G2M_CloseGame>
  671. {
  672. };
  673.  
  674. Add Below:
  675.  
  676. struct SBPKT_G2M_BlackShark_SendNoticeMsg_s : public r3dNetPacketMixin<SBPKT_G2M_BlackShark_SendNoticeMsg>//DouglasPro
  677. {
  678. char msg[512];
  679. };
  680.  
  681. Now in MasterServerGame.cpp, Search for:
  682.  
  683. case SBPKT_G2M_RegisterGame:
  684. {
  685. const SBPKT_G2M_RegisterGame_s& n = *(SBPKT_G2M_RegisterGame_s*)PacketData;
  686. r3d_assert(sizeof(n) == PacketSize);
  687. r3d_assert(peer.status == PEER_Validated);
  688.  
  689.  
  690. r3dOutToLog("game 0x%x connected\n", n.gameId);
  691.  
  692.  
  693. // register this game in supervisor
  694. CServerS* super = GetServerByGameId(n.gameId);
  695. if(super == NULL) {
  696. // this might happen when supervisor crashed between game start & registration
  697. r3dOutToLog("game 0x%x without supervisor\n", n.gameId);
  698.  
  699.  
  700. SBPKT_M2G_KillGame_s n1;
  701. net_->SendToPeer(&n1, sizeof(n1), peerId);
  702. net_->DisconnectPeer(peerId);
  703. break;
  704. }
  705.  
  706.  
  707. CServerG* game = super->CreateGame(n.gameId, peerId);
  708. r3d_assert(game);
  709.  
  710.  
  711. games_.insert(TGamesList::value_type(peerId, game));
  712.  
  713.  
  714. r3d_assert(peer.status == PEER_Validated);
  715. peer.status = PEER_GameServer;
  716.  
  717.  
  718. #if ENABLED_SERVER_WEAPONARMORY
  719. SendArmoryInfoToGame(game);
  720. #endif
  721. break;
  722. }
  723.  
  724. Add Below:
  725.  
  726. case SBPKT_G2M_BlackShark_SendNoticeMsg:
  727. {//DouglasPro
  728. const SBPKT_G2M_BlackShark_SendNoticeMsg_s& n = *(SBPKT_G2M_BlackShark_SendNoticeMsg_s*)PacketData;
  729. r3dOutToLog("Received notice message from peer%d '%s'\n",peerId,n.msg);
  730. //r3dOutToLog("Brostcast to all servers.\n");
  731. // scans servers.
  732. int numgames = 0;
  733. for(CMasterGameServer::TSupersList::const_iterator it = gMasterGameServer.supers_.begin();
  734. it != gMasterGameServer.supers_.end();
  735. ++it)
  736. {
  737. const CServerS* super = it->second;
  738. numgames += super->GetExpectedGames();//DouglasPro
  739. for(int i=0; i<super->maxGames_; i++)
  740. {
  741. const CServerG* game = super->games_[i].game;
  742. if(!game)
  743. continue;
  744. // resend this packet to all servers.
  745. net_->SendToPeer(&n, sizeof(n), game->peer_, true);
  746. }
  747. }//DouglasPro
  748. r3dOutToLog("Send notice packet to %d servers\n",numgames);
  749. break;//DouglasPro
  750. }
  751.  
  752.  
  753. search for:
  754.  
  755. PKT_C2S_ScreenshotData,
  756.  
  757. add bellow
  758.  
  759. PKT_C2S_BlackSharkPlayerD3DPossibility,
  760.  
  761.  
  762. search for:
  763.  
  764. struct PKT_S2C_PlayerNameJoined_s : public DefaultPacketMixin<PKT_S2C_PlayerNameJoined>
  765. {
  766. //DouglasPro:: new logic implemented here
  767. BYTE peerId;
  768. char gamertag[32*2];
  769. BYTE flags; // 1=isLegend
  770. int Reputation;
  771. };
  772.  
  773. add bellow
  774.  
  775. struct PKT_C2S_BlackSharkPlayerD3DPossibility_s : public DefaultPacketMixin<PKT_C2S_BlackSharkPlayerD3DPossibility>
  776. {
  777. //DouglasPro:: Logic based on The Hexa with some improvements for example against D3D HACK 666slk
  778. //TheHexa:: Send some features to BlackShark on the server..
  779. bool isD3DIssue;
  780. bool isFredaikiZHook;
  781. bool isPureWarZHook;
  782. bool isZedHook;
  783. bool isTokolokoSKHook;
  784. bool isSmilleHook;
  785. bool is666slk;
  786. bool isCapitinHook;
  787. };
  788.  
  789. search for
  790.  
  791. char userName[64];
  792.  
  793. add bellow
  794.  
  795. //DouglasPro:: BlackShark Logic Help By TheHexa
  796. int m_ForcingHeadShotDetection;
  797. int m_PlayerInvisibleDetection;
  798. int m_PlayerTeleportDetection;
  799. int m_D3DIssueDetection;
  800. int m_PlayerPickupDecoyDetection;
  801. int m_PlayerPickupDetection;
  802. int m_PlayerGameTimeDetection;
  803. //// Fineshed BlackShark ///
  804.  
  805. search for
  806.  
  807. // precalculated boost vars
  808. float boostXPBonus_;
  809. float boostWPBonus_;
  810.  
  811. add bellow
  812.  
  813. //DouglasPro:: [BlackShark]
  814. r3dPoint3D CurPositionPackets;
  815. float lastPickupNotifyTime;
  816.  
  817. search for
  818. bool CheckForFastMove();
  819.  
  820. add bellow
  821.  
  822. float lastPlayerAction_; // used for AFK checks
  823. int fireAtSafezone_;//DouglasPro:: BlackShark
  824.  
  825. search for
  826.  
  827. void UseItem_CreateNote(const PKT_C2S_CreateNote_s& n);
  828.  
  829. add bellow
  830.  
  831. bool IsInVehicle();//BlackShark Parameter
  832. bool isInVehicle;//BlackShark Parameter
  833.  
  834. search for
  835. else
  836. {
  837. fromPlr->numChatMessages_++;
  838. if(fromPlr->numChatMessages_ >= CHAT_NUMBER_TO_SPAM)
  839. {
  840. DisconnectPeer(peerId, true, "invalid PKT_C2C_ChatMessage #3 - spam");
  841. return;
  842. }
  843. }
  844.  
  845. add bellow
  846.  
  847. //TheHexa:: Simple logic for chat text detection...
  848. if(strncmp(n.msg, "UC", 2) == 0 ||
  849. strncmp(n.msg, "cheats", 6) == 0 ||
  850. strncmp(n.msg, "cheat", 5) == 0 ||
  851. strncmp(n.msg, "hacks", 5) == 0 ||
  852. strncmp(n.msg, "hack", 4) == 0 ||
  853. strncmp(n.msg, "unknown", 7) == 0 ||
  854. strncmp(n.msg, "tmcheats", 8) == 0 ||
  855. strncmp(n.msg, "unknowncheats", 13) == 0 ||
  856. strncmp(n.msg, "tmcheats", 7) == 0 ||
  857. strncmp(n.msg, "aimjunkies", 9) == 0 ||
  858. strncmp(n.msg, "LastDay", 7) == 0 ||
  859. strncmp(n.msg, "NewLastDay", 10) == 0 ||
  860. strncmp(n.msg, "WarZone", 7) == 0 ||
  861. strncmp(n.msg, "WarZombie", 9) == 0 ||
  862. strncmp(n.msg, "LeNinjaZ", 8) == 0 ||
  863. strncmp(n.msg, "LeNinja", 7) == 0 ||
  864. strncmp(n.msg, "InfectZ", 7) == 0)
  865. {
  866. char msg[512]; //DouglasPro:: simple New parameter Added ...
  867. char userName[512];
  868. gMasterServerLogic.BlackShark_SendNoticeMsg("another emulator chatting Player Kicked '%s'",userName);
  869. gServerLogic.DisconnectPeer(peerId,true,msg);
  870. return;
  871. }
  872.  
  873. search for
  874. IMPL_PACKET_FUNC(ServerGameLogic, PKT_C2S_TEST_SpawnDummyReq)
  875. {
  876. r3dOutToLog("!!!!!!! NOPE: dummies not implemented\n");
  877. r3d_assert(fromObj);
  878. r3d_assert(IsServerPlayer(fromObj));
  879.  
  880. return;
  881. }
  882.  
  883. add bellow
  884.  
  885. IMPL_PACKET_FUNC(ServerGameLogic, PKT_C2S_BlackSharkPlayerD3DPossibility)
  886. {
  887. obj_ServerPlayer* fromPlr = GetPeer(peerId).player;
  888. if(!fromPlr)
  889. {
  890. return;
  891. }
  892.  
  893. //DouglasPro:: 25/08 - Just check d3d issues for now...
  894. if(n.isD3DIssue)
  895. {
  896. //DouglasPro:: Here we detect D3D hacks!
  897. if(fromPlr->profile_.ProfileData.isDevAccount == 0) //DouglasPro:: We have DEV ESP - That can force some error on detection code, so, skip for devs :}
  898. {
  899. fromPlr->m_D3DIssueDetection++;
  900. if(fromPlr->m_D3DIssueDetection > u_GetRandom(1.0f, 3.0f))
  901. {
  902. char msg[128];
  903. char userName[512];
  904. gMasterServerLogic.BlackShark_SendNoticeMsg("Player WallHack Kicked Server '%s'",userName);
  905. gServerLogic.DisconnectPeer(fromPlr->peerId_,true,msg);
  906. }
  907. }
  908. }
  909. }
  910.  
  911. search for
  912. void ServerGameLogic::OnPKT_C2S_ScreenshotData(DWORD peerId, const int size, const char* data)
  913. {
  914. char fname[MAX_PATH];
  915.  
  916. const peerInfo_s& peer = GetPeer(peerId);
  917. if(peer.player == NULL) {
  918. return;
  919. } else {
  920. sprintf(fname, "FairFightSS\\JPG_%d_%d_%d_%x.jpg", ginfo_.gameServerId, peer.player->profile_.CustomerID, peer.player->loadout_->LoadoutID, GetTickCount());
  921. }
  922.  
  923. r3dOutToLog("peer%02d received screenshot, fname:%s", peerId, fname);
  924.  
  925. FILE* f = fopen(fname, "wb");
  926. if(f == NULL) {
  927. LogInfo(peerId, "SaveScreenshot", "unable to save fname:%s", fname);
  928. return;
  929. }
  930. fwrite(data, 1, size, f);
  931. fclose(f);
  932.  
  933. return;
  934. }
  935.  
  936. add above
  937.  
  938. ////////////////////////////////////////// B L A C K S H A R K [ANTICHEAT] ///////////////////////////////////////////////////
  939. int file_exists(const char *filename) //DouglasPro:: BlackSharK checking...
  940. {
  941. FILE *arquivo;
  942. if(arquivo = fopen(filename, "r"))
  943. {
  944. fclose(arquivo);
  945. return 1;
  946. }
  947. return 0;
  948. }
  949.  
  950. void Injetado()
  951. {
  952. Sleep (5000);
  953. ExitProcess(0);
  954. }
  955. void I_loop(){
  956. //DouglasPRO Dica: [NOME.extenção] não é case sensitive.
  957. if (GetModuleHandle("speedhack.dll") ||
  958. (GetModuleHandle("FredaikiZ_[www.unknowncheats.me]_.dll")) ||
  959. (GetModuleHandle("DeadZ_CFF.dll")) ||
  960. (GetModuleHandle("Wall.dll")) ||
  961. (GetModuleHandle("WallHack.dll")) ||
  962. (GetModuleHandle("Wall WarZ.dll")) ||
  963. (GetModuleHandle("Wall Infestation.dll")) ||
  964. (GetModuleHandle("Pure WarZ_[www.unknowncheats.me]_.dll")) ||
  965. (GetModuleHandle("Disco_[www.unknowncheats.me]_.dll")) ||
  966. (GetModuleHandle("smoll.dll")) ||
  967. (GetModuleHandle("speed-hack.dll")) ||
  968. (GetModuleHandle("speed-hack.dll")) ||
  969. (GetModuleHandle("speed_hack.dll")) ||
  970. (GetModuleHandle("hack_speed.dll")) ||
  971. (GetModuleHandle("hack-speed.dll")) ||
  972. (GetModuleHandle("hackspeed.dll")) ||
  973. (GetModuleHandle("hack.dll")) ||
  974. (GetModuleHandle("wpepro.dll")) ||
  975. (GetModuleHandle("Cr4ck3r.dll")) ||
  976. (GetModuleHandle("wpeprospy.dll")) ||
  977. (GetModuleHandle("engine.dll")) ||
  978. (GetModuleHandle("CheatEngine.dll")) ||
  979. (GetModuleHandle("c.e.dll")) ||
  980. (GetModuleHandle("cheat.dll")) ||
  981. (GetModuleHandle("AlphaMMO.dll")) ||
  982. (GetModuleHandle("NerVoSuh_TheHexa_v5_6_[www.unknowncheats.me]_.dll")) ||
  983. (GetModuleHandle("kernel.dll")) ||
  984. (GetModuleHandle("Kernell.dll")) ||
  985. (GetModuleHandle("nervosuh.dll")) ||
  986. (GetModuleHandle("L-Loader.dll")) ||
  987. (GetModuleHandle("Sml.dll")) ||
  988. (GetModuleHandle("Sml_[www.unknowncheats.me]_.dll")) ||
  989. (GetModuleHandle("ExtremeEgine.dll")) ||
  990. (GetModuleHandle("Sml V2_[www.unknowncheats.me]_.dll")) ||
  991. (GetModuleHandle("[unknowncheats.me].dll")) ||
  992. (GetModuleHandle("smoll.dll")) )
  993. {
  994. Injetado();
  995. MessageBox(NULL, "Detect DLL Inject , Exiting Game...", "AlphaMMO [BLACKSHARK]", MB_OK);
  996. }
  997. if(!FindWindow(NULL,"BlackShark 'Kicked'"))
  998. {
  999. }
  1000. }
  1001.  
  1002. void I_Scan(){
  1003. again:
  1004. I_loop();
  1005. Sleep(1000);
  1006. goto again;
  1007. }
  1008.  
  1009. void Dll_Inject(){
  1010. CreateThread(NULL,NULL,LPTHREAD_START_ROUTINE(I_Scan),NULL,0,0);
  1011. I_loop();
  1012. }
  1013. ////////////////////////// FINESHED BLACK SHARK //////////////////////////////////////////////////////////////////////
  1014.  
  1015. search for
  1016. DEFINE_PACKET_HANDLER(PKT_C2S_DBG_LogMessage);
  1017.  
  1018. add bellow
  1019. //DouglasPRO::BlackShark AC logic based TheHexa !!
  1020. DEFINE_PACKET_HANDLER(PKT_C2S_BlackSharkPlayerD3DPossibility);
  1021.  
  1022. search for
  1023. #include "GameObjects/ObjManag.h"
  1024.  
  1025. add bellow
  1026. #include "StdAfx.h" //DouglasPRO:: BlackShark AC
  1027.  
  1028. search for
  1029. startPlayTime_ = r3dGetTime();
  1030.  
  1031. add bellow
  1032.  
  1033. security_utcGameTimeSent = false;// for BlackShark
  1034. security_GameTimeSent = false;// for BlackShark
  1035.  
  1036. m_PlayerFlyingAntiCheatTimer = 0.0f;
  1037. m_PlayerUndergroundAntiCheatTimer = 0.0f;
  1038. //DouglasPro:: BlackShark Logic By Help TheHexa
  1039. m_ForcingHeadShotDetection = 0;
  1040. m_PlayerInvisibleDetection = 0;
  1041. m_PlayerTeleportDetection = 0;
  1042. m_D3DIssueDetection = 0;
  1043. m_PlayerPickupDecoyDetection = 0;
  1044. m_PlayerPickupDetection = 0;
  1045. m_PlayerGameTimeDetection = 0;
  1046. lastPickupNotifyTime = 0;
  1047. //// FineshedBlackShark /////
  1048.  
  1049. search for
  1050. m_PlayerState = 0;
  1051.  
  1052. add bellow
  1053. fireAtSafezone_ = 0;//DouglasPro:: BlackShark
  1054.  
  1055. search for
  1056. if(wid < 0 || wid >= NUM_WEAPONS_ON_PLAYER)
  1057. {
  1058. gServerLogic.LogInfo(peerId_, "wid invalid", "%s %d", pktName, wid);
  1059. return false;
  1060. }
  1061.  
  1062. add bellow
  1063. // BlackShark Detect Players SafeZone Fired
  1064. if(loadout_->GameFlags & wiCharDataFull::GAMEFLAG_NearPostBox)
  1065. {
  1066. fireAtSafezone_++;
  1067. if(fireAtSafezone_ > u_GetRandom(4.0f, 10.0f))
  1068. {
  1069. char msg[128];
  1070. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Detect SafeZone Kill Player Banned '%s'",userName);
  1071. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  1072. //gServerLogic.DisconnectPeer(peerId_,true,msg)
  1073. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);;
  1074. }
  1075. return false;
  1076. }
  1077.  
  1078. search for
  1079. gServerLogic.TrackWeaponUsage(wpn->getConfig()->m_itemID, 1, 0, 0);
  1080.  
  1081. add bellow or replace to
  1082. //DouglasPRO :: BlackShark Testings
  1083. if(executeFire && gServerLogic.weaponDataUpdates_ < 2 && profile_.ProfileData.isDevAccount == 0)
  1084. {
  1085. // check if we fired more that we was able
  1086. wiInventoryItem& wi = wpn->getPlayerItem();
  1087. if(wi.Var1 <= 0 && profile_.ProfileData.isDevAccount == 0)
  1088. {
  1089. char msg[128];
  1090. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned '%s'",userName);
  1091. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  1092. //gServerLogic.DisconnectPeer(peerId_,true,msg)
  1093. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);;
  1094. gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_NumShots, true, "bullethack", "%d/%d clip:%d(%s)",
  1095. wi.Var1,
  1096. wpn->getClipConfig()->m_Clipsize,
  1097. wpn->getClipConfig()->m_itemID,
  1098. wpn->getClipConfig()->m_StoreName
  1099. );
  1100. return false;
  1101. }
  1102.  
  1103. wpn->getPlayerItem().Var1--;
  1104. }
  1105.  
  1106. return true;
  1107. }
  1108.  
  1109. search for
  1110. const float TimePassed = R3D_MIN(r3dGetFrameTime(), 0.1f);
  1111. if(m_PlayerState == PLAYER_MOVE_SPRINT)
  1112.  
  1113. add bellow
  1114. if(m_PlayerState == PLAYER_MOVE_SPRINT)
  1115. {
  1116. m_Stamina -= TimePassed;
  1117. if(m_Stamina < -60.0f && profile_.ProfileData.isDevAccount == 0) //DouglasPro:: BlackShark AC implemented
  1118. {
  1119. gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_Stamina, true, "stamina");
  1120. gMasterServerLogic.BlackShark_SendNoticeMsg("Stamina Passed Limit '%s'",userName);
  1121. }
  1122. }
  1123.  
  1124. seach for
  1125. float avgSpeed = moveAccumDist / moveAccumTime;
  1126. bool isCheat = false;
  1127.  
  1128. replace to
  1129.  
  1130. //r3dOutToLog("avgSpeed: %f vs %f\n", avgSpeed, GPP_Data.AI_SPRINT_SPEED);
  1131. if(loadout_->Alive && avgSpeed > GPP_Data.AI_SPRINT_SPEED * 1.7f && profile_.ProfileData.isDevAccount == 0)//DouglasPro:: [BlackShark AC]
  1132. {
  1133. //char msg[128];
  1134. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Killed '%s'",userName);
  1135. //g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  1136. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);;
  1137. {
  1138. gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_FastMove, true, "CheatFastMove",
  1139. "dist: %f for %f, speed:%f\n",
  1140. moveAccumDist,
  1141. moveAccumTime,
  1142. avgSpeed
  1143. );
  1144. isCheat = true;
  1145. }
  1146. }
  1147.  
  1148. search for
  1149. p1.y = 0;
  1150. p2.y = 0;
  1151. float dist = (p1 - p2).Length();
  1152.  
  1153. add bellow or replace to
  1154. // check for teleport - more that 3 sec of sprint speed. MAKE sure that max dist is more that current netMover.cellSize
  1155. if(loadout_->Alive && dist > GPP_Data.AI_SPRINT_SPEED * 3.0f && profile_.ProfileData.isDevAccount == 0) //DouglasPro:: don't kick devs for speed hack :)
  1156. {
  1157. m_PlayerTeleportDetection++;
  1158. if(m_PlayerTeleportDetection > u_GetRandom(6.0f, 16.0f))
  1159. {
  1160. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark kicked '%s'",userName);//DouglasPro:: BlackShark Checking !!
  1161. //gServerLogic.DisconnectPeer(peerId_,true,msg)
  1162. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);;
  1163. gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_NumShots, true, "TELEPORT");
  1164. }
  1165. return;
  1166. }
  1167. }
  1168.  
  1169. search for
  1170. void obj_ServerPlayer::OnNetPacket(const PKT_C2C_PlayerHitStatic_s& n)
  1171.  
  1172. replace function
  1173. void obj_ServerPlayer::OnNetPacket(const PKT_C2C_PlayerHitStatic_s& n)
  1174. {
  1175. //r3dOutToLog("FireHitCount--: PKT_C2C_PlayerHitStatic_s\n");
  1176. FireHitCount--;
  1177. if(FireHitCount < -10) // -10 - to allow some buffer
  1178. {
  1179. // char msg[128];
  1180. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Kicked '%s'",userName);//DouglasPro:: BlackShark Checking !!
  1181. //g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  1182. //gServerLogic.DisconnectPeer(peerId_,true,msg)
  1183. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);;
  1184. gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_NumShots, true, "bullethack2");
  1185. return;
  1186. }
  1187.  
  1188. RelayPacket(&n, sizeof(n), false);
  1189. }
  1190.  
  1191. search for
  1192. if(!gServerLogic.CanDamageThisObject(targetObj))
  1193. {
  1194. gServerLogic.LogInfo(peerId_, "HitBody1", "hit object that is not damageable!");
  1195. return;
  1196. }
  1197.  
  1198. add bellow
  1199. // DouglasPro:: TheHexa thanks for this logic motherfucker !
  1200. if(n.hit_body_part == 1 && n.wasHeadShoting != 0x50 || OBJTYPE_Zombie)
  1201. {
  1202. //DouglasPro:: WHOOOA!
  1203. //That is a FORCE HEADSHOT!!!
  1204. //but we need get some random for that
  1205. //to prevent kids crying after get punished by BLACKSHARK
  1206. m_ForcingHeadShotDetection++;
  1207. if(m_ForcingHeadShotDetection > u_GetRandom(40.0f, 65.0f))
  1208. {
  1209. char msg[512];
  1210. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Banned Player '%s'",userName);
  1211. g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  1212. //gServerLogic.DisconnectPeer(peerId_,true,msg)
  1213. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);;
  1214. gServerLogic.LogCheat(peerId_, PKT_S2C_CheatWarning_s::CHEAT_BadWeapData, false, "[BLACKSHARK DETECT] FORCE_HEAD_SHOT PLAYER");
  1215. }
  1216. }
  1217.  
  1218. search for
  1219. if (!wc && n.m_itemId != 0 || !heHaveWep) // itemDB.xml or weapon not sync with servers. disconnect him!
  1220. {
  1221. // i think he have a problem. not all % he cheats.
  1222. gServerLogic.DisconnectPeer(peerId_,false,"BulletValidate: %s weapon not sync with servers. itemid %d",userName,n.m_itemId);
  1223. return;
  1224. }
  1225.  
  1226. addbellow
  1227. if(wc->m_reloadTime > 1.0f && u_GetRandom(6.0f, 15.0f) || profile_.ProfileData.isDevAccount == 0)
  1228. {
  1229. //char msg[512];
  1230. //g_AsyncApiMgr->AddJob(new CJobBanID(profile_.CustomerID,msg));
  1231. gMasterServerLogic.BlackShark_SendNoticeMsg("BlackShark Anti Cheat Killed '%s' Violation Server",userName);
  1232. //gServerLogic.DisconnectPeer(peerId_,true,msg);
  1233. gServerLogic.DoKillPlayer(this, this, storecat_INVALID, true);
  1234. return;
  1235.  
  1236. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement