Advertisement
YashasSamaga

BustAim - Demo Gamemode

May 15th, 2015
407
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 15.54 KB | None | 0 0
  1. #include <a_samp>
  2. #include <zcmd>
  3. #include <sscanf2>
  4.  
  5. #define BUSTAIM_MAX_PING 600
  6. #define BUSTAIM_MAX_PL_PERCENT_ALLOWED 5
  7.  
  8. #include "..\include\BustAim.inc"
  9. #include "..\include\colors.inc"
  10. ////////////////////////////////////////////////////////////////////////////////
  11. new Text:td;
  12. new Text:td2;
  13.  
  14. static ConnectMessageText[5][MAX_PLAYER_NAME + 19];
  15.  
  16. static Text:ConnectMessage1;
  17. static Text:ConnectMessage2;
  18. static Text:ConnectMessage3;
  19. static Text:ConnectMessage4;
  20. static Text:ConnectMessage5;
  21.  
  22. static ids[MAX_PLAYERS];
  23. ////////////////////////////////////////////////////////////////////////////////
  24. public OnPlayerSuspectedForAimbot(playerid,hitid,weaponid,warnings)
  25. {
  26.     new str[144],nme[MAX_PLAYER_NAME],wname[32],Float:Wstats[BUSTAIM_WSTATS_SHOTS];
  27.    
  28.     ids[playerid]++;
  29.     GetPlayerName(playerid,nme,sizeof(nme));
  30.     GetWeaponName(weaponid,wname,sizeof(wname));
  31.     if(warnings & WARNING_OUT_OF_RANGE_SHOT)
  32.     {
  33.         format(str,256,"[%d]%s(%d) fired shots from a distance greater than the %s's fire range(Normal Range:%d)",ids[playerid],nme,playerid,wname,BustAim::GetNormalWeaponRange(weaponid));
  34.         SendClientMessageToAll(-1,str);
  35.         BustAim::GetRangeStats(playerid,Wstats);
  36.         format(str,256,"Shooter to Victim Distance(SA Units): 1)%f 2)%f 3)%f",Wstats[0],Wstats[1],Wstats[2]);
  37.         SendClientMessageToAll(-1,str);
  38.     }
  39.     if(warnings & WARNING_PROAIM_TELEPORT)
  40.     {
  41.         format(str,256,"[%d]%s(%d) is using proaim (Teleport Detected)",ids[playerid],nme,playerid);
  42.         SendClientMessageToAll(-1,str);
  43.         BustAim::GetTeleportStats(playerid,Wstats);
  44.         format(str,256,"Bullet to Victim Distance(SA Units): 1)%f 2)%f 3)%f",Wstats[0],Wstats[1],Wstats[2]);
  45.         SendClientMessageToAll(-1,str);
  46.     }
  47.     if(warnings & WARNING_RANDOM_AIM)
  48.     {
  49.         format(str,256,"[%d]%s(%d) is suspected to be using aimbot(Hit with Random Aim with %s)",ids[playerid],nme,playerid,wname);
  50.         SendClientMessageToAll(-1,str);
  51.         BustAim::GetRandomAimStats(playerid,Wstats);
  52.         format(str,256,"Random Aim Offsets: 1)%f 2)%f 3)%f",Wstats[0],Wstats[1],Wstats[2]);
  53.         SendClientMessageToAll(-1,str);
  54.     }
  55.     if(warnings & WARNING_BACKWARD_SHOT)
  56.     {
  57.         format(str,256,"[%d]%s(%d) shot a player behind him with %s.",ids[playerid],nme,playerid,wname);
  58.         SendClientMessageToAll(-1,str);
  59.     }
  60.     if(warnings & WARNING_CONTINOUS_SHOTS)
  61.     {
  62.         format(str,256,"[%d]%s(%d) has fired 10 shots continously with %s(%d)",ids[playerid],nme,playerid,wname,weaponid);
  63.         SendClientMessageToAll(-1,str);
  64.     }
  65.     return 0;
  66. }
  67. ////////////////////////////////////////////////////////////////////////////////
  68. main()
  69. {
  70.     print("\n\n=================================================");
  71.     print(" XACNR Gamemode ");
  72.     print(" Copyright (C) 2013 Yashas Samaga ");
  73.     print("===================================================\n");
  74.    
  75.     ConnectMessage1 = TextDrawCreate(480,290, " ");
  76.     TextDrawSetProportional(ConnectMessage1,1);
  77.     TextDrawColor(ConnectMessage1,COLOR_WHITE);
  78.     TextDrawFont(ConnectMessage1,1);
  79.     TextDrawLetterSize(ConnectMessage1,0.169999, 1.199999);
  80.     TextDrawSetShadow(ConnectMessage1, 1);
  81.     ConnectMessage2 = TextDrawCreate(480,300, " ");
  82.     TextDrawSetProportional(ConnectMessage2,1);
  83.     TextDrawColor(ConnectMessage2,COLOR_WHITE);
  84.     TextDrawFont(ConnectMessage2,1);
  85.     TextDrawLetterSize(ConnectMessage2, 0.169999, 1.199999);
  86.     TextDrawSetShadow(ConnectMessage2, 1);
  87.     ConnectMessage3 = TextDrawCreate(480,310, " ");
  88.     TextDrawSetProportional(ConnectMessage3,1);
  89.     TextDrawColor(ConnectMessage3,COLOR_WHITE);
  90.     TextDrawFont(ConnectMessage3,1);
  91.     TextDrawLetterSize(ConnectMessage3, 0.169999, 1.199999);
  92.     TextDrawSetShadow(ConnectMessage3, 1);
  93.     ConnectMessage4 = TextDrawCreate(480,320, " ");
  94.     TextDrawSetProportional(ConnectMessage4,1);
  95.     TextDrawColor(ConnectMessage4,COLOR_WHITE);
  96.     TextDrawFont(ConnectMessage4,1);
  97.     TextDrawLetterSize(ConnectMessage4,0.169999, 1.199999);
  98.     TextDrawSetShadow(ConnectMessage4, 1);
  99.     ConnectMessage5 = TextDrawCreate(480,330, " ");
  100.     TextDrawSetProportional(ConnectMessage5,1);
  101.     TextDrawColor(ConnectMessage5,COLOR_WHITE);
  102.     TextDrawFont(ConnectMessage5,1);
  103.     TextDrawLetterSize(ConnectMessage5,0.169999, 1.199999);
  104.     TextDrawSetShadow(ConnectMessage5, 1);
  105.     AddPlayerClass(1, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0); // The Truth
  106.     AddPlayerClass(2, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // CJ
  107.     AddPlayerClass(3,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // The Truth
  108.     AddPlayerClass(4,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // CJ
  109.     AddPlayerClass(5,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // The Truth
  110.     AddPlayerClass(6,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // CJ
  111.     AddPlayerClass(7, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // The Truth
  112.     AddPlayerClass(8,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // CJ
  113.     AddPlayerClass(9,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // The Truth
  114.     AddPlayerClass(10,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // CJ
  115.     AddPlayerClass(11,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // The Truth
  116.     AddPlayerClass(12,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // CJ
  117.     AddPlayerClass(13,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // The Truth
  118.     AddPlayerClass(14,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // CJ
  119.     AddPlayerClass(15,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // The Truth
  120.     AddPlayerClass(16,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // CJ
  121.     AddPlayerClass(17,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // The Truth AddPlayerClass(0, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0); // CJ
  122.     AddPlayerClass(18,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // The Truth
  123.     AddPlayerClass(19,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // CJ
  124.     AddPlayerClass(20,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // The Truth AddPlayerClass(0, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0); // CJ
  125.     AddPlayerClass(21,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // The Truth AddPlayerClass(0, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0); // CJ
  126.     AddPlayerClass(22,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // The Truth
  127.     AddPlayerClass(23,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // CJ
  128.     AddPlayerClass(24,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // The Truth AddPlayerClass(0, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0); // CJ
  129.     AddPlayerClass(25,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // The Truth AddPlayerClass(0, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0); // CJ
  130.     AddPlayerClass(26,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // The Truth AddPlayerClass(0, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0); // CJ
  131.  
  132.     AddPlayerClass(27,1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // The Truth
  133. }
  134. public OnGameModeInit()
  135. {
  136.     SetGameModeText("BustAim Test Server");
  137.     td = TextDrawCreate(480,350,"");
  138.    
  139.     TextDrawFont(td,1);
  140.     TextDrawLetterSize(td,0.169999, 1.199999);
  141.     TextDrawSetShadow(td, 0);
  142.     TextDrawSetOutline(td,1);
  143.     TextDrawBackgroundColor(td,0x000000FF);
  144.    
  145.     td2 = TextDrawCreate(480,210,"");
  146.     TextDrawSetString(td2,"Type ~g~/help~w~ for more information~n~~g~/vspawn /teleto /teletome /sethealth /giveweapon~n~/freeze /unfreeze /jetpack /kill /movep /movev~n~/wmenu /vfix /dl~n~~n~~w~BustAim Profile Functions:~n~~g~/reset /profile /wprofile /wreset");
  147.     TextDrawFont(td2,1);
  148.     TextDrawLetterSize(td2,0.169999, 1.199999);
  149.     TextDrawSetShadow(td2, 0);
  150.     TextDrawSetOutline(td2,1);
  151.     TextDrawBackgroundColor(td2,0x000000FF);
  152.     return 1;
  153. }
  154. public OnGameModeExit()
  155. {
  156.  
  157.     return 1;
  158. }
  159. public OnPlayerRequestClass(playerid, classid)
  160. {
  161.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  162.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  163.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  164.     return 1;
  165. }
  166. public OnIncomingConnection(playerid, ip_address[], port)
  167. {
  168.     return 1;
  169. }
  170. static stock UpdateConnectMessages(playerid,name[],reason)
  171. {
  172.     new rsn[9];
  173.     new string[sizeof(rsn) + MAX_PLAYER_NAME + 10];
  174.  
  175.     if(reason == 1)
  176.     {
  177.         rsn = "~y~KICK:";
  178.     }
  179.     else if(reason == 2)
  180.     {
  181.         rsn = "~y~TIME:";
  182.     }
  183.     else if(reason == 3)
  184.     {
  185.         rsn = "~r~QUIT:";
  186.     }
  187.     else if(reason == 4)
  188.     {
  189.         rsn = "~g~JOIN:";
  190.     }
  191.     else
  192.     {
  193.         rsn = "~b~BUG:";
  194.     }
  195.     format(string,sizeof(string),"%s~w~%s(%d)",rsn,name,playerid);
  196.     ConnectMessageText[0] = ConnectMessageText[1];
  197.     ConnectMessageText[1] = ConnectMessageText[2];
  198.     ConnectMessageText[2] = ConnectMessageText[3];
  199.     ConnectMessageText[3] = ConnectMessageText[4];
  200.     ConnectMessageText[4] = string;
  201.  
  202.     TextDrawSetString(ConnectMessage1,ConnectMessageText[0]);
  203.     TextDrawSetString(ConnectMessage2,ConnectMessageText[1]);
  204.     TextDrawSetString(ConnectMessage3,ConnectMessageText[2]);
  205.     TextDrawSetString(ConnectMessage4,ConnectMessageText[3]);
  206.     TextDrawSetString(ConnectMessage5,string);
  207. }
  208. public OnPlayerConnect(playerid)
  209. {
  210.     new str[24];
  211.     ids[playerid] = 0;
  212.     GetPlayerName(playerid,str,24);
  213.     UpdateConnectMessages(playerid,str,4);
  214.     TextDrawShowForPlayer(playerid,td2);
  215.     TextDrawShowForPlayer(playerid,td);
  216.     TextDrawShowForPlayer(playerid,ConnectMessage1);
  217.     TextDrawShowForPlayer(playerid,ConnectMessage2);
  218.     TextDrawShowForPlayer(playerid,ConnectMessage3);
  219.     TextDrawShowForPlayer(playerid,ConnectMessage4);
  220.     TextDrawShowForPlayer(playerid,ConnectMessage5);
  221.  
  222.     return 1;
  223. }
  224. public OnPlayerUpdate(playerid)
  225. {
  226.     new str[256],nme[24];
  227.     format(str,256,"Packet Loss:");
  228.     for(new i = 0;i < 8;i++)
  229.     {
  230.         if(IsPlayerConnected(i))
  231.         {
  232.             GetPlayerName(i,nme,24);
  233.             format(str,256,"%s~n~~g~%s(%d):~r~%f",str,nme,i,NetStats_PacketLossPercent(i));
  234.         }
  235.     }
  236.     TextDrawSetString(td,str);
  237.     return 1;
  238. }
  239. public OnPlayerDisconnect(playerid, reason)
  240. {
  241.     new str[24];
  242.     GetPlayerName(playerid,str,24);
  243.     switch(reason)
  244.     {
  245.         case 0:UpdateConnectMessages(playerid,str,2);
  246.         case 1:UpdateConnectMessages(playerid,str,3);
  247.         case 2:UpdateConnectMessages(playerid,str,1);
  248.     }
  249.     return 1;
  250. }
  251. public OnPlayerRequestSpawn(playerid)
  252. {
  253.     return 1;
  254. }
  255. public OnPlayerSpawn(playerid)
  256. {
  257.     GivePlayerWeapon(playerid, 24, 5000);
  258.     GivePlayerWeapon(playerid, 26, 5000);
  259.     GivePlayerWeapon(playerid, 28, 9999);
  260.     GivePlayerWeapon(playerid, 31, 5000);
  261.     SetPlayerArmour(playerid,100);
  262.     SendClientMessage(playerid,0xFFFFFF,"Use /sethealth [playerid] [100000] to set yourself to god mode");
  263.     SendClientMessage(playerid,0xFFFFFF,"Use /givewep [playerid] [weaponid] [ammo] to give a weapon (/wmenu for weaponids)");
  264.     SendClientMessage(playerid,0xFFFFFF,"Use /teleto [playerid] and /teletome [playerid] to teleport yourself to a player or teleport a player to you respectively.");
  265.     SendClientMessage(playerid,0xFFFFFF,"Use /vspawn [modelid] [color1] [color2] (NRG=522,Hydra=520,Use /dl to see vehicle stats)");
  266.     SendClientMessage(playerid,0xFFFFFF,"[BUST-AIM]Use /profile [playerid] to check a players BustAim Profile and use /reset to reset your profile");
  267.     SendClientMessage(playerid,0xFFFFFF,"[BUST-AIM]Use /wprofile [playerid] [weaponid] to get Weapon Profile and /wreset to reset your weapon profile");
  268.     SendClientMessage(playerid,0xFFFFFF,"Type refill(main chat) to get instant ammo refill and godmode(main chat) to become immortal");
  269.  
  270.     return 1;
  271. }
  272.  
  273. COMMAND:help(playerid,params[])
  274. {
  275.     SendClientMessage(playerid,0xFFFFFF,"Use /sethealth [playerid] [100000] to set yourself to god mode");
  276.     SendClientMessage(playerid,0xFFFFFF,"Use /givewep [playerid] [weaponid] [ammo] to give a weapon (/wmenu for weaponids)");
  277.     SendClientMessage(playerid,0xFFFFFF,"Use /teleto [playerid] and /teletome [playerid] to teleport yourself to a player or teleport a player to you respectively.");
  278.     SendClientMessage(playerid,0xFFFFFF,"Use /vspawn [modelid] [color1] [color2] (NRG=522,Hydra=520,Use /dl to see vehicle stats)");
  279.     SendClientMessage(playerid,0xFFFFFF,"[BUST-AIM]Use /profile [PlayerID/Name] to check a players BustAim Profile and use /reset to reset your profile");
  280.     SendClientMessage(playerid,0xFFFFFF,"[BUST-AIM]Use /wprofile [PlayerID/Name] [weaponid] to get Weapon Profile and /wreset [weaponid] to reset your weapon profile");
  281.     SendClientMessage(playerid,0xFFFFFF,"Type refill(main chat) to get instant ammo refill and godmode(main chat) to become immortal");
  282.  
  283.     return 1;
  284. }
  285. COMMAND:profile(playerid,params[])
  286. {
  287.     new id;
  288.     if(sscanf(params, "u",id))
  289.     {
  290.         return SendClientMessage(playerid, 0xFF0000AA, "Usage:/profile [PlayerID/Name]");
  291.     }
  292.     new allshots,hitshots,max_cont_shots,out_of_range_warns,random_aim_warns,proaim_tele_warns,backward_shot_warns;
  293.     BustAim::GetPlayerProfile(id,allshots,hitshots,max_cont_shots,out_of_range_warns,random_aim_warns,proaim_tele_warns,backward_shot_warns);
  294.     new str[144],name[MAX_PLAYER_NAME];
  295.     GetPlayerName(id,name,MAX_PLAYER_NAME);
  296.     format(str,144,"BustAim Profile of %s(%d):Complete Profile:Stats of all weapons",name,id);
  297.     SendClientMessage(playerid,COLOR_GREEN,str);
  298.     format(str,144,"Fired:%d Hits:%d HitPercentage:%.2f MaxContinousShots:%d Bullets OutOfRangeWarns:%d AimWarns:%d TeleportWarns:%d BackwardShotWarns:%d",allshots,hitshots,((hitshots*100.0)/allshots),max_cont_shots,out_of_range_warns,random_aim_warns,proaim_tele_warns,backward_shot_warns);
  299.     SendClientMessage(playerid,COLOR_GREEN,str);
  300.     return 1;
  301. }
  302. COMMAND:wprofile(playerid,params[])
  303. {
  304.     new id,wid;
  305.     if(sscanf(params, "ui",id,wid))
  306.     {
  307.         return SendClientMessage(playerid, 0xFF0000AA, "Usage:/wprofile [PlayerID/Name] [WeaponID]");
  308.     }
  309.     new allshots,hitshots,max_cont_shots,out_of_range_warns,random_aim_warns,proaim_tele_warns,backward_shot_warns;
  310.     BustAim::GetPlayerWeaponProfile(playerid,wid,allshots,hitshots,max_cont_shots,out_of_range_warns,random_aim_warns,proaim_tele_warns,backward_shot_warns);
  311.     new str[144],name[MAX_PLAYER_NAME],wname[32];
  312.     GetPlayerName(id,name,MAX_PLAYER_NAME);
  313.     GetWeaponName(wid,wname,32);
  314.     format(str,144,"BustAim Weapon Profile of %s(%d):Stats of Weapon %s(%d)",name,id,wname,wid);
  315.     SendClientMessage(playerid,COLOR_GREEN,str);
  316.     format(str,144,"Fired:%d Hits:%d HitPercentage:%.2f MaxContinousShots:%d Bullets OutOfRangeWarns:%d AimWarns:%d TeleportWarns:%d BackwardShotWarns:%d",allshots,hitshots,((hitshots*100.0)/allshots),max_cont_shots,out_of_range_warns,random_aim_warns,proaim_tele_warns,backward_shot_warns);
  317.     SendClientMessage(playerid,COLOR_GREEN,str);
  318.     return 1;
  319. }
  320. COMMAND:reset(playerid,params[])
  321. {
  322.     BustAim::ResetPlayerProfile(playerid);
  323.     SendClientMessage(playerid,COLOR_GREEN,"Your profile has been reset for all weapons");
  324.     return 1;
  325. }
  326. COMMAND:wreset(playerid,params[])
  327. {
  328.     new tmp;
  329.     if(sscanf(params, "i",tmp))
  330.     {
  331.         return SendClientMessage(playerid, 0xFF0000AA, "Usage:/wprofile [WeaponID]");
  332.     }
  333.     BustAim::ResetPlayerWeaponProfile(playerid,tmp);
  334.     SendClientMessage(playerid,COLOR_GREEN,"Your weapon profile has been reset.");
  335.     return 1;
  336. }
  337. public OnPlayerDeath(playerid, killerid, reason)
  338. {
  339.    SendDeathMessage(killerid,playerid,reason);
  340. }
  341. public OnPlayerText(playerid, text[])
  342. {
  343.     if(strfind(text,"refill") != -1) {
  344.     GivePlayerWeapon(playerid, 1, 1);
  345.     GivePlayerWeapon(playerid, 24, 5000);
  346.     GivePlayerWeapon(playerid, 26, 5000);
  347.     GivePlayerWeapon(playerid, 28, 9999);
  348.     GivePlayerWeapon(playerid, 31, 5000);}
  349.     if(strfind(text,"godmode") != -1) { SetPlayerArmour(playerid,1000000); SetPlayerHealth(playerid,1000000); }
  350.     return 1;
  351. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement