Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Dynamic Checkpoint Handler
- *
- */
- const MAX_CHECKPOINT_HANDLERS = 10;
- static Func:CheckpointEnterHandlers[MAX_CHECKPOINT_HANDLERS]<ii>;
- static Func:CheckpointLeaveHandlers[MAX_CHECKPOINT_HANDLERS]<ii>;
- static RegisteredCheckpointHandlers = 0;
- forward Ejemplito();
- public Ejemplito()
- {
- new algo = RegisterDynamicCPHandler(addressof(EnterHandler<ii>), addressof(ExitHandler<ii>));
- printf("algo: %d", algo);
- }
- RegisterDynamicCPHandler(Func:enter_handler<ii>, Func:leave_handler<ii> = Func:0<ii>)
- {
- Indirect_Claim(enter_handler);
- Indirect_Claim(leave_handler);
- CheckpointEnterHandlers[RegisteredCheckpointHandlers] = enter_handler;
- CheckpointLeaveHandlers[RegisteredCheckpointHandlers] = leave_handler;
- return RegisteredCheckpointHandlers++;
- }
- public OnPlayerEnterDynamicCP(playerid, checkpointid)
- {
- new id = Streamer_GetIntData(STREAMER_TYPE_CP, checkpointid, E_STREAMER_EXTRA_ID);
- if(0 <= id < RegisteredCheckpointHandlers)
- {
- Indirect_Call(_:CheckpointEnterHandlers[id], _:(tagof(CheckpointEnterHandlers)), playerid, checkpointid);
- }
- return 1;
- }
- public OnPlayerLeaveDynamicCP(playerid, checkpointid)
- {
- new id = Streamer_GetIntData(STREAMER_TYPE_CP, checkpointid, E_STREAMER_EXTRA_ID);
- if(0 <= id < RegisteredCheckpointHandlers)
- {
- Indirect_Call(_:CheckpointLeaveHandlers[id], _:(tagof(CheckpointLeaveHandlers)), playerid, checkpointid);
- }
- return 1;
- }
- EnterHandler(playerid, checkpointid)
- {
- printf("Handler: playerid %d checkpointid %d enter", playerid, checkpointid);
- }
- ExitHandler(playerid, checkpointid)
- {
- printf("Handler: playerid %d checkpointid %d exit", playerid, checkpointid);
- }
Add Comment
Please, Sign In to add comment