Guest User

Untitled

a guest
Dec 15th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. /**
  2. * Dynamic Checkpoint Handler
  3. *
  4. */
  5.  
  6. const MAX_CHECKPOINT_HANDLERS = 10;
  7.  
  8. static Func:CheckpointEnterHandlers[MAX_CHECKPOINT_HANDLERS]<ii>;
  9. static Func:CheckpointLeaveHandlers[MAX_CHECKPOINT_HANDLERS]<ii>;
  10.  
  11. static RegisteredCheckpointHandlers = 0;
  12.  
  13. forward Ejemplito();
  14. public Ejemplito()
  15. {
  16. new algo = RegisterDynamicCPHandler(addressof(EnterHandler<ii>), addressof(ExitHandler<ii>));
  17. printf("algo: %d", algo);
  18. }
  19.  
  20. RegisterDynamicCPHandler(Func:enter_handler<ii>, Func:leave_handler<ii> = Func:0<ii>)
  21. {
  22. Indirect_Claim(enter_handler);
  23. Indirect_Claim(leave_handler);
  24.  
  25. CheckpointEnterHandlers[RegisteredCheckpointHandlers] = enter_handler;
  26. CheckpointLeaveHandlers[RegisteredCheckpointHandlers] = leave_handler;
  27.  
  28. return RegisteredCheckpointHandlers++;
  29. }
  30.  
  31. public OnPlayerEnterDynamicCP(playerid, checkpointid)
  32. {
  33. new id = Streamer_GetIntData(STREAMER_TYPE_CP, checkpointid, E_STREAMER_EXTRA_ID);
  34.  
  35. if(0 <= id < RegisteredCheckpointHandlers)
  36. {
  37. Indirect_Call(_:CheckpointEnterHandlers[id], _:(tagof(CheckpointEnterHandlers)), playerid, checkpointid);
  38. }
  39.  
  40. return 1;
  41. }
  42.  
  43. public OnPlayerLeaveDynamicCP(playerid, checkpointid)
  44. {
  45. new id = Streamer_GetIntData(STREAMER_TYPE_CP, checkpointid, E_STREAMER_EXTRA_ID);
  46.  
  47. if(0 <= id < RegisteredCheckpointHandlers)
  48. {
  49. Indirect_Call(_:CheckpointLeaveHandlers[id], _:(tagof(CheckpointLeaveHandlers)), playerid, checkpointid);
  50. }
  51.  
  52. return 1;
  53. }
  54.  
  55. EnterHandler(playerid, checkpointid)
  56. {
  57. printf("Handler: playerid %d checkpointid %d enter", playerid, checkpointid);
  58. }
  59.  
  60. ExitHandler(playerid, checkpointid)
  61. {
  62. printf("Handler: playerid %d checkpointid %d exit", playerid, checkpointid);
  63. }
Add Comment
Please, Sign In to add comment