View difference between Paste ID: 3qF7ssp6 and dCFj0RTD
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