Advertisement
Guest User

[ASF] Advanced Spawn Functionsa V1.1

a guest
Feb 14th, 2018
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.87 KB | None | 0 0
  1. /*
  2.  
  3. Include by RazorGuigo [Beta tester]
  4.  
  5.              Advanced                    Spawn          Functions
  6.  
  7.                                                                          
  8.                                                                          
  9.                AAA                 SSSSSSSSSSSSSSS FFFFFFFFFFFFFFFFFFFFFF
  10.               A:::A              SS:::::::::::::::SF::::::::::::::::::::F
  11.              A:::::A            S:::::SSSSSS::::::SF::::::::::::::::::::F
  12.             A:::::::A           S:::::S     SSSSSSSFF::::::FFFFFFFFF::::F
  13.            A:::::::::A          S:::::S              F:::::F       FFFFFF
  14.           A:::::A:::::A         S:::::S              F:::::F            
  15.          A:::::A A:::::A         S::::SSSS           F::::::FFFFFFFFFF  
  16.         A:::::A   A:::::A         SS::::::SSSSS      F:::::::::::::::F  
  17.        A:::::A     A:::::A          SSS::::::::SS    F:::::::::::::::F  
  18.       A:::::AAAAAAAAA:::::A            SSSSSS::::S   F::::::FFFFFFFFFF  
  19.      A:::::::::::::::::::::A                S:::::S  F:::::F            
  20.     A:::::AAAAAAAAAAAAA:::::A               S:::::S  F:::::F            
  21.    A:::::A             A:::::A  SSSSSSS     S:::::SFF:::::::FF          
  22.   A:::::A               A:::::A S::::::SSSSSS:::::SF::::::::FF          
  23.  A:::::A                 A:::::AS:::::::::::::::SS F::::::::FF          
  24. AAAAAAA                   AAAAAAASSSSSSSSSSSSSSS   FFFFFFFFFFF      
  25.  
  26.  
  27. //-----------------------------------------------------------------------
  28. Spawn(playerid, skin, Float:x,Float:y,Float:z, Float:a=0.0, time = 0)//main function to give spawn
  29. //skin -1 is random, or value chosen
  30. //x,y,z are coordinates
  31. //a is angled
  32. //time how long will spawn
  33. GetSpawnTimerID(playerid)//settimerex id
  34. GetSpawnTimeLeft(playerid, from=-1)//Remaining time to spawn (-1 for current time, or use custom timestamp)
  35. bool:IsSpawnProgrammed(playerid)//the player is waiting for a spawn
  36. CancelSpawn(playerid)//cancel spawn on hold
  37.  
  38. RANDOMSPAWN<list>//spawn will be drawn, with the coordinates of an example list below:
  39. RANDOM_SKIN//random skin from 0 to 299
  40.  
  41. //-----------------------------------------------------------------------
  42. new Float:posicoes[4][3]=
  43. {
  44.     {2334.7942,2444.2695,5.6833},
  45.     {2237.4199,2453.0857,10.6711},
  46.     {1545.0884,-1627.2146,13.4828},
  47.     {1588.9736,-1637.3667,13.5381}
  48. };
  49.  
  50. public OnPlayerConnect(playerid)
  51. {
  52.     Spawn(playerid, -1, RANDOMSPAWN<posicoes>,0.0, 1000);
  53.     return 1;
  54. }
  55. //-----------------------------------------------------------------------
  56.  
  57. */
  58.  
  59. #define I_RANDOM_SKIN -1
  60.  
  61. #if !defined VALUE_NO_TIMER_SPAWN
  62.     #define VALUE_NO_TIMER_SPAWN -1
  63. #endif
  64.  
  65. #if !defined RANDOM_SKIN
  66.     #define RANDOM_SKIN I_RANDOM_SKIN
  67. #endif
  68.  
  69.  
  70. //----------------------------------------------------
  71. new R_I[MAX_PLAYERS];
  72.  
  73. stock I_RANDOM_NUMBER(&rr, size = 2)
  74. {          
  75.     rr = random(size);     
  76.     return 0;          
  77. }
  78. #define RANDOMSPAWN<%0>                         \
  79.     I_RANDOM_NUMBER(R_I[playerid],sizeof(%0))+%0[R_I[playerid]][0],%0[R_I[playerid]][1],%0[R_I[playerid]][2]
  80. //-----------------------------------------------------
  81.  
  82.  
  83.  
  84. static I_SPAWN_TIMER[MAX_PLAYERS]= {-1, ...};
  85. static I_TIMESPANWLEFT[MAX_PLAYERS];
  86.  
  87. forward I_SPAWN(playerid, skin, Float:x,Float:y,Float:z, Float:a);
  88.  
  89. stock Spawn(playerid, skin = I_RANDOM_SKIN, Float:x,Float:y,Float:z, Float:a=0.0, time = VALUE_NO_TIMER_SPAWN)
  90. {
  91.     //--------------------------------------
  92.     if(skin == -1)//random skin
  93.         skin = random(299)+1;
  94.  
  95.     if(!(skin != 74 || 299 < skin > 0))
  96.         skin = 0;//validate skin
  97.  
  98.     //---------------------------------------
  99.     if(time <= 0)// spawn no timer
  100.         return I_SPAWN(playerid,skin,x,y,z,a);
  101.     //----------------------------------------
  102.     new tmp;
  103.  
  104.     I_BREAK_SPAWN(playerid);//not to duplicate spawns
  105.    
  106.     I_SPAWN_TIMER[playerid] = tmp = SetTimerEx("I_SPAWN", time, false, "ddffff", playerid,skin,x,y,z,a);
  107.     I_TIMESPANWLEFT[playerid]=gettime()+time;
  108.  
  109.     //---------------------------------------
  110.     return tmp;
  111. }
  112. public I_SPAWN(playerid, skin, Float:x,Float:y,Float:z, Float:a)
  113. {
  114.     TogglePlayerSpectating(playerid, false);
  115.     TogglePlayerControllable(playerid, true);
  116.  
  117.     SetSpawnInfo(playerid, 0, skin, x, y, z, a, 0, 0, 0,0, 0, 0);
  118.     SpawnPlayer(playerid);
  119.  
  120.     return I_BREAK_SPAWN(playerid);
  121. }
  122. I_BREAK_SPAWN(playerid)
  123. {
  124.     if(I_SPAWN_TIMER[playerid] == -1)//cancel spawn
  125.         return VALUE_NO_TIMER_SPAWN;
  126.  
  127.     KillTimer(I_SPAWN_TIMER[playerid]);
  128.     I_SPAWN_TIMER[playerid]= VALUE_NO_TIMER_SPAWN;
  129.     return VALUE_NO_TIMER_SPAWN;
  130. }
  131.  
  132.  
  133. //---------------------------------------------------
  134.  
  135.  
  136. stock GetSpawnTimerID(playerid)
  137.     return I_SPAWN_TIMER[playerid];
  138.  
  139. stock GetSpawnTimeLeft(playerid, from=-1)
  140.     return from == -1 ? I_TIMESPANWLEFT[playerid] - gettime : I_TIMESPANWLEFT[playerid] - from;
  141.  
  142. stock bool:IsSpawnProgrammed(playerid)
  143.     return I_SPAWN_TIMER[playerid]==-1 ? false : true;
  144.  
  145. stock CancelSpawn(playerid)
  146.     return I_BREAK_SPAWN(playerid);
  147.  
  148. //---------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement