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 | } |