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