Guest User

Untitled

a guest
Apr 28th, 2012
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.65 KB | None | 0 0
  1. //-----------------------------------------------------------------------------------|
  2. // [svGroups] |
  3. // |
  4. // |
  5. // - You may not remove these credits |
  6. // - You may not claim this script as yours |
  7. // |
  8. // |
  9. // |
  10. // [VERSION 1.0] Created by SuperViper |
  11. //-----------------------------------------------------------------------------------|
  12.  
  13. #include <a_samp>
  14.  
  15. // ==================================== SETTINGS ================================== ///
  16. // //|
  17. /* Comment if you would like to use regular 'for' loops instead of foreach */ //|
  18. #define USE_FOREACH //|
  19. // //|
  20. /* Maximum amount of groups you need. The lower the amount, the less memory used */ //|
  21. #define GROUP_AMOUNT 15 //|
  22. // //|
  23. // ================================================================================ ///
  24.  
  25. #if defined USE_FOREACH
  26. #include <foreach>
  27. #endif
  28.  
  29. enum e_svGroups_Data
  30. {
  31. svMembers,
  32. Float: svSpawn[4],
  33. svSpawnInterior,
  34. svSpawnWorld,
  35. bool: svUsingSkin,
  36. svSkin,
  37. Float: svHealth,
  38. Float: svArmor,
  39. svWeapons[5],
  40. svWeaponAmmo[5],
  41. svColor,
  42. }
  43.  
  44. new svGroups_Data[GROUP_AMOUNT][e_svGroups_Data], svGroups_PlayerGroup[MAX_PLAYERS], bool: svGroups_Debug;
  45.  
  46. public OnPlayerConnect(playerid)
  47. {
  48. svGroups_PlayerGroup[playerid] = 0;
  49. return 1;
  50. }
  51.  
  52. public OnPlayerDisconnect(playerid)
  53. {
  54. if(svGroups_PlayerGroup[playerid] > 0)
  55. {
  56. svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svMembers]--;
  57. }
  58. return 1;
  59. }
  60.  
  61. public OnPlayerSpawn(playerid)
  62. {
  63. if(svGroups_PlayerGroup[playerid] > 0)
  64. {
  65. if(svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSpawn][0] > 0.0 || svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSpawn][1] > 0.0 || svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSpawn][2] > 0.0 || svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSpawn][3] > 0.0)
  66. {
  67. SetPlayerVirtualWorld(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSpawnWorld]);
  68. SetPlayerInterior(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSpawnInterior]);
  69. SetPlayerPos(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSpawn][0], svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSpawn][1], svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSpawn][2]);
  70. SetPlayerFacingAngle(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSpawn][3]);
  71. }
  72.  
  73. if(svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svUsingSkin] == true)
  74. {
  75. SetPlayerSkin(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSkin]);
  76. }
  77.  
  78. if(svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svHealth] > 0.0)
  79. {
  80. SetPlayerHealth(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svHealth]);
  81. }
  82.  
  83. if(svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svArmor] > 0.0)
  84. {
  85. SetPlayerArmour(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svArmor]);
  86. }
  87.  
  88. for(new i = 0; i < 5; i++)
  89. {
  90. if(svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svWeapons][i] > 0 && svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svWeaponAmmo][i] > 0)
  91. {
  92. GivePlayerWeapon(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svWeapons][i], svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svWeaponAmmo][i]);
  93. }
  94. }
  95. }
  96. return 1;
  97. }
  98.  
  99. stock svGroup_Debug(bool: togDebug)
  100. {
  101. if(togDebug == false)
  102. {
  103. print("(svGroups) Debugging has been turned off");
  104. }
  105. else if(togDebug == true)
  106. {
  107. print("(svGroups) Debugging has been turned on");
  108. }
  109.  
  110. return svGroups_Debug = togDebug;
  111. }
  112.  
  113. stock svGroup_SetPlayer(playerid, groupid)
  114. {
  115. if(svGroups_Debug == true)
  116. {
  117. printf("(svGroups) SetPlayer(playerid = %d, groupid = %d)", playerid, groupid);
  118. }
  119.  
  120. if(svGroups_PlayerGroup[playerid] > 0)
  121. {
  122. svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svMembers]--;
  123. }
  124.  
  125. if(groupid > 0)
  126. {
  127. svGroups_Data[groupid - 1][svMembers]++;
  128. }
  129.  
  130. return svGroups_PlayerGroup[playerid] = groupid;
  131. }
  132.  
  133. stock svGroup_GetPlayer(playerid)
  134. {
  135. if(svGroups_Debug == true)
  136. {
  137. printf("(svGroups) GetPlayer(playerid = %d)", playerid);
  138. }
  139.  
  140. return svGroups_PlayerGroup[playerid];
  141. }
  142.  
  143. stock svGroup_CountMembers(groupid)
  144. {
  145. if(svGroups_Debug == true)
  146. {
  147. printf("(svGroups) CountMembers(groupid = %d)", groupid);
  148. }
  149.  
  150. return svGroups_Data[groupid - 1][svMembers];
  151. }
  152.  
  153. stock svGroup_SetHealth(groupid, Float: Health)
  154. {
  155. if(svGroups_Debug == true)
  156. {
  157. printf("(svGroups) SetHealth(groupid = %d, Health = %f)", groupid, Health);
  158. }
  159.  
  160. new playersInGroup;
  161.  
  162. #if defined USE_FOREACH
  163. foreach(new i: Player)
  164. {
  165. if(svGroups_PlayerGroup[i] == groupid)
  166. {
  167. SetPlayerHealth(i, Health);
  168. playersInGroup = 1;
  169. }
  170. }
  171. #else
  172. for(new i = 0; i < MAX_PLAYERS; i++)
  173. {
  174. if(IsPlayerConnected(i))
  175. {
  176. if(svGroups_PlayerGroup[i] == groupid)
  177. {
  178. SetPlayerHealth(i, Health);
  179. playersInGroup = 1;
  180. }
  181. }
  182. }
  183. #endif
  184.  
  185. return playersInGroup;
  186. }
  187.  
  188. stock svGroup_SetArmor(groupid, Float: Armor)
  189. {
  190. if(svGroups_Debug == true)
  191. {
  192. printf("(svGroups) SetArmor(groupid = %d, Armor = %f)", groupid, Armor);
  193. }
  194.  
  195. new playersInGroup;
  196.  
  197. #if defined USE_FOREACH
  198. foreach(new i: Player)
  199. {
  200. if(svGroups_PlayerGroup[i] == groupid)
  201. {
  202. SetPlayerArmour(i, Armor);
  203. playersInGroup = 1;
  204. }
  205. }
  206. #else
  207. for(new i = 0; i < MAX_PLAYERS; i++)
  208. {
  209. if(IsPlayerConnected(i))
  210. {
  211. if(svGroups_PlayerGroup[i] == groupid)
  212. {
  213. SetPlayerArmour(i, Armor);
  214. playersInGroup = 1;
  215. }
  216. }
  217. }
  218. #endif
  219.  
  220. return playersInGroup;
  221. }
  222.  
  223. stock svGroup_SetSpawn(groupid, Float: sX, Float: sY, Float: sZ, sInterior = 0, sVirtualWorld = 0, Float: sA)
  224. {
  225. if(svGroups_Debug == true)
  226. {
  227. printf("(svGroups) SetSpawn(groupid = %d, sX = %f, sY = %f, sZ = %f, sInterior = %d, sVirtualWorld = %d, sA = %f)", groupid, sX, sY, sZ, sInterior, sVirtualWorld, sA);
  228. }
  229.  
  230. return svGroups_Data[groupid - 1][svSpawn][0] = sX, svGroups_Data[groupid - 1][svSpawn][1] = sY, svGroups_Data[groupid - 1][svSpawn][2] = sZ, svGroups_Data[groupid - 1][svSpawnInterior] = sInterior, svGroups_Data[groupid - 1][svSpawnWorld] = sVirtualWorld, svGroups_Data[groupid - 1][svSpawn][3] = sA;
  231. }
  232.  
  233. stock svGroup_SetSpawnInfo(groupid, skin, Float: sHealth = 0.0, Float: sArmor = 0.0, weapon1 = 0, weapon1ammo = 0, weapon2 = 0, weapon3ammo = 0, weapon4 = 0, weapon4ammo = 0, weapon5 = 0, weapon5ammo = 0, color = -1)
  234. {
  235. if(svGroups_Debug == true)
  236. {
  237. printf("(svGroups) SetSpawnInfo(groupid = %d, skin = %d, sHealth = %f, sArmor = %f, weapon1 = %d, weapon1ammo = %d, weapon2 = %d, weapon2ammo = %d, weapon3 = %d, weapon3ammo = %d, weapon4 = %d, weapon4ammo = %d, weapon5 = %d, weapon5ammo = %d, color = %d)", groupid, skin, sHealth, sArmor, weapon1, weapon1ammo, weapon2, weapon2ammo, weapon3, weapon3ammo, weapon4, weapon4ammo, weapon5, weapon5ammo, color);
  238. }
  239.  
  240. return svGroups_Data[groupid - 1][svSkin] = skin, svGroups_Data[groupid - 1][svUsingSkin] = true, svGroups_Data[groupid - 1][svHealth] = sHealth, svGroups_Data[groupid - 1][svArmor] = sArmor, svGroups_Data[groupid - 1][svWeapons][0] = weapon1, svGroups_Data[groupid - 1][svWeaponAmmo][0] = weapon1ammo, svGroups_Data[groupid - 1][svWeapons][1] = weapon2, svGroups_Data[groupid - 1][svWeaponAmmo][1] = weapon2ammo, svGroups_Data[groupid - 1][svWeapons][2] = weapon3, svGroups_Data[groupid - 1][svWeaponAmmo][2] = weapon3ammo, svGroups_Data[groupid - 1][svWeapons][3] = weapon4, svGroups_Data[groupid - 1][svWeaponAmmo][3] = weapon4ammo, svGroups_Data[groupid - 1][svWeapons][4] = weapon5, svGroups_Data[groupid - 1][svWeaponAmmo][4] = weapon5ammo, svGroups_Data[groupid - 1][svColor] = color;
  241. }
  242.  
  243. stock svGroup_ToggleControllable(groupid, bool: controllable)
  244. {
  245. if(svGroups_Debug == true)
  246. {
  247. printf("(svGroups) ToggleControllable(groupid = %d, controllable = %d)", groupid, controllable);
  248. }
  249.  
  250. new playersInGroup;
  251.  
  252. #if defined USE_FOREACH
  253. foreach(new i: Player)
  254. {
  255. if(svGroups_PlayerGroup[i] == groupid)
  256. {
  257. TogglePlayerControllable(i, controllable);
  258. playersInGroup = 1;
  259. }
  260. }
  261. #else
  262. for(new i = 0; i < MAX_PLAYERS; i++)
  263. {
  264. if(IsPlayerConnected(i))
  265. {
  266. if(svGroups_PlayerGroup[i] == groupid)
  267. {
  268. TogglePlayerControllable(i, controllable);
  269. playersInGroup = 1;
  270. }
  271. }
  272. }
  273. #endif
  274.  
  275. return playersInGroup;
  276. }
Advertisement
Add Comment
Please, Sign In to add comment