Advertisement
Guest User

Hay Minigame By ScRaT

a guest
Nov 22nd, 2012
1,632
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.43 KB | None | 0 0
  1. //includes
  2. #include <a_samp>
  3.  
  4. //defines
  5. #define ConvertTime(%0,%1,%2,%3,%4) \
  6.     new \
  7.         Float: %0 = floatdiv(%1, 60000) \
  8.     ;\
  9.     %2 = floatround(%0, floatround_tozero); \
  10.     %3 = floatround(floatmul(%0 - %2, 60), floatround_tozero); \
  11.     %4 = floatround(floatmul(floatmul(%0 - %2, 60) - %3, 1000), floatround_tozero)
  12.    
  13. #define ORANGE      0xDB881AAA
  14. #define HAY_X            4
  15. #define HAY_Y           4
  16. #define HAY_Z           30
  17. #define HAY_B          146
  18. #define HAY_R            4
  19. #define SPEED_FACTOR     3000.0
  20. #define ID_HAY_OBJECT    3374
  21.  
  22. //forwards
  23. forward TimerMove ();
  24. forward TimerScore ();
  25. forward FinishTimer (id, xq, yq, zq);
  26. forward TDScore ();
  27.  
  28. //news
  29. new JoinedHay[MAX_PLAYERS] = -1;
  30. new WhatLevel[MAX_PLAYERS] = -1;
  31. new TimeInHay[MAX_PLAYERS];
  32. new Speed_xy;
  33. new Speed_z;
  34. new Center_x;
  35. new Center_y;
  36. new Matrix[HAY_X][HAY_Y][HAY_Z];
  37. new Hays[HAY_B];
  38. new Text:HAYTD[MAX_PLAYERS];
  39.  
  40. //publics/stocks
  41. public OnFilterScriptInit()
  42. {
  43.     print("\n--------------------------------------");
  44.     print(" Hay Minigame By ScRaT");
  45.     print("--------------------------------------\n");
  46.     RestartEveryThing ();
  47.     for(new i=0; i<MAX_PLAYERS; i++)
  48.     {
  49.         HAYTD[i] = TextDrawCreate(549.000000,397.000000,"~h~~y~Hay Minigame~n~~r~Level: ~w~0/31 ~n~~r~Time: ~w~00:00:00");
  50.         TextDrawFont(HAYTD[i] , 1);
  51.         TextDrawSetProportional(HAYTD[i], 1);
  52.         TextDrawSetOutline(HAYTD[i], 0);
  53.         TextDrawColor(HAYTD[i],-65281);
  54.         TextDrawLetterSize(HAYTD[i] ,0.310000,1.400000);
  55.         TextDrawTextSize(HAYTD[i] , 640.000000,0.000000);
  56.         TextDrawAlignment(HAYTD[i],1);
  57.         TextDrawSetShadow(HAYTD[i], 0);
  58.         TextDrawUseBox(HAYTD[i], 1);
  59.         TextDrawBoxColor(HAYTD[i], 255);
  60.         TextDrawBackgroundColor(HAYTD[i], 255);
  61.     }
  62.     return 1;
  63. }
  64.  
  65. public OnFilterScriptExit()
  66. {
  67.     return 1;
  68. }
  69.  
  70.  
  71. public OnPlayerRequestClass(playerid, classid)
  72. {
  73.     TextDrawHideForPlayer(playerid,HAYTD[playerid]);
  74.     JoinedHay[playerid] = 0;
  75.     return 1;
  76. }
  77.  
  78. public OnPlayerConnect(playerid)
  79. {
  80.     WhatLevel[playerid] = 0;
  81.     JoinedHay[playerid] = 0;
  82.     TextDrawHideForPlayer(playerid,HAYTD[playerid]);
  83.     return 1;
  84. }
  85.  
  86. public OnPlayerDisconnect(playerid, reason)
  87. {
  88.     TextDrawHideForPlayer(playerid,HAYTD[playerid]);
  89.     return 1;
  90. }
  91.  
  92. public OnPlayerSpawn(playerid)
  93. {
  94.     JoinedHay[playerid] = 0;
  95.     SetPlayerWorldBounds(playerid, 20000.0000, -20000.0000, 20000.0000, -20000.0000);
  96.     TextDrawHideForPlayer(playerid,HAYTD[playerid]);
  97.     return 1;
  98. }
  99.  
  100. public OnPlayerDeath(playerid, killerid, reason)
  101. {
  102.     TextDrawHideForPlayer(playerid,HAYTD[playerid]);
  103.     JoinedHay[playerid] = 0;
  104.     return 1;
  105. }
  106.  
  107.  
  108. public OnPlayerCommandText(playerid, cmdtext[])
  109. {
  110.     if (strcmp("/hay", cmdtext, true, 10) == 0)
  111.     {
  112.         if(JoinedHay[playerid] == 0)
  113.         {
  114.             JoinedHay[playerid] = 1;
  115.             SetPlayerWorldBounds(playerid, 116.7788, -70.06725, 105.1009, -116.7788);
  116.             TimeInHay[playerid] = GetTickCount();
  117.             SetPlayerPos(playerid, 0, 6.5, 3.2);
  118.             SetPlayerFacingAngle( playerid, 135 );
  119.             SetPlayerVirtualWorld(playerid, 50);
  120.             ResetPlayerWeapons(playerid);
  121.             return 1;
  122.         }
  123.         if(JoinedHay[playerid] == 1)
  124.         {
  125.             JoinedHay[playerid] = 0;
  126.             SetPlayerWorldBounds(playerid, 20000.0000, -20000.0000, 20000.0000, -20000.0000);
  127.             TextDrawHideForPlayer(playerid,HAYTD[playerid]);
  128.             SpawnPlayer(playerid);
  129.             return 1;
  130.         }
  131.         return 1;
  132.     }
  133.     return 0;
  134. }
  135.  
  136. RestartEveryThing ()
  137. {
  138.     new xq, yq, zq;
  139.     new Number;
  140.  
  141.     Speed_xy = 2000 / (HAY_Z + 1);
  142.     Speed_z = 1500 / (HAY_Z + 1);
  143.     for (new i=0 ; i<MAX_PLAYERS ; i++)
  144.     {
  145.         if (IsPlayerConnected (i))
  146.         {
  147.             WhatLevel[i] = 0;
  148.         }
  149.     }
  150.     for (xq=0 ; xq<HAY_X ; xq++)
  151.     {
  152.         for (yq=0 ; yq<HAY_Y ; yq++)
  153.         {
  154.             for (zq=0 ; zq<HAY_Z ; zq++)
  155.             {
  156.                 Matrix[xq][yq][zq] = 0;
  157.             }
  158.         }
  159.     }
  160.     for (Number=0 ; Number<HAY_B ; Number++)
  161.     {
  162.         do
  163.         {
  164.             xq = random (HAY_X);
  165.             yq = random (HAY_Y);
  166.             zq = random (HAY_Z);
  167.         }
  168.         while (Matrix[xq][yq][zq] != 0);
  169.         Matrix[xq][yq][zq] = 1;
  170.         Hays[Number] = CreateObject (ID_HAY_OBJECT, xq*(-4), yq*(-4), (zq+1)*3, 0.0, 0.0, random (2)*180,50);
  171.     }
  172.     Center_x = (HAY_X + 1) * -2;
  173.     Center_y = (HAY_Y + 1) * -2;
  174.     CreateObject (ID_HAY_OBJECT, Center_x, Center_y, HAY_Z*3 + 3, 0, 0, 0,50);
  175.     SetTimer ("TimerMove", 100, 0);
  176.     SetTimer ("TDScore", 1000, 1);
  177. }
  178.  
  179. public TimerMove ()
  180. {
  181.     new rand;
  182.     new Hay;
  183.     new Move = -1;
  184.     new xq, yq, zq;
  185.     new Float:x2, Float:y2, Float:z2;
  186.     new Timez;
  187.     new Float:Speed;
  188.  
  189.     rand = random (HAY_B);
  190.     Hay = Hays[rand];
  191.     if(IsObjectMoving(Hay))
  192.     {
  193.         SetTimer ("TimerMove", 200, 0);
  194.         return 1;
  195.     }
  196.     Move = random (6);
  197.     GetObjectPos (Hay, x2, y2, z2);
  198.     xq = floatround (x2/-4.0);
  199.     yq = floatround (y2/-4.0);
  200.     zq = floatround (z2/3.0)-1;
  201.     if ((Move == 0)  && (xq != 0) && (Matrix[xq-1][yq][zq] == 0))
  202.     {
  203.         Timez = 4000 - Speed_xy * zq;
  204.         Speed = SPEED_FACTOR / float (Timez);
  205.         SetTimerEx ("FinishTimer", Timez, 0, "iiii", rand, xq, yq, zq);
  206.         xq = xq - 1;
  207.         Matrix[xq][yq][zq] = 1;
  208.         MoveObject (Hay, x2+4.0, y2, z2, Speed);
  209.     }
  210.  
  211.     else if ((Move == 1) && (xq != HAY_X-1) && (Matrix[xq+1][yq][zq] == 0))
  212.     {
  213.         Timez = 4000 - Speed_xy * zq;
  214.         Speed = SPEED_FACTOR / float (Timez);
  215.         SetTimerEx ("FinishTimer", Timez, 0, "iiii", rand, xq, yq, zq);
  216.         xq = xq + 1;
  217.         Matrix[xq][yq][zq] = 1;
  218.         MoveObject (Hay, x2-4.0, y2, z2, Speed);
  219.     }
  220.  
  221.     else if ((Move == 2) && (yq != 0) && (Matrix[xq][yq-1][zq] == 0))
  222.     {
  223.         Timez = 4000 - Speed_xy * zq;
  224.         Speed = SPEED_FACTOR / float (Timez);
  225.         SetTimerEx ("FinishTimer", Timez, 0, "iiii", rand, xq, yq, zq);
  226.         yq = yq - 1;
  227.         Matrix[xq][yq][zq] = 1;
  228.         MoveObject (Hay, x2, y2+4.0, z2, Speed);
  229.     }
  230.  
  231.  
  232.     else if ((Move == 3) && (yq != HAY_Y-1) && (Matrix[xq][yq+1][zq] == 0))
  233.     {
  234.         Timez = 4000 - Speed_xy * zq;
  235.         Speed = SPEED_FACTOR / float (Timez);
  236.         SetTimerEx ("FinishTimer", Timez, 0, "iiii", rand, xq, yq, zq);
  237.         yq = yq + 1;
  238.         Matrix[xq][yq][zq] = 1;
  239.         MoveObject (Hay, x2, y2-4.0, z2, Speed);
  240.     }
  241.  
  242.     else if ((Move == 4) && (zq != 0) && (Matrix[xq][yq][zq-1] == 0))
  243.     {
  244.         Timez = 3000 - Speed_z * zq;
  245.         Speed = SPEED_FACTOR / float (Timez);
  246.         SetTimerEx ("FinishTimer", Timez, 0, "iiii", rand, xq, yq, zq);
  247.         zq = zq - 1;
  248.         Matrix[xq][yq][zq] = 1;
  249.         MoveObject (Hay, x2, y2, z2-3.0, Speed);
  250.     }
  251.  
  252.     else if ((Move == 5) && (zq != HAY_Z-1) && (Matrix[xq][yq][zq+1] == 0))
  253.     {
  254.         Timez = 3000 - Speed_z * zq;
  255.         Speed = SPEED_FACTOR / float (Timez);
  256.         SetTimerEx ("FinishTimer", Timez, 0, "iiii", rand, xq, yq, zq);
  257.         zq = zq + 1;
  258.         Matrix[xq][yq][zq] = 1;
  259.         MoveObject (Hay, x2, y2, z2+3.0, Speed);
  260.     }
  261.     else if ((Move == 6) && (zq != HAY_Z-1) && (Matrix[xq][yq][zq+1] == 0))
  262.     {
  263.         Timez = 3000 - Speed_z * zq;
  264.         Speed = SPEED_FACTOR / float (Timez);
  265.         SetTimerEx ("FinishTimer", Timez, 0, "iiii", rand, xq, yq, zq);
  266.         zq = zq + 1;
  267.         Matrix[xq][yq][zq] = 1;
  268.         MoveObject (Hay, x2, y2, z2+3.0, Speed);
  269.     }
  270.     SetTimer ("TimerMove", 200, 0);
  271.     return 1;
  272. }
  273.  
  274. //==============================================================================
  275.  
  276. public FinishTimer (id, xq, yq, zq)
  277. {
  278.     Matrix[xq][yq][zq] = 0;
  279. }
  280.  
  281. //==============================================================================
  282.  
  283. public TimerScore ()
  284. {
  285.     new Float:xq, Float:yq, Float:zq;
  286.     for (new i=0 ; i<MAX_PLAYERS ; i++)
  287.     {
  288.         if (IsPlayerConnected (i))
  289.         {
  290.             GetPlayerPos (i, xq, yq, zq);
  291.             if (xq<=2.0 && xq>=-15.0 && yq<=2.0 && yq>=-15.0)
  292.             {
  293.                 new Level = (floatround (zq)/3) - 1;
  294.                 WhatLevel[i] = Level;
  295.             }
  296.             else
  297.             {
  298.                 WhatLevel[i] = 0;
  299.             }
  300.         }
  301.     }
  302. }
  303. public TDScore()
  304. {
  305.     TimerScore();
  306.     new Level,string[256],PlayerN[MAX_PLAYER_NAME];
  307.     for(new i=0; i<MAX_PLAYERS; i++)
  308.     {
  309.         if(IsPlayerConnected(i))
  310.         {
  311.             if(JoinedHay[i] == 1)
  312.             {
  313.                 new tH,tM,tS;
  314.                 new TimeStamp = GetTickCount();
  315.                 new TotalRaceTime = TimeStamp - TimeInHay[i];
  316.                 ConvertTime(var, TotalRaceTime, tH, tM, tS);
  317.                 Level = WhatLevel[i];
  318.                 format(string,sizeof(string),"~h~~y~Hay Minigame~n~~r~Level: ~w~%d/31 ~n~~r~Time: ~w~%02d:%02d\
  319.                                         ",Level,tH,tM,tS);
  320.                 TextDrawSetString(HAYTD[i], string);
  321.                 TextDrawShowForPlayer(i, HAYTD[i]);
  322.                 if(WhatLevel[i] == 31)
  323.                 {
  324.                     GetPlayerName(i, PlayerN, sizeof(PlayerN));
  325.                     format(string, sizeof(string),"[HAY] %s Finished The Hay Minigame In %02d Min %02d Sec", PlayerN,tH,tM,tS);
  326.                     SendClientMessageToAll(ORANGE,string);
  327.                     TextDrawHideForPlayer(i, HAYTD[i]);
  328.                     SetPlayerPos(i,0,0,0);
  329.                     SpawnPlayer(i);
  330.                 }
  331.             }
  332.             if(JoinedHay[i] != 1)
  333.             {
  334.                 TextDrawHideForPlayer(i, HAYTD[i]);
  335.             }
  336.         }
  337.     }
  338.     return 1;
  339. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement