Advertisement
RaFaeLs

rBoom.pwn

Apr 25th, 2012
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 10.17 KB | None | 0 0
  1. #include <a_samp>
  2. #include <Sscanf>
  3. #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  4.  
  5. enum Boom { PLAYERS,    BOOM_ON,    NOW_PLAYING,    MAX_PLAYING,    PRICE }
  6. new Timers[MAX_PLAYERS], BoomInfo[Boom], InBoom[MAX_PLAYERS], str[128], DO_BOOMS;
  7.  
  8. new Float:Objects[][7] = {
  9.     {10766.00,689.59997559,-2142.50000000,2.20000005,0.00000000,0.00000000,0.00000000}, //Object number 10766
  10.     {10766.00,631.70001221,-2142.60009766,2.20000005,0.00000000,0.00000000,0.00000000}, //Object number 10766
  11.     {8493.00,605.70001221,-2078.89990234,17.50000000,0.00000000,0.00000000,343.50000000}, //Object number 8493
  12.     {8210.00,632.40002441,-2032.69995117,7.30000019,0.00000000,0.00000000,0.01998901}, //Object number 8210
  13.     {8210.00,688.70001221,-2032.59997559,7.30000019,0.00000000,0.00000000,0.01647949}, //Object number 8210
  14.     {8210.00,716.70001221,-2060.69995117,7.30000019,0.00000000,0.00000000,270.00000000}, //Object number 8210
  15.     {8210.00,661.59997559,-2032.59997559,7.30000019,0.00000000,0.00000000,0.01647949}, //Object number 8210
  16.     {8210.00,716.70001221,-2116.30004883,7.30000019,0.00000000,0.00000000,269.99450684}, //Object number 8210
  17.     {8210.00,716.70001221,-2157.00000000,7.30000019,0.00000000,0.00000000,269.99450684}, //Object number 8210
  18.     {8210.00,688.70001221,-2185.00000000,7.30000019,0.00000000,0.00000000,180.00000000}, //Object number 8210
  19.     {8210.00,652.79998779,-2185.10009766,7.30000019,0.00000000,0.00000000,179.99450684}, //Object number 8210
  20.     {8210.00,632.70001221,-2185.19995117,7.30000019,0.00000000,0.00000000,179.99450684}, //Object number 8210
  21.     {8210.00,604.50000000,-2157.30004883,7.30000019,0.00000000,0.00000000,90.00000000}, //Object number 8210
  22.     {8210.00,604.50000000,-2101.69995117,7.30000019,0.00000000,0.00000000,90.00000000}, //Object number 8210
  23.     {8210.00,604.50000000,-2060.69995117,7.30000019,0.00000000,0.00000000,90.00000000}, //Object number 8210
  24.     {9159.00,605.59997559,-2078.69995117,17.29999924,0.00000000,0.00000000,343.50000000}, //Object number 9159
  25.     {10764.00,688.09997559,-2149.19995117,7.50000000,0.00000000,0.00000000,85.99993896}, //Object number 10764
  26.     {10764.00,641.50000000,-2142.69995117,7.50000000,0.00000000,0.00000000,169.99548340}, //Object number 10764
  27.     {10764.00,639.59997559,-2065.39990234,7.50000000,0.00000000,0.00000000,91.99145508}, //Object number 10764
  28.     {10764.00,687.00000000,-2066.30004883,7.50000000,0.00000000,0.00000000,183.98855591}, //Object number 10764
  29.     {620.00,716.20001221,-2183.50000000,4.50000000,0.00000000,0.00000000,0.00000000}, //Object number 620
  30.     {620.00,716.70001221,-2034.19995117,4.50000000,0.00000000,0.00000000,0.00000000}, //Object number 620
  31.     {620.00,606.09997559,-2033.50000000,4.50000000,0.00000000,0.00000000,0.00000000}, //Object number 620
  32.     {620.00,606.00000000,-2184.69995117,4.50000000,0.00000000,0.00000000,0.00000000}, //Object number 620
  33.     {712.00,609.59997559,-2064.10009766,12.10000038,0.00000000,0.00000000,24.99938965}, //Object number 712
  34.     {712.00,605.20001221,-2098.50000000,12.10000038,0.00000000,0.00000000,24.99938965}, //Object number 712
  35.     {805.00,629.09997559,-2168.30004883,5.30000019,0.00000000,0.00000000,0.00000000}, //Object number 805
  36.     {805.00,673.00000000,-2120.00000000,5.30000019,0.00000000,0.00000000,0.00000000}, //Object number 805
  37.     {805.00,652.90002441,-2077.89990234,5.30000019,0.00000000,0.00000000,0.00000000}, //Object number 805
  38.     {805.00,621.50000000,-2048.39990234,5.30000019,0.00000000,0.00000000,0.00000000}, //Object number 805
  39.     {805.00,699.40002441,-2053.50000000,5.30000019,0.00000000,0.00000000,0.00000000}, //Object number 805
  40.     {805.00,685.59997559,-2146.60009766,5.30000019,0.00000000,0.00000000,0.00000000} //Object number 805
  41. };
  42. new Objectid[sizeof(Objects)];
  43.  
  44. public OnFilterScriptInit()
  45.     return print("\n--------------------------------------\n BOOM Aactivitie BY RaFaeL loaded \n"), BoomInfo[BOOM_ON] = 0, BoomInfo[NOW_PLAYING] = 0, BoomInfo[PLAYERS] = 0, KillTimer(DO_BOOMS), 1;
  46.  
  47. public OnPlayerDisconnect(playerid, reason)
  48. {
  49.     if(InBoom[playerid] == 1)  BoomInfo[PLAYERS] --; InBoom[playerid] = 0, CheckWiner();
  50.     return 1;
  51. }
  52.  
  53. public OnPlayerDeath(playerid, killerid, reason)
  54. {
  55.     if(InBoom[playerid] == 1)  BoomInfo[PLAYERS] --; InBoom[playerid] = 0, SetPlayerTime(playerid,12,0), CheckWiner();
  56.     return 1;
  57. }
  58.  
  59. public OnPlayerCommandText(playerid, cmdtext[])
  60. {
  61.     dcmd(StartBoom, 9, cmdtext);
  62.     dcmd(StopBoom, 8, cmdtext);
  63.    
  64.     if(InBoom[playerid]) return SendClientMessage(playerid, 0xFF533BFF, "אתה לא יכל לבצע פקודות בזמן פעילות הבום!");
  65.     dcmd(Boom, 4, cmdtext);
  66.     return 0;
  67. }
  68. //=====================================================================
  69. dcmd_StartBoom(playerid, params[])
  70. {
  71.     if(!IsPlayerAdmin(playerid)) return 0;
  72.     if(BoomInfo[BOOM_ON] || BoomInfo[NOW_PLAYING]) return SendClientMessage(playerid, 0xFF533BFF, "The activitie \"Boom\" has been started");
  73.     if (sscanf(params, "ii", BoomInfo[MAX_PLAYING], BoomInfo[PRICE])) return SendClientMessage(playerid, 0xFF533BFF, "Usage: /StartBoom [Max Players] [Price]");
  74.  
  75.     SendClientMessageToAll(0xFFFFFFFF, ""), SendClientMessageToAll(0xFFFFFFFF, "========= /Boom ========");
  76.     format(str, sizeof(str), "הפעילות את פעילות הבומים {F5F272}%s{FFFFFF} האדמין", GetName(playerid)), SendClientMessageToAll(0xFFFFFFFF, str);
  77.     format(str, sizeof(str), "${2C99D1}%d{FFFFFF} :פרס", BoomInfo[PRICE]), SendClientMessageToAll(0xFFFFFFFF, str);
  78.     SendClientMessageToAll(0xFFFFFFFF, "המטרה: לשרוד אחרון ולא להתפוצץ"), SendClientMessageToAll(0xFFFFFFFF, "(c) RaFaeL - St0p נבנה על ידי"), SendClientMessageToAll(0xFFFFFFFF, "========= בהצלחה! ========"), SendClientMessageToAll(0xFFFFFFFF, "");
  79.    
  80.     return BoomInfo[BOOM_ON] = 1,JoiningCountDown(30);
  81. }
  82. dcmd_StopBoom(playerid, params[])
  83. {
  84.     #pragma unused params
  85.     if(!BoomInfo[BOOM_ON]) return SendClientMessage(playerid, 0xFF533BFF, "The activitie \"Boom\" has not been started");
  86.  
  87.     BoomInfo[BOOM_ON] = 0, BoomInfo[NOW_PLAYING] = 0, BoomInfo[PLAYERS] = 0, KillTimer(DO_BOOMS);
  88.     for(new i = 0; i < MAX_PLAYERS; i++)  if(IsPlayerConnected(i) && InBoom[i])InBoom[i] = 0, SpawnPlayer(i);
  89.     for(new i = 0; i < sizeof(Objects); i++) DestroyObject(Objectid[i]);
  90.    
  91.     return format(str, sizeof(str), "ביטל את פעילות הבומים {F5F272}%s{FFFFFF} האדמין", GetName(playerid)), SendClientMessageToAll(0xFFFFFFFF, str);
  92. }
  93. dcmd_Boom(playerid, params[])
  94. {
  95.     #pragma unused params
  96.     if(!BoomInfo[BOOM_ON] || BoomInfo[NOW_PLAYING]) return SendClientMessage(playerid, 0xFF533BFF, !BoomInfo[BOOM_ON]? ("הפעילות לא פעילה כרגע"):("הפעילות כבר החלה"));
  97.     if(BoomInfo[PLAYERS] > BoomInfo[MAX_PLAYING] || InBoom[playerid]) return SendClientMessage(playerid, 0xFF533BFF, InBoom[playerid]? ("כבר נרשמת, חכה בסבלנות"):("מצטערים, כל המקומות נתפסו"));
  98.  
  99.     return SendClientMessage(playerid,0x91EA85FF,"! הצטרפת בהצלחה"), InBoom[playerid] = 1, BoomInfo[PLAYERS]++, BoomInfo[PLAYERS] == BoomInfo[MAX_PLAYING]? SendClientMessageToAll(0x91EA85FF, "כל המקומות נתפסו!"):1, 1;
  100. }
  101. //==============================================================================
  102. forward JoiningCountDown(cd);
  103. public JoiningCountDown(cd){
  104.     if(!BoomInfo[BOOM_ON]) return 0;
  105.     format(str,sizeof(str),"~r~/~g~B~b~O~y~O~p~M ~w~%d",cd),GameTextForAll(str,1000,6);
  106.     if(cd >= 1) cd--,SetTimerEx("JoiningCountDown",1000,0,"%d",cd);
  107.     else
  108.     {
  109.         if(BoomInfo[PLAYERS] < 2) return SendClientMessageToAll(0xFF533BFF, "פעילות בוטלה עקב חוסר משתמשים"), BoomInfo[BOOM_ON] = 0, BoomInfo[NOW_PLAYING] = 0, BoomInfo[PLAYERS] = 0;
  110.         for(new i = 0; i < sizeof(Objects); i++) Objectid[i] = CreateObject(floatround(Objects[i][0]), Objects[i][1], Objects[i][2], Objects[i][3], Objects[i][4], Objects[i][5], Objects[i][6], 300);
  111.         for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && InBoom[i]) SetPlayerInArea(i,606.5390, -2184.1294, 714.4244, -2033.5969, 6), SetPlayerInterior(i,0), ResetPlayerWeapons(i), TogglePlayerControllable(i, false), SetPlayerTime(i,0,0);
  112.         Wait10SecToStart(10);
  113.     }
  114.        
  115.     return 1;
  116. }
  117.  
  118. forward Wait10SecToStart(cd);
  119. public Wait10SecToStart(cd){
  120.     if(!BoomInfo[BOOM_ON]) return 0;
  121.     format(str,sizeof(str),"~g~%d",cd),GameTextForAll(str,1000,6);
  122.     if(cd >= 1) cd--,SetTimerEx("Wait10SecToStart",1000,0,"%d",cd);
  123.     else
  124.     {
  125.         for(new i = 0; i < MAX_PLAYERS; i++)
  126.             if(IsPlayerConnected(i) && InBoom[i]) TogglePlayerControllable(i, true), SetPlayerHealth(i, 100), SetPlayerArmour(i, 100), Timers[i] = SetTimerEx("GetOut",5000,0,"%d",cd);
  127.         BoomInfo[NOW_PLAYING] = 1, DO_BOOMS = SetTimer("DoBoom",500,1), GameTextForAll("~r~G~g~O~b~O~w~O~y~O~p~!~h~!",1000,6);
  128.     }
  129.    
  130.     return 1;
  131. }
  132.  
  133. forward DoBoom();
  134. public DoBoom()
  135.     return CreateExplosionInArea(602.6973, -2185.3198,  718.2797, -2030.8037, 5.3, 10, 0);
  136.    
  137. //==============================================================================
  138.  
  139. stock GetName(playerid)
  140.     return GetPlayerName(playerid, str, sizeof(str)), str;
  141. stock SetPlayerInArea(playerid, Float:minx, Float:miny, Float:maxx, Float:maxy, Float:maxz)
  142.     return SetPlayerPos(playerid, float(floatround(random(floatround(maxx-minx))+minx)), float(floatround(random(floatround(maxy-miny))+miny)), maxz);
  143. stock CreateExplosionInArea(Float:minx, Float:miny, Float:maxx, Float:maxy, Float:maxz, type, Float:radius)
  144.     return CreateExplosion(float(floatround(random(floatround(maxx-minx))+minx)), float(floatround(random(floatround(maxy-miny))+miny)), maxz, type, radius);
  145. stock CheckWiner()
  146. {
  147.     if(BoomInfo[BOOM_ON] && BoomInfo[NOW_PLAYING] && BoomInfo[PLAYERS]==1)
  148.     {
  149.         BoomInfo[BOOM_ON] = 0, BoomInfo[NOW_PLAYING] = 0, BoomInfo[PLAYERS] = 0, KillTimer(DO_BOOMS);
  150.         for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && InBoom[i]) format(str, sizeof(str), "$%d שרד אחרון וקיבל %s השחקן", BoomInfo[PRICE], GetName(i)), SendClientMessageToAll(0xFFFFFFFF, str), SpawnPlayer(i), GivePlayerMoney(i, BoomInfo[PRICE]), InBoom[i] = 0;
  151.         for(new i = 0; i < sizeof(Objects); i++) DestroyObject(Objectid[i]);
  152.     }
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement