Guest User

Untitled

a guest
Apr 29th, 2012
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.59 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.2] 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. /* Comment if you would like to use regular 'ALS' hooks instead of y_hooks */ //|
  21. #define USE_YHOOKS //|
  22. // //|
  23. /* Maximum amount of groups you need. The lower the amount, the less memory used */ //|
  24. #define GROUP_AMOUNT 15 //|
  25. // //|
  26. // ================================================================================ ///
  27.  
  28. #if defined USE_FOREACH
  29. #tryinclude <foreach>
  30. #endif
  31.  
  32. #if defined USE_YHOOKS
  33. #tryinclude <YSI\y_hooks>
  34. #endif
  35.  
  36. enum e_svGroups_Data
  37. {
  38. svMembers,
  39. Float: svSpawn[4],
  40. svSpawnInterior,
  41. svSpawnWorld,
  42. bool: svUsingSkin,
  43. svSkin,
  44. Float: svHealth,
  45. Float: svArmor,
  46. svWeapons[5],
  47. svWeaponAmmo[5],
  48. svColor,
  49. }
  50.  
  51. new svGroups_Data[GROUP_AMOUNT][e_svGroups_Data], svGroups_PlayerGroup[MAX_PLAYERS], bool: svGroups_Debug;
  52.  
  53. #if defined USE_YHOOKS
  54. hook OnPlayerConnect(playerid)
  55. {
  56. svGroups_PlayerGroup[playerid] = 0;
  57. return 1;
  58. }
  59.  
  60. hook OnPlayerDisconnect(playerid)
  61. {
  62. if(svGroups_PlayerGroup[playerid] > 0)
  63. {
  64. svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svMembers]--;
  65. }
  66. return 1;
  67. }
  68.  
  69. hook OnPlayerSpawn(playerid)
  70. {
  71. if(svGroups_PlayerGroup[playerid] > 0)
  72. {
  73. 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)
  74. {
  75. SetPlayerVirtualWorld(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSpawnWorld]);
  76. SetPlayerInterior(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSpawnInterior]);
  77. 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]);
  78. SetPlayerFacingAngle(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSpawn][3]);
  79. }
  80.  
  81. if(svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svUsingSkin] == true)
  82. {
  83. SetPlayerSkin(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSkin]);
  84. }
  85.  
  86. if(svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svHealth] > 0.0)
  87. {
  88. SetPlayerHealth(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svHealth]);
  89. }
  90.  
  91. if(svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svArmor] > 0.0)
  92. {
  93. SetPlayerArmour(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svArmor]);
  94. }
  95.  
  96. for(new i = 0; i < 5; i++)
  97. {
  98. if(svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svWeapons][i] > 0 && svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svWeaponAmmo][i] > 0)
  99. {
  100. GivePlayerWeapon(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svWeapons][i], svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svWeaponAmmo][i]);
  101. }
  102. }
  103. }
  104. return 1;
  105. }
  106. #else
  107. forward svGroups_OnPlayerConnect();
  108. public OnPlayerConnect(playerid)
  109. {
  110. svGroups_PlayerGroup[playerid] = 0;
  111. return CallRemoteFunction("svGroups_OnPlayerConnect", "d", playerid);
  112. }
  113.  
  114. #if defined _ALS_OnPlayerConnect
  115. #undef OnPlayerConnect
  116. #else
  117. #define _ALS_OnPlayerConnect
  118. #endif
  119. #define OnPlayerConnect svGroups_OnPlayerConnect
  120.  
  121. forward svGroups_OnPlayerDisconnect();
  122. public OnPlayerDisconnect(playerid)
  123. {
  124. if(svGroups_PlayerGroup[playerid] > 0)
  125. {
  126. svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svMembers]--;
  127. }
  128. return CallRemoteFunction("svGroups_OnPlayerDisconnect", "d", playerid);
  129. }
  130.  
  131. #if defined _ALS_OnPlayerDisconnect
  132. #undef OnPlayerDisconnect
  133. #else
  134. #define _ALS_OnPlayerDisconnect
  135. #endif
  136. #define OnPlayerDisconnect svGroups_OnPlayerDisconnect
  137.  
  138. forward svGroups_OnPlayerSpawn(playerid);
  139. public OnPlayerSpawn(playerid)
  140. {
  141. if(svGroups_PlayerGroup[playerid] > 0)
  142. {
  143. 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)
  144. {
  145. SetPlayerVirtualWorld(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSpawnWorld]);
  146. SetPlayerInterior(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSpawnInterior]);
  147. 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]);
  148. SetPlayerFacingAngle(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSpawn][3]);
  149. }
  150.  
  151. if(svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svUsingSkin] == true)
  152. {
  153. SetPlayerSkin(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svSkin]);
  154. }
  155.  
  156. if(svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svHealth] > 0.0)
  157. {
  158. SetPlayerHealth(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svHealth]);
  159. }
  160.  
  161. if(svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svArmor] > 0.0)
  162. {
  163. SetPlayerArmour(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svArmor]);
  164. }
  165.  
  166. for(new i = 0; i < 5; i++)
  167. {
  168. if(svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svWeapons][i] > 0 && svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svWeaponAmmo][i] > 0)
  169. {
  170. GivePlayerWeapon(playerid, svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svWeapons][i], svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svWeaponAmmo][i]);
  171. }
  172. }
  173. }
  174. return CallRemoteFunction("svGroups_OnPlayerSpawn", "d", playerid);
  175. }
  176.  
  177. #if defined _ALS_OnPlayerSpawn
  178. #undef OnPlayerSpawn
  179. #else
  180. #define _ALS_OnPlayerSpawn
  181. #endif
  182. #define OnPlayerSpawn svGroups_OnPlayerSpawn
  183. #endif
  184.  
  185. stock svGroup_Debug(bool: togDebug)
  186. {
  187. if(togDebug == false)
  188. {
  189. print("(svGroups) Debugging has been turned off");
  190. }
  191. else if(togDebug == true)
  192. {
  193. print("(svGroups) Debugging has been turned on");
  194. }
  195.  
  196. return svGroups_Debug = togDebug;
  197. }
  198.  
  199. stock svGroup_SetPlayer(playerid, groupid)
  200. {
  201. if(svGroups_Debug == true)
  202. {
  203. printf("(svGroups) SetPlayer(playerid = %d, groupid = %d)", playerid, groupid);
  204. }
  205.  
  206. if(svGroups_PlayerGroup[playerid] > 0)
  207. {
  208. svGroups_Data[svGroups_PlayerGroup[playerid] - 1][svMembers]--;
  209. }
  210.  
  211. if(groupid > 0)
  212. {
  213. svGroups_Data[groupid - 1][svMembers]++;
  214. }
  215.  
  216. return svGroups_PlayerGroup[playerid] = groupid;
  217. }
  218.  
  219. stock svGroup_GetPlayer(playerid)
  220. {
  221. if(svGroups_Debug == true)
  222. {
  223. printf("(svGroups) GetPlayer(playerid = %d)", playerid);
  224. }
  225.  
  226. return svGroups_PlayerGroup[playerid];
  227. }
  228.  
  229. stock svGroup_CountMembers(groupid)
  230. {
  231. if(svGroups_Debug == true)
  232. {
  233. printf("(svGroups) CountMembers(groupid = %d)", groupid);
  234. }
  235.  
  236. return svGroups_Data[groupid - 1][svMembers];
  237. }
  238.  
  239. stock svGroup_SetHealth(groupid, Float: Health)
  240. {
  241. if(svGroups_Debug == true)
  242. {
  243. printf("(svGroups) SetHealth(groupid = %d, Health = %f)", groupid, Health);
  244. }
  245.  
  246. new playersInGroup;
  247.  
  248. #if defined USE_FOREACH
  249. foreach(new i: Player)
  250. {
  251. if(svGroups_PlayerGroup[i] == groupid)
  252. {
  253. SetPlayerHealth(i, Health);
  254. playersInGroup = 1;
  255. }
  256. }
  257. #else
  258. for(new i = 0; i < MAX_PLAYERS; i++)
  259. {
  260. if(IsPlayerConnected(i))
  261. {
  262. if(svGroups_PlayerGroup[i] == groupid)
  263. {
  264. SetPlayerHealth(i, Health);
  265. playersInGroup = 1;
  266. }
  267. }
  268. }
  269. #endif
  270.  
  271. return playersInGroup;
  272. }
  273.  
  274. stock svGroup_SetArmor(groupid, Float: Armor)
  275. {
  276. if(svGroups_Debug == true)
  277. {
  278. printf("(svGroups) SetArmor(groupid = %d, Armor = %f)", groupid, Armor);
  279. }
  280.  
  281. new playersInGroup;
  282.  
  283. #if defined USE_FOREACH
  284. foreach(new i: Player)
  285. {
  286. if(svGroups_PlayerGroup[i] == groupid)
  287. {
  288. SetPlayerArmour(i, Armor);
  289. playersInGroup = 1;
  290. }
  291. }
  292. #else
  293. for(new i = 0; i < MAX_PLAYERS; i++)
  294. {
  295. if(IsPlayerConnected(i))
  296. {
  297. if(svGroups_PlayerGroup[i] == groupid)
  298. {
  299. SetPlayerArmour(i, Armor);
  300. playersInGroup = 1;
  301. }
  302. }
  303. }
  304. #endif
  305.  
  306. return playersInGroup;
  307. }
  308.  
  309. stock svGroup_SetSpawn(groupid, Float: sX, Float: sY, Float: sZ, sInterior = 0, sVirtualWorld = 0, Float: sA)
  310. {
  311. if(svGroups_Debug == true)
  312. {
  313. printf("(svGroups) SetSpawn(groupid = %d, sX = %f, sY = %f, sZ = %f, sInterior = %d, sVirtualWorld = %d, sA = %f)", groupid, sX, sY, sZ, sInterior, sVirtualWorld, sA);
  314. }
  315.  
  316. 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;
  317. }
  318.  
  319. 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)
  320. {
  321. if(svGroups_Debug == true)
  322. {
  323. 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);
  324. }
  325.  
  326. 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;
  327. }
  328.  
  329. stock svGroup_ToggleControllable(groupid, bool: controllable)
  330. {
  331. if(svGroups_Debug == true)
  332. {
  333. printf("(svGroups) ToggleControllable(groupid = %d, controllable = %d)", groupid, controllable);
  334. }
  335.  
  336. new playersInGroup;
  337.  
  338. #if defined USE_FOREACH
  339. foreach(new i: Player)
  340. {
  341. if(svGroups_PlayerGroup[i] == groupid)
  342. {
  343. TogglePlayerControllable(i, controllable);
  344. playersInGroup = 1;
  345. }
  346. }
  347. #else
  348. for(new i = 0; i < MAX_PLAYERS; i++)
  349. {
  350. if(IsPlayerConnected(i))
  351. {
  352. if(svGroups_PlayerGroup[i] == groupid)
  353. {
  354. TogglePlayerControllable(i, controllable);
  355. playersInGroup = 1;
  356. }
  357. }
  358. }
  359. #endif
  360.  
  361. return playersInGroup;
  362. }
  363.  
  364. stock svGroup_GiveMoney(groupid, money)
  365. {
  366. if(svGroups_Debug == true)
  367. {
  368. printf("(svGroups) GiveMoney(groupid = %d, money = %d)", groupid, money);
  369. }
  370.  
  371. new playersInGroup;
  372.  
  373. #if defined USE_FOREACH
  374. foreach(new i: Player)
  375. {
  376. if(svGroups_PlayerGroup[i] == groupid)
  377. {
  378. GivePlayerMoney(i, money);
  379. playersInGroup = 1;
  380. }
  381. }
  382. #else
  383. for(new i = 0; i < MAX_PLAYERS; i++)
  384. {
  385. if(IsPlayerConnected(i))
  386. {
  387. if(svGroups_PlayerGroup[i] == groupid)
  388. {
  389. GivePlayerMoney(i, money);
  390. playersInGroup = 1;
  391. }
  392. }
  393. }
  394. #endif
  395.  
  396. return playersInGroup;
  397. }
Advertisement
Add Comment
Please, Sign In to add comment