SHOW:
|
|
- or go back to the newest paste.
| 1 | /* | |
| 2 | - | iParachute v0.1 |
| 2 | + | By [DOG]irinel1996, special thanks to RyDeR` for Map Andreas include version. |
| 3 | - | By irinel1996 |
| 3 | + | Official thread: http://forum.sa-mp.com/showthread.php?t=356826 |
| 4 | - | Thanks to FireCat too |
| 4 | + | |
| 5 | #include <mapandreas> | |
| 6 | ||
| 7 | #define TOTAL_ANIMS (10) | |
| 8 | ||
| 9 | forward OnPlayerOpenParachute(playerid, altitude); | |
| 10 | - | new idx=GetPlayerAnimationIndex(playerid); |
| 10 | + | |
| 11 | - | if(idx==1134||idx==961||idx==962||idx==958||idx==959|| |
| 11 | + | new |
| 12 | - | idx==971||idx==963||idx==976||idx==978||idx==965) return 1; |
| 12 | + | gAnims_Skydive[TOTAL_ANIMS] = {
|
| 13 | - | return 0; |
| 13 | + | 958, 959, 961, 962, |
| 14 | 963, 965, 971, 976, | |
| 15 | 978, 1134 | |
| 16 | }; | |
| 17 | - | new idx=GetPlayerAnimationIndex(playerid); |
| 17 | + | |
| 18 | - | if(idx==963||idx==976||idx==978||idx==965) return 1; //Opened |
| 18 | + | new |
| 19 | - | else if(idx==971) return 2; //Opening |
| 19 | + | bool:gLock_Callback[MAX_PLAYERS]; |
| 20 | - | return 0; //Closed |
| 20 | + | |
| 21 | stock IsPlayerSkyDiving(playerid) | |
| 22 | - | stock GetPlayerAltitude(playerid, tipo=0) |
| 22 | + | |
| 23 | for (new idx = 0; idx < TOTAL_ANIMS; idx++) {
| |
| 24 | - | new Float:x,Float:y,Float:z; |
| 24 | + | if (GetPlayerAnimationIndex(playerid) == gAnims_Skydive[idx]) {
|
| 25 | - | switch(tipo) |
| 25 | + | return 1; |
| 26 | } | |
| 27 | - | case 0: |
| 27 | + | |
| 28 | return 0; | |
| 29 | - | if(IsPlayerSkyDiving(playerid)) |
| 29 | + | |
| 30 | ||
| 31 | - | GetPlayerPos(playerid,x,y,z); |
| 31 | + | |
| 32 | - | new Float:r=GetPointZPos(x,y); |
| 32 | + | |
| 33 | - | new Float:r2 = z-r; |
| 33 | + | new |
| 34 | - | return floatround(r2,floatround_round); |
| 34 | + | idx = GetPlayerAnimationIndex(playerid); |
| 35 | ||
| 36 | if (idx == gAnims_Skydive[4] || idx == gAnims_Skydive[5] || idx == gAnims_Skydive[7] || idx == gAnims_Skydive[8]) {
| |
| 37 | - | case 1: |
| 37 | + | return 1; |
| 38 | } else if (idx == gAnims_Skydive[6]) {
| |
| 39 | - | GetPlayerPos(playerid,x,y,z); |
| 39 | + | return 2; |
| 40 | - | new Float:r=GetPointZPos(x,y); |
| 40 | + | } else {
|
| 41 | - | new Float:r2 = z-r; |
| 41 | + | return 0; |
| 42 | - | return floatround(r2,floatround_round); |
| 42 | + | |
| 43 | } | |
| 44 | ||
| 45 | - | return 0; |
| 45 | + | stock GetPlayerAltitude(playerid) |
| 46 | {
| |
| 47 | new Float:Pos[3]; | |
| 48 | GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]); | |
| 49 | - | if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT){
|
| 49 | + | |
| 50 | - | if(GetPlayerWeapon(playerid) == 46){
|
| 50 | + | new |
| 51 | - | if(newkeys & KEY_FIRE){
|
| 51 | + | Float:ground = GetPointZPos(Pos[0], Pos[1]), |
| 52 | - | if(GetPlayerParachuteState(playerid) == 0 || GetPlayerParachuteState(playerid) == 2){
|
| 52 | + | Float:altitude = (Pos[2] - ground) |
| 53 | - | CallLocalFunction("OnPlayerOpenParachute","dd",playerid,GetPlayerAltitude(playerid,1));
|
| 53 | + | ; |
| 54 | - | } } } } |
| 54 | + | |
| 55 | - | CallLocalFunction("isd_OnPlayerKeyStateChange","iii",playerid,newkeys,oldkeys);
|
| 55 | + | return floatround(altitude, floatround_round); |
| 56 | } | |
| 57 | - | #if defined _ALS_OnPlayerKeyStateChange |
| 57 | + | |
| 58 | - | #undef OnPlayerKeyStateChange |
| 58 | + | public OnPlayerUpdate(playerid) |
| 59 | - | #else |
| 59 | + | |
| 60 | - | #define _ALS_OnPlayerKeyStateChange |
| 60 | + | if (gLock_Callback[playerid]) {
|
| 61 | if (GetPlayerParachuteState(playerid) != 0 && IsPlayerSkyDiving(playerid)) | |
| 62 | - | #define OnPlayerKeyStateChange isd_OnPlayerKeyStateChange |
| 62 | + | gLock_Callback[playerid] = false; |
| 63 | - | forward OnPlayerKeyStateChange(playerid, newkeys, oldkeys); |
| 63 | + | |
| 64 | #if defined khJGcUybTx | |
| 65 | return khJGcUybTx(playerid); | |
| 66 | #else | |
| 67 | return true; | |
| 68 | #endif | |
| 69 | } | |
| 70 | ||
| 71 | #define OnPlayerUpdate khJGcUybTx | |
| 72 | ||
| 73 | #if defined khJGcUybTx | |
| 74 | forward OnPlayerUpdate(playerid); | |
| 75 | #endif | |
| 76 | ||
| 77 | //---------------------------------------------------// | |
| 78 | ||
| 79 | public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) | |
| 80 | {
| |
| 81 | if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) | |
| 82 | {
| |
| 83 | if(GetPlayerWeapon(playerid) == 46) | |
| 84 | {
| |
| 85 | if(newkeys & KEY_FIRE) | |
| 86 | {
| |
| 87 | if(GetPlayerParachuteState(playerid) == 0) {
| |
| 88 | if (!gLock_Callback[playerid]) {
| |
| 89 | gLock_Callback[playerid] = true; | |
| 90 | CallLocalFunction("OnPlayerOpenParachute", "dd", playerid, GetPlayerAltitude(playerid));
| |
| 91 | } | |
| 92 | } | |
| 93 | } | |
| 94 | } | |
| 95 | } | |
| 96 | ||
| 97 | #if defined YxTcODfbXm | |
| 98 | return YxTcODfbXm(playerid, newkeys, oldkeys); | |
| 99 | #else | |
| 100 | return true; | |
| 101 | #endif | |
| 102 | } | |
| 103 | ||
| 104 | #define OnPlayerKeyStateChange YxTcODfbXm | |
| 105 | ||
| 106 | #if defined YxTcODfbXm | |
| 107 | forward OnPlayerKeyStateChange(playerid, newkeys, oldkeys); | |
| 108 | #endif |