Advertisement
GammixSAMP

playerfuncs.inc - By Gammix

May 12th, 2015
976
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.69 KB | None | 0 0
  1. /*
  2. Player Functions Include (playerfuncs.inc)
  3. * Some usefull player functions!
  4.  
  5. Author: (creator)
  6. * Gammix
  7.  
  8. (c) Copyright 2015
  9. * This file is provided as is (no warranties).
  10. */
  11.  
  12. /*
  13. FUNCTIONS:
  14. native GivePlayerScore(playerid, score);
  15. native SetPlayerMoney(playerid, money);
  16. native RemovePlayerWeapon(playerid, weaponid);
  17. native SetPlayerFacingPoint(playerid, Float:x, Float:y);
  18. native IsPlayerFacingPoint(playerid, Float:x, Float:y, Float:range = 10.0);
  19. native SetPlayerFacingPlayer(playerid, targetid);
  20. native IsPlayerFacingPlayer(playerid, targetid, Float:range = 10.0);
  21. native IsPlayerBehindPlayer(playerid, targetid, Float:range = 10.0);
  22. native GetPlayerWeaponAmmo(playerid, weaponid);
  23. native SetPlayerWeaponAmmo(playerid, weaponid, ammo);
  24. native IsPlayerHavingWeapon(playerid, weaponid);
  25. native SetPlayerWalkingStyle(playerid, style);
  26. native GetPlayerWalkingStyle(playerid);
  27. native GetPlayerSkillLevel(playerid, skill);
  28.  
  29. CALLBACKS:
  30. public OnPlayerWalk(playerid, style)
  31. */
  32.  
  33. //walking styles
  34. #define WALKING_STYLE_DEFAULT 0
  35. #define WALKING_STYLE_CIVILIAN 1
  36. #define WALKING_STYLE_GANGSTA 2
  37. #define WALKING_STYLE_GANGSTA_2 3
  38. #define WALKING_STYLE_OLD 4
  39. #define WALKING_STYLE_FAT_OLD 5
  40. #define WALKING_STYLE_FAT 6
  41. #define WALKING_STYLE_LADY 7
  42. #define WALKING_STYLE_LADY_2 8
  43. #define WALKING_STYLE_WHORE 9
  44. #define WALKING_STYLE_WHORE_2 10
  45. #define WALKING_STYLE_DRUNK 11
  46. #define WALKING_STYLE_BLIND 12
  47. #define WALKING_STYLE_ARMED 13
  48.  
  49. #if ! defined HOLDING
  50. #define HOLDING(%0) \
  51. ((newkeys & (%0)) == (%0))
  52. #endif
  53.  
  54. #if ! defined RELEASED
  55. #define RELEASED(%0) \
  56. (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
  57. #endif
  58.  
  59. static gWalkingStyle[MAX_PLAYERS];
  60. static gPlayerSkills[MAX_PLAYERS][11];
  61.  
  62. stock GivePlayerScore(playerid, score)
  63. {
  64. return SetPlayerScore(playerid, GetPlayerScore(playerid) + score);
  65. }
  66.  
  67. stock SetPlayerMoney(playerid, money)
  68. {
  69. ResetPlayerMoney(playerid);
  70. return GivePlayerMoney(playerid, money);
  71. }
  72.  
  73. stock RemovePlayerWeapon(playerid, weaponid)
  74. {
  75. new weapon, ammo;
  76. for(new i; i != 13; i++)
  77. {
  78. GetPlayerWeaponData(playerid, i, weapon, ammo);
  79. if(weapon == weaponid)
  80. {
  81. return GivePlayerWeapon(playerid, weaponid, -ammo);
  82. }
  83. }
  84. return false
  85. }
  86.  
  87. stock SetPlayerFacingPoint(playerid, Float:x, Float:y)
  88. {
  89. new Float:pos[3];
  90. GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  91.  
  92. new Float:angle;
  93.  
  94. if( y > pos[1] ) angle = (-acos((x - pos[0]) / floatsqroot((x - pos[0])*(x - pos[0]) + (y - pos[1])*(y - pos[1]))) - 90.0);
  95. else if( y < pos[1] && x < pos[0] ) angle = (acos((x - pos[0]) / floatsqroot((x - pos[0])*(x - pos[0]) + (y - pos[1])*(y - pos[1]))) - 450.0);
  96. else if( y < pos[1] ) angle = (acos((x - pos[0]) / floatsqroot((x - pos[0])*(x - pos[0]) + (y - pos[1])*(y - pos[1]))) - 90.0);
  97.  
  98. if(x > pos[0]) angle = (floatabs(floatabs(angle) + 180.0));
  99. else angle = (floatabs(angle) - 180.0);
  100.  
  101. return SetPlayerFacingAngle(playerid, angle);
  102. }
  103.  
  104. stock static IsAngleInRangeOfAngle(Float:a1, Float:a2, Float:range = 10.0)
  105. {
  106. a1 -= a2;
  107. if((a1 < range) && (a1 > -range)) return true;
  108. return false;
  109. }
  110.  
  111. stock IsPlayerFacingPoint(playerid, Float:x, Float:y, Float:range = 10.0)
  112. {
  113. new Float:pos[3];
  114. GetPlayerPos(pedid, pos[0], pos[1], pos[2]);
  115.  
  116. new Float:facing;
  117. GetPlayerFacingAngle(playerid, facing);
  118.  
  119. new Float:angle;
  120.  
  121. if( pos[1] > y ) angle = (-acos((pos[0] - x) / floatsqroot((pos[0] - x)*(pos[0] - x) + (pos[1] - y)*(pos[1] - y))) - 90.0);
  122. else if( pos[1] < y && pos[0] < x ) angle = (acos((pos[0] - x) / floatsqroot((pos[0] - x)*(pos[0] - x) + (pos[1] - y)*(pos[1] - y))) - 450.0);
  123. else if( pos[1] < y ) angle = (acos((pos[0] - x) / floatsqroot((pos[0] - x)*(pos[0] - x) + (pos[1] - y)*(pos[1] - y))) - 90.0);
  124.  
  125. return (IsAngleInRangeOfAngle(-angle, facing, range));
  126. }
  127.  
  128. stock SetPlayerFacingPlayer(playerid, targetid)
  129. {
  130. new Float:pos[3];
  131. GetPlayerPos(targetid, pos[0], pos[1], pos[2]);
  132.  
  133. return SetPlayerFacingAngle(playerid, pos[0], pos[1]);
  134. }
  135.  
  136. stock IsPlayerFacingPlayer(playerid, targetid, Float:range = 10.0)
  137. {
  138. new Float:pos[3];
  139. GetPlayerPos(targetid, pos[0], pos[1], pos[2]);
  140.  
  141. return IsPlayerFacingPoint(playerid, pos[0], pos[1], range);
  142. }
  143.  
  144. stock IsPlayerBehindPlayer(playerid, targetid, Float:range = 10.0)
  145. {
  146. new Float:angle[2];
  147. GetPlayerFacingAngle(playerid, angle[0]);
  148. GetPlayerFacingAngle(targetid, angle[1]);
  149.  
  150. return (IsAngleInRangeOfAngle(angle[0], angle[1], range) && IsPlayerFacingPlayer(playerid, targetid, range));
  151. }
  152.  
  153. stock GetPlayerWeaponAmmo(playerid, weaponid)
  154. {
  155. new current_weapon = GetPlayerWeapon(playerid);
  156.  
  157. new ammo = 0;
  158.  
  159. SetPlayerArmedWeapon(playerid, weaponid);
  160. if(GetPlayerWeapon(playerid) == weaponid)
  161. {
  162. ammo = GetPlayerAmmo(playerid);
  163. }
  164.  
  165. SetPlayerArmedWeapon(playerid, current_weapon);
  166. return ammo;
  167. }
  168.  
  169. stock SetPlayerWeaponAmmo(playerid, weaponid, ammo)
  170. {
  171. return SetPlayerAmmo(playerid, weaponid, ammo);
  172. }
  173.  
  174. stock IsPlayerHavingWeapon(playerid, weaponid)
  175. {
  176. new current_weapon = GetPlayerWeapon(playerid);
  177.  
  178. if(SetPlayerArmedWeapon(playerid, weaponid))
  179. {
  180. if(GetPlayerWeapon(playerid) == weaponid)
  181. {
  182. SetPlayerArmedWeapon(playerid, current_weapon);
  183. return true;
  184. }
  185. }
  186. return false;
  187. }
  188.  
  189. stock SetPlayerWalkingStyle(playerid, style)
  190. {
  191. gWalkingStyle[playerid] = style;
  192. return true;
  193. }
  194.  
  195. stock GetPlayerWalkingStyle(playerid) return gWalkingStyle[playerid];
  196.  
  197. stock FUNC_SetPlayerSkillLevel(playerid, skill, level)
  198. {
  199. gPlayerSkills[playerid][skill] = level;
  200. return SetPlayerSkillLevel(playerid, skill, level);
  201. }
  202. #if defined _ALS_SetPlayerSkillLevel
  203. #undef SetPlayerSkillLevel
  204. #else
  205. #define _ALS_SetPlayerSkillLevel
  206. #endif
  207. #define SetPlayerSkillLevel FUNC_SetPlayerSkillLevel
  208.  
  209. stock GetPlayerSkillLevel(playerid, skill)
  210. {
  211. return gPlayerSkills[playerid][skill];
  212. }
  213.  
  214. public OnPlayerConnect(playerid)
  215. {
  216. gWalkingStyle[playerid] = WALKING_STYLE_DEFAULT;
  217. for(new i; i < 11; i++) gPlayerSkills[playerid][i] = 0;
  218.  
  219. #if defined FUNCS_OnPlayerConnect
  220. return FUNCS_OnPlayerConnect(playerid);
  221. #else
  222. return 1;
  223. #endif
  224. }
  225. #if defined _ALS_OnPlayerConnect
  226. #undef OnPlayerConnect
  227. #else
  228. #define _ALS_OnPlayerConnect
  229. #endif
  230. #define OnPlayerConnect FUNCS_OnPlayerConnect
  231. #if defined FUNCS_OnPlayerConnect
  232. forward FUNCS_OnPlayerConnect(playerid);
  233. #endif
  234.  
  235. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  236. {
  237. new keys, updown, leftright;
  238. GetPlayerKeys(playerid, keys, updown, leftright);
  239.  
  240. if( HOLDING(KEY_WALK) &&
  241. ( (updown & KEY_UP ||
  242. updown & KEY_DOWN)
  243. ||
  244. (leftright & KEY_LEFT ||
  245. leftright & KEY_RIGHT))
  246. )
  247. {
  248. if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  249. {
  250. if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  251. {
  252. if(gWalkingStyle[playerid] != WALKING_STYLE_DEFAULT)
  253. {
  254. new stylestr[28];
  255. switch(gWalkingStyle[playerid])
  256. {
  257. case WALKING_STYLE_CIVILIAN: stylestr = "WALK_civi";
  258. case WALKING_STYLE_GANGSTA: stylestr = "WALK_gang1";
  259. case WALKING_STYLE_GANGSTA_2: stylestr = "WALK_gang2";
  260. case WALKING_STYLE_OLD: stylestr = "WALK_old";
  261. case WALKING_STYLE_FAT_OLD: stylestr = "WALK_fatold";
  262. case WALKING_STYLE_FAT: stylestr = "WALK_fat";
  263. case WALKING_STYLE_LADY: stylestr = "WOMAN_walknorm";
  264. case WALKING_STYLE_LADY_2: stylestr = "WOMAN_walkbusy";
  265. case WALKING_STYLE_WHORE: stylestr = "WOMAN_walkpro";
  266. case WALKING_STYLE_WHORE_2: stylestr = "WOMAN_walksexy";
  267. case WALKING_STYLE_DRUNK: stylestr = "WALK_drunk";
  268. case WALKING_STYLE_BLIND: stylestr = "Walk_Wuzi";
  269. case WALKING_STYLE_ARMED: stylestr = "WALK_armed";
  270. }
  271.  
  272. if(CallLocalFunction("OnPlayerWalk", "ii", playerid, gWalkingStyle[playerid]))
  273. {
  274. return ApplyAnimation(playerid, "PED", stylestr, 4.1, 1, 1, 1, 1, 1);
  275. }
  276. }
  277. }
  278. }
  279. }
  280. if(RELEASED(KEY_WALK))
  281. {
  282. if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  283. {
  284. if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  285. {
  286. if(gWalkingStyle[playerid] != WALKING_STYLE_DEFAULT)
  287. {
  288. new stylestr[28];
  289. switch(gWalkingStyle[playerid])
  290. {
  291. case WALKING_STYLE_CIVILIAN: stylestr = "WALK_civi";
  292. case WALKING_STYLE_GANGSTA: stylestr = "WALK_gang1";
  293. case WALKING_STYLE_GANGSTA_2: stylestr = "WALK_gang2";
  294. case WALKING_STYLE_OLD: stylestr = "WALK_old";
  295. case WALKING_STYLE_FAT_OLD: stylestr = "WALK_fatold";
  296. case WALKING_STYLE_FAT: stylestr = "WALK_fat";
  297. case WALKING_STYLE_LADY: stylestr = "WOMAN_walknorm";
  298. case WALKING_STYLE_LADY_2: stylestr = "WOMAN_walkbusy";
  299. case WALKING_STYLE_WHORE: stylestr = "WOMAN_walkpro";
  300. case WALKING_STYLE_WHORE_2: stylestr = "WOMAN_walksexy";
  301. case WALKING_STYLE_DRUNK: stylestr = "WALK_drunk";
  302. case WALKING_STYLE_BLIND: stylestr = "Walk_Wuzi";
  303. case WALKING_STYLE_ARMED: stylestr = "WALK_armed";
  304. }
  305.  
  306. if(CallLocalFunction("OnPlayerWalk", "ii", playerid, gWalkingStyle[playerid]))
  307. {
  308. return ApplyAnimation(playerid, "PED", stylestr, 4.1, 0, 0, 0, 0, 1);
  309. }
  310. }
  311. }
  312. }
  313. }
  314.  
  315. #if defined FUNCS_OnPlayerKeyStateChange
  316. return FUNCS_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
  317. #else
  318. return 1;
  319. #endif
  320. }
  321. #if defined _ALS_OnPlayerKeyStateChange
  322. #undef OnPlayerKeyStateChange
  323. #else
  324. #define _ALS_OnPlayerKeyStateChange
  325. #endif
  326. #define OnPlayerKeyStateChange FUNCS_OnPlayerKeyStateChange
  327. #if defined FUNCS_OnPlayerKeyStateChange
  328. forward FUNCS_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
  329. #endif
  330.  
  331. //script(not internal) callback
  332. forward OnPlayerWalk(playerid, style);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement