Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- OnPlayerJump - By: [J]ulian.
- v0.0.1 - 17/09/2014
- - Lanzamiento inicial.
- Requerido:
- - y_hooks: http://forum.sa-mp.com/showthread.php?t=166016
- */
- #include <YSI\y_hooks>
- forward OnPlayerJump(playerid, bool:start, Float:z, Float:dist, time);
- /*
- native IsPlayerJumping(playerid);
- native GetPlayerJumpStartTime(playerid);
- */
- //#define JUMP_HEALTH_RESTORE
- #define INVALID_JUMP -1
- enum JUMP_INFO {
- Float:JUMP_POS[2],
- JUMP_STATE,
- JUMP_TIME,
- }
- new JumpInfo[MAX_PLAYERS][JUMP_INFO];
- stock IsPlayerJumping(playerid)
- {
- if(!IsPlayerConnected(playerid)) return 0;
- return JumpInfo[playerid][JUMP_STATE];
- }
- stock GetPlayerJumpStartTime(playerid)
- {
- if(IsPlayerJumping(playerid))
- {
- return JumpInfo[playerid][JUMP_TIME];
- }
- return INVALID_JUMP;
- }
- hook OnPlayerConnect(playerid)
- {
- JumpInfo[playerid][JUMP_STATE] = 0;
- JumpInfo[playerid][JUMP_TIME] = 0;
- return 1;
- }
- hook OnPlayerUpdate(playerid)
- {
- if(GetPlayerAnimationIndex(playerid))
- {
- static anim[2][32];
- if(GetAnimationName(GetPlayerAnimationIndex(playerid), anim[0], 32, anim[1], 32))
- {
- if(!JumpInfo[playerid][JUMP_STATE])
- {
- if(!strcmp(anim[0], "PED", true) && !strcmp(anim[1], "JUMP_LAUNCH")
- || !strcmp(anim[0], "PED", true) && !strcmp(anim[1], "JUMP_LAUNCH_R")
- || !strcmp(anim[0], "PED", true) && !strcmp(anim[1], "JUMP_GLIDE")
- || !strcmp(anim[0], "PED", true) && !strcmp(anim[1], "FALL_GLIDE")
- || !strcmp(anim[0], "PED", true) && !strcmp(anim[1], "CLIMB_JUMP_B"))
- {
- JumpInfo[playerid][JUMP_STATE] = 1;
- JumpInfo[playerid][JUMP_TIME] = gettime();
- GetPlayerPos(playerid, JumpInfo[playerid][JUMP_POS][0], JumpInfo[playerid][JUMP_POS][0], JumpInfo[playerid][JUMP_POS][0]);
- CallLocalFunction("OnPlayerJump", "iiffi", playerid, true, JumpInfo[playerid][JUMP_POS][0], INVALID_JUMP, JumpInfo[playerid][JUMP_TIME]);
- }
- }
- else
- {
- if(!strcmp(anim[0], "PED", true) && !strcmp(anim[1], "FALL_COLLAPSE")
- || !strcmp(anim[0], "PED", true) && !strcmp(anim[1], "FALL_LAND")
- || !strcmp(anim[0], "PED", true) && !strcmp(anim[1], "JUMP_LAND")
- || !strcmp(anim[0], "PED", true) && !strcmp(anim[1], "KO_SKID_BACK")
- || !strcmp(anim[0], "PED", true) && !strcmp(anim[1], "CLIMB_STAND")
- || !strcmp(anim[0], "PED", true) && !strcmp(anim[1], "CLIMB_JUMP2FALL"))
- {
- JumpInfo[playerid][JUMP_STATE] = 0;
- GetPlayerPos(playerid, JumpInfo[playerid][JUMP_POS][1], JumpInfo[playerid][JUMP_POS][1], JumpInfo[playerid][JUMP_POS][1]);
- CallLocalFunction("OnPlayerJump", "iiffi", playerid, false, JumpInfo[playerid][JUMP_POS][0], JumpInfo[playerid][JUMP_POS][1]-JumpInfo[playerid][JUMP_POS][0], JumpInfo[playerid][JUMP_TIME]);
- }
- }
- }
- }
- return 1;
- }
- #if defined JUMP_HEALTH_RESTORE
- hook OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid)
- {
- if(issuerid == INVALID_PLAYER_ID && weaponid == WEAPON_COLLISION)
- {
- new Float:vida;
- GetPlayerHealth(playerid, vida);
- SetPlayerHealth(playerid, vida+amount);
- }
- return 1;
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement