View difference between Paste ID: 5Z26tvUB and sYvNWTsm
SHOW: | | - or go back to the newest paste.
1
//by Proff116
2
3
#include <a_samp>
4
5
// Ïàðàìåòðû ñòîèìîñòè çàòðàò âûíîñëèâîñòè
6
#define COST_STAMINA1	-5	// óñêîðåíèå íà âåëèêå (ïîñòîÿííîå íàæàòèå W)
7
#define COST_STAMINA2	-15	// ïðûæîê íà âåëèêå
8
#define COST_STAMINA3   -5	// îáû÷íîå óñêîðåíèå íà âåëèêå
9
#define COST_STAMINA4   -5	//ñïðèíò (áûñòðûé áåã) ñ óñêîðåíèåì
10
#define COST_STAMINA5   -5  //ïîñòîÿííûé ñïðèíò
11
#define COST_STAMINA6   -10 //ïðûæîê
12
#define COST_STAMINA7   -5  //áëèæíèé óäàð
13
#define REG_STAMINA   	5  //îññòàíîâëåíèå âûíîñëèâîñòè â ñåêóíäó
14
15
new
16
	timer,
17
	PlayerStamina[MAX_PLAYERS],
18
	PlayerText: StaminaTD[3][MAX_PLAYERS];
19
20
public OnFilterScriptInit()
21
{
22
	for(new i, j = GetMaxPlayers(); i < j; i++)
23
	{
24
	    PlayerStamina[i] = 100;
25
	    CreatePlayerTD(i);
26
	}
27
	timer = SetTimer("Timer", 1000, 1);
28
	return 1;
29
}
30
31
public OnFilterScriptExit()
32
{
33
	for(new i, j = GetMaxPlayers(); i < j; i++)
34
	{
35
	    DestroyPlayerTD(i);
36
	}
37
	KillTimer(timer);
38
	return 1;
39
}
40
41
public OnPlayerConnect(playerid)
42
{
43
	PlayerStamina[playerid] = 100;
44
	CreatePlayerTD(playerid);
45
	return 1;
46
}
47
48
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
49
{
50
	if (newkeys & KEY_SPRINT)
51
	{
52
		if(IsPlayerByBicycle(playerid))
53
		{
54
			GivePlayerStamina(playerid, COST_STAMINA1);
55
			if(PlayerStamina[playerid] < 1) RemovePlayerFromVehicle(playerid);
56
			return 1;
57
		}
58
		if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
59
		{
60
  	        	GivePlayerStamina(playerid, COST_STAMINA4);
61
   			if(PlayerStamina[playerid] < 1) ApplyAnimation(playerid,"PED","IDLE_TIRED",4.0, 0, 1, 0, 0, 2000, 1);
62
			return 1;
63-
  	    }
63+
64
		
65
	}
66
	else if (oldkeys & KEY_ACTION)
67
	{
68
		if(IsPlayerByBicycle(playerid))
69
		{
70
			GivePlayerStamina(playerid, COST_STAMINA2);
71
			if(PlayerStamina[playerid] < 1) RemovePlayerFromVehicle(playerid);
72
			return 1;
73
		}
74
	}
75
	else if(newkeys & KEY_JUMP)
76
  	{
77-
  	    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
77+
78-
  	    {
78+
79
  			GivePlayerStamina(playerid, COST_STAMINA6);
80
   			if(PlayerStamina[playerid] < 1) ApplyAnimation(playerid,"PED","KO_SKID_BACK",4.0, 0, 1, 0, 0, 0, 1);
81
			return 1;
82
		}
83
	}
84
	else if(newkeys & KEY_FIRE || newkeys == 144)
85
  	{
86-
  	    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
86+
87-
  	    {
87+
88-
  	        if(IsPlayerMeleeWeapon(playerid))
88+
			if(IsPlayerMeleeWeapon(playerid))
89-
  	        {
89+
90
  				GivePlayerStamina(playerid, COST_STAMINA7);
91
   				if(PlayerStamina[playerid] < 1) ApplyAnimation(playerid,"PED","HIT_WALL",4.0, 0, 1, 0, 0, 0, 1);
92
				return 1;
93
			}
94
		}
95
	}
96
	return 1;
97
}
98
99
forward Timer();
100
public Timer()
101
{
102
	for(new i, j = GetMaxPlayers(); i < j; i++)
103
	{
104
		if(!IsPlayerConnected(i)) continue;
105
    		new key[3]; GetPlayerKeys(i,key[0],key[1],key[2]);
106
		if(key[0] == KEY_SPRINT)
107
		{
108
			if(IsPlayerByBicycle(i))
109
			{
110
				GivePlayerStamina(i, COST_STAMINA3);
111
				if(PlayerStamina[i] < 1) RemovePlayerFromVehicle(i);
112
				return 1;
113
			}
114
			if(GetPlayerState(i) == PLAYER_STATE_ONFOOT)
115-
  	    	{
115+
116-
  	        	GivePlayerStamina(i, COST_STAMINA5);
116+
				GivePlayerStamina(i, COST_STAMINA5);
117-
   				if(PlayerStamina[i] < 1) ApplyAnimation(i,"PED","IDLE_TIRED",4.0, 0, 1, 0, 0, 2000, 1);
117+
				if(PlayerStamina[i] < 1) ApplyAnimation(i,"PED","IDLE_TIRED",4.0, 0, 1, 0, 0, 2000, 1);
118
				return 1;
119-
  	    	}
119+
  	    		}
120
		}
121
		GivePlayerStamina(i, REG_STAMINA);
122
	}
123
	return 1;
124
}
125
126
stock IsPlayerMeleeWeapon(playerid)
127
{
128
    switch(GetPlayerWeapon(playerid))
129
	{
130
		case 0..15, 43, 46: return 1;
131
	}
132
	return 0;
133
}
134
135
stock IsPlayerByBicycle(playerid)
136
{
137-
    switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
137+
	switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
138
	{
139
		case 509, 481, 510: return 1;
140
	}
141
	return 0;
142
}
143
144
stock GivePlayerStamina(playerid, stamina)
145
{
146
	PlayerStamina[playerid] += stamina;
147
	if(PlayerStamina[playerid] < 0) PlayerStamina[playerid] = 0;
148
	else if(PlayerStamina[playerid] > 100) PlayerStamina[playerid] = 100;
149
	PlayerTextDrawHide(playerid,StaminaTD[2][playerid]);
150
	PlayerTextDrawTextSize(playerid,StaminaTD[2][playerid], 545.500000 + 0.58 * PlayerStamina[playerid], 0.000000);
151
	PlayerTextDrawShow(playerid,StaminaTD[2][playerid]);
152
	return 1;
153
}
154
155
stock CreatePlayerTD(playerid)
156
{
157
	StaminaTD[0][playerid] = CreatePlayerTextDraw(playerid,547.500000, 58.000000, "_");
158
	PlayerTextDrawBackgroundColor(playerid,StaminaTD[0][playerid], 255);
159
	PlayerTextDrawFont(playerid,StaminaTD[0][playerid], 1);
160
	PlayerTextDrawLetterSize(playerid,StaminaTD[0][playerid], 0.500000, 0.449999);
161
	PlayerTextDrawColor(playerid,StaminaTD[0][playerid], -1);
162
	PlayerTextDrawSetOutline(playerid,StaminaTD[0][playerid], 0);
163
	PlayerTextDrawSetProportional(playerid,StaminaTD[0][playerid], 1);
164
	PlayerTextDrawSetShadow(playerid,StaminaTD[0][playerid], 1);
165
	PlayerTextDrawUseBox(playerid,StaminaTD[0][playerid], 1);
166
	PlayerTextDrawBoxColor(playerid,StaminaTD[0][playerid], 255);
167
	PlayerTextDrawTextSize(playerid,StaminaTD[0][playerid], 605.500000, 0.000000);
168
	PlayerTextDrawSetSelectable(playerid,StaminaTD[0][playerid], 0);
169
170
	StaminaTD[1][playerid] = CreatePlayerTextDraw(playerid,549.500000, 60.500000, "_");
171
	PlayerTextDrawBackgroundColor(playerid,StaminaTD[1][playerid], 255);
172
	PlayerTextDrawFont(playerid,StaminaTD[1][playerid], 1);
173
	PlayerTextDrawLetterSize(playerid,StaminaTD[1][playerid], 0.500000, 0.000000);
174
	PlayerTextDrawColor(playerid,StaminaTD[1][playerid], -1);
175
	PlayerTextDrawSetOutline(playerid,StaminaTD[1][playerid], 0);
176
	PlayerTextDrawSetProportional(playerid,StaminaTD[1][playerid], 1);
177
	PlayerTextDrawSetShadow(playerid,StaminaTD[1][playerid], 1);
178
	PlayerTextDrawUseBox(playerid,StaminaTD[1][playerid], 1);
179
	PlayerTextDrawBoxColor(playerid,StaminaTD[1][playerid], 33023);
180
	PlayerTextDrawTextSize(playerid,StaminaTD[1][playerid], 603.500000, 0.000000);
181
	PlayerTextDrawSetSelectable(playerid,StaminaTD[1][playerid], 0);
182
183
	StaminaTD[2][playerid] = CreatePlayerTextDraw(playerid,549.500000, 60.500000, "_");
184
	PlayerTextDrawBackgroundColor(playerid,StaminaTD[2][playerid], 255);
185
	PlayerTextDrawFont(playerid,StaminaTD[2][playerid], 1);
186
	PlayerTextDrawLetterSize(playerid,StaminaTD[2][playerid], 0.500000, 0.000000);
187
	PlayerTextDrawColor(playerid,StaminaTD[2][playerid], -1);
188
	PlayerTextDrawSetOutline(playerid,StaminaTD[2][playerid], 0);
189
	PlayerTextDrawSetProportional(playerid,StaminaTD[2][playerid], 1);
190
	PlayerTextDrawSetShadow(playerid,StaminaTD[2][playerid], 1);
191
	PlayerTextDrawUseBox(playerid,StaminaTD[2][playerid], 1);
192
	PlayerTextDrawBoxColor(playerid,StaminaTD[2][playerid], 65535);
193
	PlayerTextDrawTextSize(playerid,StaminaTD[2][playerid], 545.500000, 0.000000);
194
	PlayerTextDrawSetSelectable(playerid,StaminaTD[2][playerid], 0);
195
196
	for(new i; i < sizeof(StaminaTD); i++) PlayerTextDrawShow(playerid,StaminaTD[i][playerid]);
197
	return 1;
198
}
199
200
stock DestroyPlayerTD(playerid)
201
{
202
	for(new i; i < sizeof(StaminaTD); i++) PlayerTextDrawDestroy(playerid, StaminaTD[i][playerid]);
203
	return 1;
204
}