Advertisement
RiseAboveHate

War System By RiseAboveHate V1.5

Sep 15th, 2013
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 9.40 KB | None | 0 0
  1. #include <a_samp>
  2. #define randomex(%0,%1) random(%1 - %0) + %0
  3. #define WAR_MAX_PLAYERS (10)
  4. enum eWAR
  5. {
  6.     WAR_PLAYERS,
  7.     WAR_ON,
  8.     WAR_START,
  9.     WAR_PRICE,
  10.     WAR_NUM,
  11.     WAR_TIMER
  12. }
  13. new War[eWAR];
  14. enum PWAR
  15. {
  16.     IN_WAR,
  17.     NAME[MAX_PLAYER_NAME + 1]
  18. };
  19. new PWar[MAX_PLAYERS][PWAR];
  20. new Float:WarSpawns[10][3] =
  21. {
  22.     {-970.1308,1090.2428,1345.0074},
  23.     {-971.1633,1024.8346,1345.0646},
  24.     {-1017.7231,1038.8334,1341.3516},
  25.     {-1040.4578,1087.2854,1343.1233},
  26.     {-1072.8862,1083.7346,1342.1133},
  27.     {-1066.1184,1032.2316,1343.1248},
  28.     {-1089.8938,1048.4607,1343.6915},
  29.     {-1136.4137,1027.2606,1345.7562},
  30.     {-1131.7802,1092.8384,1345.7885},
  31.     {-1054.5084,1062.0303,1341.3586}
  32. };
  33. new Str[128];
  34. #define FILTERSCRIPT
  35. public OnFilterScriptInit() return print("  War System By RiseAboveHate V1.0 Has Been Loaded.");
  36. public OnFilterScriptExit() return print("  War System By RiseAboveHate V1.0 Has Been UnLoaded.");
  37.  
  38. public OnPlayerConnect(playerid) return GetPlayerName(playerid, PWar[playerid][NAME], MAX_PLAYER_NAME + 1), PWar[playerid][IN_WAR] = 0;
  39.  
  40. public OnPlayerDisconnect(playerid, reason) return PWar[playerid][NAME][0] = EOS, RemovePlayerFromWar(playerid);
  41.  
  42. public OnPlayerDeath(playerid, killerid, reason) return RemovePlayerFromWar(playerid);
  43.  
  44. public OnPlayerText(playerid, text[])
  45. {
  46.     if(PWar[playerid][IN_WAR] == 1 && War[WAR_START] == 1) return SendClientMessage(playerid, 0xFF0000AA, ".àúä áôòéìåú åìëï àéðê éëåì ìãáø áö'àè"), 0;
  47.     return 1;
  48. }
  49.  
  50. public OnPlayerCommandText(playerid, cmdtext[])
  51. {
  52.     if(PWar[playerid][IN_WAR] == 1 && War[WAR_START] == 1) return SendClientMessage(playerid, 0xFF0000AA, ".àúä áôòéìåú åìëï àéðê éëåì ìáöò ô÷åãåú");
  53.     new cmd[128], idx, tmp[128];
  54.     cmd = strtok(cmdtext, idx);
  55.     if(strcmp(cmd, "/StartWar", true) == 0)
  56.     {
  57.         tmp = strtok(cmdtext, idx);
  58.         new WPrice = strval(tmp);
  59.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000AA, ".àéðê àãîéï ø÷åï");
  60.         if(War[WAR_ON] == 1 || War[WAR_START] == 1) return SendClientMessage(playerid, 0xFFFF00AA, "!éù ëáø ôòéìåú îåôòìú");
  61.         if(!strlen(tmp)) return SendClientMessage(playerid, 0xFF0000AA, "/StartWar [Price] :ùéîåù");
  62.         if(WPrice > 500000) return SendClientMessage(playerid, 0xFF0000AA, ".$500,000 äëñó ìæåëä éëåì ìäéåú òã");
  63.         War[WAR_ON] = 1;
  64.         War[WAR_PLAYERS] = 0;
  65.         War[WAR_PRICE] = WPrice;
  66.         WarCd(30, 1);
  67.         War[WAR_NUM] = randomex(0, 40);
  68.         SendClientMessageToAll(-1, "{FFD000}|~~~~~~~~~~~~~~~~~~~~{00B3FF}War{FFD000}~~~~~~~~~~~~~~~~~~~~|");
  69.         format(Str, sizeof Str, "{99FF00}.%s äåôòìä òì éãé War äôòéìåú", PWar[playerid][NAME]);
  70.         SendClientMessageToAll(-1, Str);
  71.         format(Str, sizeof Str, "{FF0D00}/War %d - áëãé ìäøùí ìôòéìåú ä÷ù/é", War[WAR_NUM]);
  72.         SendClientMessageToAll(-1, Str);
  73.         format(Str, sizeof Str, "{9D00FF}.áôòéìåú éù òã %d î÷åîåú", WAR_MAX_PLAYERS);
  74.         SendClientMessageToAll(-1, Str);
  75.         format(Str, sizeof Str, "{00FFD0}.$%s :äôøñ ìîðöç äåà", AddCommas(War[WAR_PRICE]));
  76.         SendClientMessageToAll(-1, Str);
  77.         SendClientMessageToAll(-1, "{FFD000}|~~~~~~~~~~~~~~~~~~~~{00B3FF}War{FFD000}~~~~~~~~~~~~~~~~~~~~|");
  78.         return 1;
  79.     }
  80.     if(strcmp(cmdtext, "/StopWar", true) == 0)
  81.     {
  82.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000AA, ".àéðê àãîéï ø÷åï");
  83.         if(War[WAR_ON] == 0 || War[WAR_START] == 0) return SendClientMessage(playerid, 0xFFFF00AA, "!àéï ôòéìåú îåôòìú");
  84.         for(new i = 0; i < GetMaxPlayers(); i++) if(IsPlayerConnected(i) && PWar[i][IN_WAR] == 1)
  85.         {
  86.             if(War[WAR_START] == 1) return SpawnPlayer(i), PWar[i][IN_WAR] = 0, War[WAR_PLAYERS] = 0, War[WAR_ON] = 0, War[WAR_PRICE] = 0, War[WAR_NUM] = 0;
  87.             else if(War[WAR_ON] == 1 && War[WAR_START] == 0) return PWar[i][IN_WAR] = 0, War[WAR_PLAYERS] = 0, War[WAR_ON] = 0, War[WAR_PRICE] = 0, War[WAR_NUM] = 0, KillTimer(War[WAR_TIMER]);
  88.         }
  89.         format(Str, sizeof Str, ".Waräôñé÷ àú ôòéìåú ä \"%s\" äàãîéï", PWar[playerid][NAME]);
  90.         SendClientMessageToAll(0xFF0000AA, Str);
  91.         return 1;
  92.     }
  93.     if(strcmp(cmd, "/War", true) == 0)
  94.     {
  95.         tmp = strtok(cmdtext, idx);
  96.         new WarNum = strval(tmp);
  97.         if(War[WAR_START] == 1) return SendClientMessage(playerid, 0xFFFF00AA, ".éù ëáø ôòéìåú îåôòìú");
  98.         if(War[WAR_ON] == 0) return SendClientMessage(playerid, 0xFFFF00AA, ".àéï ôòéìåú îåôòìú ëøâò");
  99.         if(PWar[playerid][IN_WAR] == 1) return SendClientMessage(playerid, 0xFFFF00AA, "!àúä ëáø áôòéìåú");
  100.         if(!strlen(tmp)) return format(Str, sizeof Str, "/War %d - :ùéîåù", War[WAR_NUM]) && SendClientMessage(playerid, 0xFF0000AA, Str);
  101.         if(WarNum != War[WAR_NUM]) return format(Str, sizeof Str, "/War %d - :ùéîåù", War[WAR_NUM]) && SendClientMessage(playerid, 0xFF0000AA, Str);
  102.         if(War[WAR_PLAYERS] >= WAR_MAX_PLAYERS) return SendClientMessage(playerid, 0xFFFF00AA, ".ëì äî÷åîåú úåôñéí, àðà äúòæø áñáìðåú òã ùúéâîø äôòéìåú");
  103.         PWar[playerid][IN_WAR] = 1;
  104.         War[WAR_PLAYERS]++;
  105.         format(Str, sizeof Str, "(%d/%d) !áäöìçä Warðùøîú ìôòéìåú ä", War[WAR_PLAYERS], WAR_MAX_PLAYERS);
  106.         SendClientMessage(playerid, 0xFF0D00AA, Str);
  107.         return 1;
  108.     }
  109.     return 0;
  110. }
  111.  
  112. forward WarCd(cd, cdnum);
  113. public WarCd(cd, cdnum)
  114. {
  115.     if(cdnum == 1)
  116.     {
  117.         if(cd > 0) cd--, War[WAR_TIMER] = SetTimerEx("WarCd", 1000, false, "dd", cd, cdnum), format(Str, sizeof Str, "~b~[]~b~|~r~/War %d ~b~| ~y~%d ~b~|~g~[]", War[WAR_NUM], cd), GameTextForAll(Str, 1000, 3);
  118.         else
  119.         {
  120.             for(new i = 0; i < GetMaxPlayers(); i++) if(IsPlayerConnected(i) && PWar[i][IN_WAR] == 1 && War[WAR_ON] == 1)
  121.             {
  122.                 if(War[WAR_PLAYERS] < 2) return SendClientMessageToAll(0xFFFF00AA, "! äôòìéåú áåèìä ò÷á çåñø îùúúôéí"), PWar[i][IN_WAR] = 0, War[WAR_PLAYERS] = 0, War[WAR_ON] = 0, War[WAR_PRICE] = 0, War[WAR_NUM] = 0;
  123.                 War[WAR_START] = 1;
  124.                 WarCd(10, 2);
  125.                 TogglePlayerControllable(i, 0);
  126.                 SetPlayerHealth(i, 1000000.00);
  127.                 SetPlayerArmour(i, 1000000.00);
  128.             }
  129.         }
  130.     }
  131.     if(cdnum == 2)
  132.     {
  133.         if(cd > 0) cd--, War[WAR_TIMER] = SetTimerEx("WarCd", 1000, false, "dd", cd, cdnum), format(Str, sizeof Str, "~b~[]~b~|~r~/War ~b~| ~y~%d ~b~|~g~[]", cd), GameTextForAll(Str, 1000, 3);
  134.         else
  135.         {
  136.             for(new i = 0; i < GetMaxPlayers(); i++) if(IsPlayerConnected(i) && PWar[i][IN_WAR] == 1 && War[WAR_ON] == 1 && War[WAR_START] == 1)
  137.             {
  138.                 War[WAR_START] = 1;
  139.                 new RandWarPos = random(sizeof(WarSpawns));
  140.                 SetPlayerPos(i, WarSpawns[RandWarPos][0], WarSpawns[RandWarPos][1], WarSpawns[RandWarPos][2]);
  141.                 switch(random(6))
  142.                 {
  143.                     case 1: GivePlayerWeapon(i, 26, 1000);
  144.                     case 2: GivePlayerWeapon(i, 27, 1000);
  145.                     case 3: GivePlayerWeapon(i, 28, 1000);
  146.                     case 4: GivePlayerWeapon(i, 30, 1000);
  147.                     case 5: GivePlayerWeapon(i, 31, 1000);
  148.                     case 6: GivePlayerWeapon(i, 32, 1000);
  149.                 }
  150.                 SetPlayerInterior(i, 10);
  151.                 TogglePlayerControllable(i, 1);
  152.                 SetPlayerHealth(i, 100.00);
  153.                 SetPlayerArmour(i, 100.00);
  154.                 GameTextForPlayer(i, "~g~[] ~r~Good ~p~Luck~g~ []", 3000, 3);
  155.             }
  156.         }
  157.     }
  158.     return 1;
  159. }
  160. stock RemovePlayerFromWar(playerid)
  161. {
  162.     if(PWar[playerid][IN_WAR] == 1 && War[WAR_ON] == 1 && War[WAR_START] == 1) return SpawnPlayer(playerid), PWar[playerid][IN_WAR] = 0, War[WAR_PLAYERS]--, WarCheck();
  163.     return 1;
  164. }
  165. forward WarCheck();
  166. public WarCheck()
  167. {
  168.     for(new i = 0; i < GetMaxPlayers(); i++) if(IsPlayerConnected(i) && PWar[i][IN_WAR] == 1 && War[WAR_ON] == 1 && War[WAR_PLAYERS] == 1)
  169.     {
  170.         SendClientMessageToAll(-1, "{FFD000}|~~~~~~~~~~~~~~~~~~~~{00B3FF}War{FFD000}~~~~~~~~~~~~~~~~~~~~|");
  171.         format(Str, sizeof Str, "{99FF00}.\"%s\" äåà Waräîðöç áôòéìåú ä", PWar[i][NAME]);
  172.         SendClientMessageToAll(-1, Str);
  173.         format(Str, sizeof Str, "{FF0D00}.$%s :äôøñ ù÷éáì äåà", AddCommas(War[WAR_PRICE]));
  174.         SendClientMessageToAll(-1, Str);
  175.         SendClientMessageToAll(-1, "{FFD000}|~~~~~~~~~~~~~~~~~~~~{00B3FF}War{FFD000}~~~~~~~~~~~~~~~~~~~~|");
  176.         GivePlayerMoney(i, War[WAR_PRICE]);
  177.         format(Str, sizeof Str, "$%s åæëéú á Warîæì èåá, ðéöçú áôòéìåú ä", AddCommas(War[WAR_PRICE]));
  178.         SendClientMessage(i, 0xFFFF00AA, Str);
  179.         War[WAR_PLAYERS] = 0, War[WAR_ON] = 0, War[WAR_PRICE] = 0, War[WAR_NUM] = 0;
  180.         SpawnPlayer(i);
  181.     }
  182.     return 1;
  183. }
  184.  
  185. strtok(const string[], &index,seperator=' ')
  186. {
  187.     new length = strlen(string);
  188.     new offset = index;
  189.     new result[20];
  190.     while ((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
  191.     {
  192.         result[index - offset] = string[index];
  193.         index++;
  194.     }
  195.  
  196.  
  197.     result[index - offset] = EOS;
  198.     if ((index < length) && (string[index] == seperator))
  199.     {
  200.         index++;
  201.     }
  202.     return result;
  203. }
  204.  
  205. stock strrest(str[], &index) {
  206.     new result[128];
  207.     strmid(result, str, index, strlen(str));
  208.     return result;
  209. }
  210.  
  211. stock AddCommas(number)
  212. {
  213.     new
  214.         tStr[13]; // Up to 9,999,999,999,999
  215.  
  216.     format(tStr,sizeof(tStr),"%d",number);
  217.  
  218.     if(strlen(tStr) < 4)
  219.      return tStr;
  220.  
  221.     new
  222.         //rNumber = floatround((number+(number/3)),floatround_floor),
  223.         iPos = strlen(tStr),
  224.         iCount = 1;
  225.  
  226.     while(iPos > 0)
  227.     {
  228.     if(iCount == 4)
  229.     {
  230.         iCount = 0;
  231.         strins(tStr,",",iPos,1);
  232.         iPos ++;
  233.     }
  234.  
  235.     iCount ++;
  236.     iPos --;
  237.     }
  238.     return tStr;
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement