Advertisement
Guest User

peds.inc BETA R3 - By Gammix

a guest
Apr 27th, 2015
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.87 KB | None | 0 0
  1. /*
  2. PEDs Include (peds.inc)
  3. * Since samp 0.3.7 have actors system(which is coolest upgrade ever!), i have planned on peds(tpe of npcs) creator using pawn (not C++)
  4. * This include let you make AI and cool effects and peds without writing thier AI.
  5. * SAMP have provided collisions for actors, which is Awesome and for you as well, cause now ped will collide!
  6.  
  7. Author: (creator)
  8. * Gammix
  9.  
  10. Contributors:
  11. * Pottus - ideas and improvement
  12.  
  13. (c) Copyright 2015
  14. * This file is provided as is (no warranties).
  15. */
  16. /*
  17. FUNCTIONS:
  18. native PED_Connect(skin, Float:x, Float:y, Float:z, Float:rotation = 0.0);
  19. native PED_IsConnected(pedid);
  20. native PED_Disconnect(pedid);
  21. native PED_SetPos(pedid, Float:x, Float:y, Float:z);
  22. native PED_GetPos(pedid, &Float:x, &Float:y, &Float:z);
  23. native PED_SetFacingAngle(pedid, Float:angle);
  24. native PED_GetFacingAngle(pedid, &Float:angle);
  25. native PED_SetVirtualWorld(pedid, world);
  26. native PED_GetVirtualWorld(pedid);
  27. native PED_IsInRangeOfPoint(pedid, Float:range, Float:x, Float:y, Float:z);
  28. native PED_SetFacingPoint(pedid, Float:x, Float:y);
  29. native PED_IsFacingPoint(pedid, Float:x, Float:y, Float:range = 10.0);
  30. native PED_SetFacingPlayer(pedid, playerid);
  31. native PED_IsFacingPlayer(pedid, playerid);
  32. native PED_IsBehindPlayer(pedid, playerid, Float:range);
  33. native PED_SetHealth(pedid, Float:health);
  34. native PED_GetHealth(pedid, &Float:health);
  35. native PED_GotoPoint(pedid, Float:x, Float:y, Float:z, bool:walk = false);
  36. native PED_ApplyAnimation(pedid, animlib[], animname[], Float:fDelta, loop, lockx, locky, freeze, time);
  37. native PED_Stop(pedid);
  38. native PED_Spawn(pedid);
  39. native PED_SetSpawnInfo(pedid, Float:x, Float:y, Float:z, Float:rotation);
  40. native PED_IsMoving(pedid);
  41. native PED_SetWalkingStyle(pedid, walkingstyle);
  42. native PED_GetWalkingStyle(pedid);
  43. native PED_SetRunningStyle(pedid, runningstyle);
  44. native PED_GetRunningStyle(pedid);
  45. native PED_GetState(pedid);
  46.  
  47. CALLBACKS:
  48. public PED_OnConnect(pedid);
  49. public PED_OnDisconnect(pedid);
  50. public PED_OnSpawn(pedid);
  51. public PED_OnReachDestination(pedid, Float:x, Float:y, Float:z);
  52. public PED_OnStateChange(pedid, newstate, oldstate);
  53. public PED_OnStreamIn(pedid, playerid);
  54. public PED_OnStreamOut(pedid, playerid);
  55. */
  56.  
  57. //walking styles
  58. #define PED_WALKING_DEFAULT 0
  59. #define PED_WALKING_NORMAL 1
  60. #define PED_WALKING_GANGSTA 2
  61. #define PED_WALKING_GANGSTA2 3
  62. #define PED_WALKING_OLD 4
  63. #define PED_WALKING_FAT_OLD 5
  64. #define PED_WALKING_FAT 6
  65. #define PED_WALKING_LADY 7
  66. #define PED_WALKING_LADY2 8
  67. #define PED_WALKING_WHORE 9
  68. #define PED_WALKING_WHORE2 10
  69. #define PED_WALKING_DRUNK 11
  70. #define PED_WALKING_BLIND 12
  71. #define PED_WALKING_ARMED 13
  72.  
  73. //ped states
  74. #define PED_STATE_ONFOOT 0
  75. #define PED_STATE_WALKING 1
  76. #define PED_STATE_RUNNING 2
  77.  
  78. //running styles
  79. #define PED_RUNNING_DEFAULT 0
  80. #define PED_RUNNING_NORMAL 1
  81. #define PED_RUNNING_GANGSTA 2
  82. #define PED_RUNNING_GANGSTA2 3
  83. #define PED_RUNNING_OLD 4
  84. #define PED_RUNNING_FAT_OLD 5
  85. #define PED_RUNNING_FAT 6
  86. #define PED_RUNNING_LADY 7
  87. #define PED_RUNNING_LADY2 8
  88. #define PED_RUNNING_WHORE 9
  89. #define PED_RUNNING_WHORE2 10
  90. #define PED_RUNNING_DRUNK 11
  91. #define PED_RUNNING_BLIND 12
  92. #define PED_RUNNING_ARMED 13
  93.  
  94. enum PedEnum
  95. {
  96. bool:P_EXIST,
  97. Float:P_X,
  98. Float:P_Y,
  99. Float:P_Z,
  100. Float:P_ROT,
  101. P_TIMER,
  102. Float:P_HEALTH,
  103. Float:P_GOTOX,
  104. Float:P_GOTOY,
  105. Float:P_GOTOZ,
  106. P_STATE,
  107. P_WALKSTYLE,
  108. P_RUNSTYLE
  109. }
  110. static gPED[MAX_ACTORS][PedEnum];
  111.  
  112. //internal functions
  113. stock Float:PED_GetDistance(Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2)
  114. {
  115. return floatsqroot( (( x1 - x2 ) * ( x1 - x2 )) + (( y1 - y2 ) * ( y1 - y2 )) + (( z1 - z2 ) * ( z1 - z2 )) );
  116. }
  117.  
  118. stock PED_AngleInRangeOfAngle(Float:a1, Float:a2, Float:range = 10.0)
  119. {
  120. a1 -= a2;
  121. if((a1 < range) && (a1 > -range)) return true;
  122. return false;
  123. }
  124.  
  125. //include funcions
  126. stock PED_Connect(skin, Float:x, Float:y, Float:z, Float:rotation = 0.0)
  127. {
  128. if(skin < 0 || skin > 311) return INVALID_ACTOR_ID;
  129.  
  130. new _actor = CreateActor(skin, x, y, z, rotation);
  131.  
  132. if(_actor == INVALID_ACTOR_ID) return INVALID_ACTOR_ID;
  133.  
  134. gPED[_actor][P_EXIST] = true;
  135. gPED[_actor][P_X] = x;
  136. gPED[_actor][P_Y] = y;
  137. gPED[_actor][P_Z] = z;
  138. gPED[_actor][P_ROT] = rotation;
  139. gPED[_actor][P_HEALTH] = 100.0;
  140. gPED[_actor][P_GOTOX] = -1000.0;
  141. gPED[_actor][P_GOTOY] = -1000.0;
  142. gPED[_actor][P_GOTOZ] = -1000.0;
  143. gPED[_actor][P_WALKSTYLE] = 0;
  144. gPED[_actor][P_RUNSTYLE] = 0;
  145. gPED[_actor][P_STATE] = PED_STATE_ONFOOT;
  146.  
  147. gPED[_actor][P_TIMER] = SetTimerEx("PED_OnTimeUpdate", 100, true, "i", _actor);
  148.  
  149. CallLocalFunction("PED_OnConnect", "i", _actor);
  150. CallLocalFunction("PED_OnSpawn", "i", _actor);
  151. return _actor;
  152. }
  153.  
  154. stock PED_IsConnected(pedid) return gPED[pedid][P_EXIST];
  155.  
  156. stock PED_Disconnect(pedid)
  157. {
  158. if(! PED_IsConnected(pedid)) return false;
  159.  
  160. gPED[pedid][P_EXIST] = false;
  161.  
  162. DestroyActor(pedid);
  163. KillTimer(gPED[pedid][P_TIMER]);
  164.  
  165. CallLocalFunction("PED_OnDisconnect", "i", i);
  166. return true;
  167. }
  168.  
  169. stock PED_SetPos(pedid, Float:x, Float:y, Float:z)
  170. {
  171. if(! PED_IsConnected(pedid)) return false;
  172.  
  173. return SetActorPos(pedid, x, y, z);
  174. }
  175.  
  176. stock PED_GetPos(pedid, &Float:x, &Float:y, &Float:z)
  177. {
  178. if(! PED_IsConnected(pedid)) return false;
  179.  
  180. return GetActorPos(pedid, x, y, z);
  181. }
  182.  
  183. stock PED_SetFacingAngle(pedid, Float:angle)
  184. {
  185. if(! PED_IsConnected(pedid)) return false;
  186.  
  187. return SetActorFacingAngle(pedid, angle);
  188. }
  189.  
  190. stock PED_GetFacingAngle(pedid, &Float:angle)
  191. {
  192. if(! PED_IsConnected(pedid)) return false;
  193.  
  194. return GetActorFacingAngle(pedid, angle);
  195. }
  196.  
  197. stock PED_SetVirtualWorld(pedid, world)
  198. {
  199. if(! PED_IsConnected(pedid)) return false;
  200.  
  201. return SetActorVirtualWorld(pedid, world);
  202. }
  203.  
  204. stock PED_GetVirtualWorld(pedid)
  205. {
  206. if(! PED_IsConnected(pedid)) return false;
  207.  
  208. return GetActorVirtualWorld(pedid);
  209. }
  210.  
  211. stock PED_IsInRangeOfPoint(pedid, Float:range, Float:x, Float:y, Float:z)
  212. {
  213. if(! PED_IsConnected(pedid)) return false;
  214.  
  215. new Float:pos[3];
  216. PED_GetPos(pedid, pos[0], pos[1], pos[2]);
  217.  
  218. if(PED_GetDistance(pos[0], pos[1], pos[2], x, y, z) <= range) return true;
  219. return false;
  220. }
  221.  
  222. stock PED_SetFacingPoint(pedid, Float:x, Float:y)
  223. {
  224. if(! PED_IsConnected(pedid)) return false;
  225.  
  226. new Float:pX, Float:pY, Float:pZ;
  227. PED_GetPos(pedid, pX, pY, pZ);
  228.  
  229. new Float:angle;
  230.  
  231. if( y > pY ) angle = (-acos((x - pX) / floatsqroot((x - pX)*(x - pX) + (y - pY)*(y - pY))) - 90.0);
  232. else if( y < pY && x < pX ) angle = (acos((x - pX) / floatsqroot((x - pX)*(x - pX) + (y - pY)*(y - pY))) - 450.0);
  233. else if( y < pY ) angle = (acos((x - pX) / floatsqroot((x - pX)*(x - pX) + (y - pY)*(y - pY))) - 90.0);
  234.  
  235. if(x > pX) angle = (floatabs(floatabs(angle) + 180.0));
  236. else angle = (floatabs(angle) - 180.0);
  237.  
  238. PED_SetFacingAngle(pedid, angle);
  239. return true;
  240. }
  241.  
  242. stock PED_IsFacingPoint(pedid, Float:x, Float:y, Float:range = 10.0)
  243. {
  244. if(! PED_IsConnected(pedid)) return false;
  245.  
  246. new Float:X, Float:Y, Float:Z, Float:A;
  247. PED_GetPos(pedid, X, Y, Z);
  248. PED_GetFacingAngle(pedid, A);
  249.  
  250. new Float:angle;
  251.  
  252. if( Y > y ) angle = (-acos((X - x) / floatsqroot((X - x)*(X - x) + (Y - y)*(Y - y))) - 90.0);
  253. else if( Y < y && X < x ) angle = (acos((X - x) / floatsqroot((X - x)*(X - x) + (Y - y)*(Y - y))) - 450.0);
  254. else if( Y < y ) angle = (acos((X - x) / floatsqroot((X - x)*(X - x) + (Y - y)*(Y - y))) - 90.0);
  255.  
  256. if(AngleInRangeOfAngle(-angle, A, dOffset)) return true;
  257. return false;
  258. }
  259.  
  260. stock PED_SetFacingPlayer(pedid, playerid)
  261. {
  262. if(! PED_IsConnected(pedid)) return false;
  263. if(! IsPlayerConnected(playerid)) return false;
  264.  
  265. new Float:pX, Float:pY, Float:pZ;
  266. GetPlayerPos(playerid, pX, pY, pZ);
  267.  
  268. return PED_SetFacingPoint(pedid, pX, pY);
  269. }
  270.  
  271. stock PED_IsFacingPlayer(pedid, playerid)
  272. {
  273. if(! PED_IsConnected(pedid)) return false;
  274. if(! IsPlayerConnected(playerid)) return false;
  275.  
  276. new Float:pX, Float:pY, Float:pZ;
  277. GetPlayerPos(playerid, pX, pY, pZ);
  278.  
  279. return PED_IsFacingPoint(pedid, pX, pY);
  280. }
  281.  
  282. stock PED_IsBehindPlayer(pedid, playerid, Float:range)
  283. {
  284. if(! PED_IsConnected(pedid)) return false;
  285. if(! IsPlayerConnected(playerid) return false;
  286.  
  287. new Float:za, Float:pa;
  288. PED_GetFacingAngle(pedid, za);
  289. GetPlayerFacingAngle(targetid, pa);
  290.  
  291. if(PED_AngleInRangeOfAngle(za, pa, range) && PED_IsFacingPlayer(playerid, targetid, range)) return true;
  292. return false;
  293. }
  294.  
  295. stock PED_SetHealth(pedid, Float:health)
  296. {
  297. if(! PED_IsConnected(pedid)) return false;
  298.  
  299. gPED[pedid][P_HEALTH] = health;
  300. return true;
  301. }
  302.  
  303. stock PED_GetHealth(pedid, &Float:health)
  304. {
  305. if(! PED_IsConnected(pedid)) return false;
  306.  
  307. health = gPED[pedid][P_HEALTH];
  308. return true;
  309. }
  310.  
  311. stock PED_ApplyAnimation(pedid, animlib[], animname[], Float:fDelta, loop, lockx, locky, freeze, time)
  312. {
  313. if(! PED_IsConnected(pedid)) return false;
  314.  
  315. return ApplyActorAnimation(pedid, animlib, animname, fDelta, loop, lockx, locky, freeze, time);
  316. }
  317.  
  318. stock PED_GotoPoint(pedid, Float:x, Float:y, Float:z, bool:walk = false)
  319. {
  320. if(! PED_IsConnected(pedid)) return false;
  321.  
  322. #pragma unused z
  323.  
  324. PED_Stop(pedid);
  325. PED_SetFacingPoint(pedid, x, y);
  326.  
  327. if(walk)
  328. {
  329. switch(gPED[pedid][P_WALKSTYLE])
  330. {
  331. case PED_WALKING_NORMAL: PED_ApplyAnimation(pedid, "PED", "WALK_civi", 4.1, 1, 1, 1, 1, 0);
  332. case PED_WALKING_GANGSTA: PED_ApplyAnimation(pedid, "PED", "WALK_gang1", 4.1, 1, 1, 1, 1, 0);
  333. case PED_WALKING_GANGSTA2: PED_ApplyAnimation(pedid, "PED", "WALK_gang2", 4.1, 1, 1, 1, 1, 0);
  334. case PED_WALKING_OLD: PED_ApplyAnimation(pedid, "PED", "WALK_old", 4.1, 1, 1, 1, 1, 0);
  335. case PED_WALKING_FAT_OLD: PED_ApplyAnimation(pedid, "PED", "WALK_fatold", 4.1, 1, 1, 1, 1, 0);
  336. case PED_WALKING_FAT: PED_ApplyAnimation(pedid, "PED", "WALK_fat", 4.1, 1, 1, 1, 0, 1);
  337. case PED_WALKING_LADY: PED_ApplyAnimation(pedid, "PED", "WOMAN_walknorm", 4.1, 1, 1, 1, 1, 0);
  338. case PED_WALKING_LADY2: PED_ApplyAnimation(pedid, "PED", "WOMAN_walkbusy", 4.1, 1, 1, 1, 1, 0);
  339. case PED_WALKING_WHORE: PED_ApplyAnimation(pedid, "PED", "WOMAN_walkpro", 4.1, 1, 1, 1, 1, 0);
  340. case PED_WALKING_WHORE2: PED_ApplyAnimation(pedid, "PED", "WOMAN_walksexy", 4.1, 1, 1, 1, 1, 0);
  341. case PED_WALKING_DRUNK: PED_ApplyAnimation(pedid, "PED", "WALK_drunk", 4.1, 1, 1, 1, 1, 0);
  342. case PED_WALKING_BLIND: PED_ApplyAnimation(pedid, "PED", "Walk_Wuzi", 4.1, 1, 1, 1, 1, 0);
  343. case PED_WALKING_ARMED: PED_ApplyAnimation(pedid, "PED", "WALK_armed", 4.1, 1, 1, 1, 1, 0);
  344. default: PED_ApplyAnimation(pedid, "PED", "WALK_player", 4.1, 1, 1, 1, 1, 0);
  345. }
  346. CallLocalFunction("PED_OnStateChange", "iii", pedid, PED_STATE_WALKING, gPED[pedid][P_STATE]);
  347. gPED[pedid][P_STATE] = PED_STATE_WALKING;
  348. }
  349. else
  350. {
  351. switch(gPED[pedid][P_RUNSTYLE])
  352. {
  353. case PED_RUNNING_NORMAL: PED_ApplyAnimation(pedid, "PED", "run_civi", 4.1, 1, 1, 1, 1, 0);
  354. case PED_RUNNING_GANGSTA: PED_ApplyAnimation(pedid, "PED", "run_gang1", 4.1, 1, 1, 1, 1, 0);
  355. case PED_RUNNING_GANGSTA2: PED_ApplyAnimation(pedid, "PED", "run_gang1", 4.1, 1, 1, 1, 1, 0);
  356. case PED_RUNNING_OLD: PED_ApplyAnimation(pedid, "PED", "run_old", 4.1, 1, 1, 1, 1, 0);
  357. case PED_RUNNING_FAT_OLD: PED_ApplyAnimation(pedid, "PED", "run_fatold", 4.1, 1, 1, 1, 1, 0);
  358. case PED_RUNNING_FAT: PED_ApplyAnimation(pedid, "PED", "run_fat", 4.1, 1, 1, 1, 0, 1);
  359. case PED_RUNNING_LADY: PED_ApplyAnimation(pedid, "PED", "woman_run", 4.1, 1, 1, 1, 1, 0);
  360. case PED_RUNNING_LADY2: PED_ApplyAnimation(pedid, "PED", "WOMAN_runbusy", 4.1, 1, 1, 1, 1, 0);
  361. case PED_RUNNING_WHORE: PED_ApplyAnimation(pedid, "PED", "woman_runpanic", 4.1, 1, 1, 1, 1, 0);
  362. case PED_RUNNING_WHORE2: PED_ApplyAnimation(pedid, "PED", "WOMAN_runsexy", 4.1, 1, 1, 1, 1, 0);
  363. case PED_RUNNING_DRUNK: PED_ApplyAnimation(pedid, "PED", "WALK_drunk", 4.1, 1, 1, 1, 1, 0);
  364. case PED_RUNNING_BLIND: PED_ApplyAnimation(pedid, "PED", "Run_Wuzi", 4.1, 1, 1, 1, 1, 0);
  365. case PED_RUNNING_ARMED: PED_ApplyAnimation(pedid, "PED", "run_armed", 4.1, 1, 1, 1, 1, 0);
  366. default: PED_ApplyAnimation(pedid, "PED", "run_player", 4.1, 1, 1, 1, 1, 0);
  367. }
  368. CallLocalFunction("PED_OnStateChange", "iii", pedid, PED_STATE_RUNNING, gPED[pedid][P_STATE]);
  369. gPED[pedid][P_STATE] = PED_STATE_RUNNING;
  370. }
  371.  
  372. gPED[pedid][P_GOTOX] = x;
  373. gPED[pedid][P_GOTOY] = y;
  374. gPED[pedid][P_GOTOZ] = z;
  375. return true;
  376. }
  377.  
  378. stock PED_SetWalkingStyle(pedid, walkingstyle)
  379. {
  380. if(! PED_IsConnected(pedid)) return false;
  381. if(walkingstyle < 0 || walkingstyle > 13) return false;
  382.  
  383. gPED[pedid][P_WALKSTYLE] = walkingstyle;
  384. return true;
  385. }
  386.  
  387. stock PED_GetWalkingStyle(pedid)
  388. {
  389. if(! PED_IsConnected(pedid)) return false;
  390.  
  391. return gPED[pedid][P_WALKSTYLE];
  392. }
  393.  
  394. stock PED_SetRunningStyle(pedid, runningstyle)
  395. {
  396. if(! PED_IsConnected(pedid)) return false;
  397.  
  398. gPED[pedid][P_RUNSTYLE] = runningstyle;
  399. return true;
  400. }
  401.  
  402. stock PED_GetRunningStyle(pedid)
  403. {
  404. if(! PED_IsConnected(pedid)) return false;
  405.  
  406. return gPED[pedid][P_RUNSTYLE];
  407. }
  408.  
  409. stock PED_GetState(pedid)
  410. {
  411. if(! PED_IsConnected(pedid)) return false;
  412.  
  413. return gPED[pedid][P_STATE];
  414. }
  415.  
  416. stock PED_Stop(pedid)
  417. {
  418. if(! PED_IsConnected(pedid)) return false;
  419.  
  420. CallLocalFunction("PED_OnStateChange", "iii", pedid, PED_STATE_ONFOOT, gPED[pedid][P_STATE]);//calling !:D!
  421.  
  422. gPED[pedid][P_STATE] = PED_STATE_ONFOOT;
  423. return ClearActorAnimations(pedid);
  424. }
  425.  
  426. stock PED_Spawn(pedid)
  427. {
  428. if(! PED_IsConnected(pedid)) return false;
  429.  
  430. PED_SetHealth(pedid, 100.0);
  431. PED_SetVirtualWorld(pedid, 0);
  432. PED_SetPos(pedid, gPED[pedid][P_X], gPED[pedid][P_Y], gPED[pedid][P_Z]);
  433. PED_SetFacingAngle(pedid, gPED[pedid][P_ROT]);
  434. gPED[pedid][P_STATE] = PED_STATE_ONFOOT;
  435.  
  436. CallLocalFunction("PED_OnSpawn", "i", pedid);
  437. return true;
  438. }
  439.  
  440. stock PED_SetSpawnInfo(pedid, Float:x, Float:y, Float:z, Float:rotation)
  441. {
  442. if(! PED_IsConnected(pedid)) return false;
  443.  
  444. gPED[pedid][P_X] = x;
  445. gPED[pedid][P_Y] = y;
  446. gPED[pedid][P_Z] = z;
  447. gPED[pedid][P_ROT] = rotation;
  448. return true;
  449. }
  450.  
  451. //internal callback
  452. forward PED_OnTimeUpdate(pedid);
  453. public PED_OnTimeUpdate(pedid)
  454. {
  455. if( PED_GetState(pedid) == PED_STATE_RUNNING ||
  456. PED_GetState(pedid) == PED_STATE_WALKING)
  457. {
  458. if( PED_IsInRangeOfPoint(pedid, 5.0, gPED[pedid][P_GOTOX], gPED[pedid][P_GOTOY], gPED[pedid][P_GOTOZ]))//will be adding a better version when actors include gets an update from Kalcor*!
  459. {
  460. PED_Stop(pedid);
  461. CallLocalFunction("PED_OnReachDestination", "ifff", pedid, gPED[pedid][P_GOTOX], gPED[pedid][P_GOTOY], gPED[pedid][P_GOTOZ]);
  462. return 1;
  463. }
  464. }
  465. return 1;
  466. }
  467.  
  468. forward PED_OnConnect(pedid);
  469. forward PED_OnDisconnect(pedid);
  470. forward PED_OnSpawn(pedid);
  471. forward PED_OnReachDestination(pedid, Float:x, Float:y, Float:z);
  472. forward PED_OnStateChange(pedid, newstate, oldstate);
  473. forward PED_OnStreamIn(pedid, playerid);
  474. forward PED_OnStreamOut(pedid, playerid);
  475.  
  476. forward OnActorStreamIn(actorid, playerid);
  477. public OnActorStreamIn(actorid, playerid)
  478. {
  479. if(gPED[actorid][P_EXIST]) CallLocalFunction("PED_OnStreamIn", "ii", actorid, playerid);
  480.  
  481. #if defined HoOK_OnActorStreamIn
  482. HoOK_OnActorStreamIn(actorid, playerid);
  483. #endif
  484. return 1;
  485. }
  486. #if defined _ALS_OnActorStreamIn
  487. #undef OnActorStreamIn
  488. #else
  489. #define _ALS_OnActorStreamIn
  490. #endif
  491. #define OnActorStreamIn HoOK_OnActorStreamIn
  492. #if defined HoOK_OnActorStreamIn
  493. forward HoOK_OnActorStreamIn(actorid, playerid);
  494. #endif
  495.  
  496. forward OnActorStreamOut(actorid, playerid);
  497. public OnActorStreamOut(actorid, playerid)
  498. {
  499. if(gPED[actorid][P_EXIST]) CallLocalFunction("PED_OnStreamOut", "ii", actorid, playerid);
  500.  
  501. #if defined HoOK_OnActorStreamOut
  502. HoOK_OnActorStreamOut(actorid, playerid);
  503. #endif
  504. return 1;
  505. }
  506. #if defined _ALS_OnActorStreamOut
  507. #undef OnActorStreamOut
  508. #else
  509. #define _ALS_OnActorStreamOut
  510. #endif
  511. #define OnActorStreamOut HoOK_OnActorStreamOut
  512. #if defined HoOK_OnActorStreamOut
  513. forward HoOK_OnActorStreamOut(actorid, playerid);
  514. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement