· 5 years ago · Mar 22, 2020, 08:24 PM
1#if defined _FARMER_INCLUDED
2 #endinput
3#endif
4
5#define _FARMER_INCLUDED
6
7#include "../../../filterscripts/help.inc"
8
9#define FARMER_FIELD_AMOUNT 13 // Wie viele Felder
10#define FARMER_WAREHOUSE_AMOUNT 3 // Wie viele Lager
11#define FARMER_FIELD_OBJECTS 15 // Wie viele Grasobjekte beim Wachsen
12#define FARMER_FERTILIZE_AMOUNT 20 // Wie oft düngen
13#define FARMER_HARVEST_AMOUNT 20 // Wie oft abernten
14#define FARMER_HARVEST_SADLER 6 // Wie viele mit Sadler (Objekte beachten!)
15#define FARMER_READY_AMOUNT 10 // Wie viel von Ready -> Done
16#define FARMER_WAREHOUSE_PRICE_MIN 1000 // Min. Preis Samen
17#define FARMER_WAREHOUSE_PRICE_MAX 10000 // Max. Preis Samen
18#define FARMER_WAREHOUSE_MAX 100 // Lager Kapazität
19#define FARMER_FIELD_GROW_TIME 720 // Wachszeit in Minuten
20#define FARMER_FIELD_HARVEST_TIME 60 // Erntezeit in Minuten
21#define FARMER_STORE_AMOUNT 1 // Anzahl der zu beliefernden Läden
22#define FARMER_STORE_MAX 100 // Max. Anzahl der Waren im Laden
23
24// *** AB HIER NICHT ÄNDERN *** //
25
26#define FARMER_WAREHOUSE_INPUT 4
27#define FARMER_WAREHOUSE_OUTPUT 5
28
29#define FARMER_DIALOG_PLANT 7941
30#define FARMER_DIALOG_FIELDS 7942
31#define FARMER_DIALOG_PROD 7943
32#define FARMER_DIALOG_PRICE 7944
33#define FARMER_DIALOG_CHANGE_H_W 7945
34#define FARMER_DIALOG_CHANGE_H_T 7946
35#define FARMER_DIALOG_CHANGE_H_C 7947
36#define FARMER_DIALOG_CHANGE_H_D 7948
37#define FARMER_DIALOG_CHANGE_S_W 7949
38#define FARMER_DIALOG_CHANGE_S_T 7950
39#define FARMER_DIALOG_CHANGE_S_C 7951
40#define FARMER_DIALOG_CHANGE_S_D 7952
41#define FARMER_DIALOG_CHANGE_S_O 7953
42
43#define FARMER_QUALITY_LOW 1
44#define FARMER_QUALITY_MEDIUM 2
45#define FARMER_QUALITY_HIGH 3
46#define FARMER_QUALITY_RARE 4
47
48#define FARMER_STATE_EMPTY 0
49#define FARMER_STATE_GROWING 1
50#define FARMER_STATE_READY 2
51#define FARMER_STATE_DUE 3
52#define FARMER_STATE_HARVESTING 4
53
54#define FARMER_SEED_NONE -1
55#define FARMER_SEED_WHEAT 0
56#define FARMER_SEED_TOMATO 1
57#define FARMER_SEED_CUCUMBER 2
58#define FARMER_SEED_DRUG 3
59#define FARMER_SEED_OIL 4
60
61#define FARMER_PLAYER_NONE 0
62#define FARMER_PLAYER_BUY 1
63#define FARMER_PLAYER_FERTILIZE 2
64#define FARMER_PLAYER_HARVEST 3
65
66#define FARMER_PROD_NORMAL 0
67#define FARMER_PROD_OIL 1
68
69enum FARMER_enumWarehouse {
70 Float:farmer_warehouse_x,
71 Float:farmer_warehouse_y,
72 Float:farmer_warehouse_z,
73 farmer_warehouse_owner[MAX_PLAYER_NAME],
74 farmer_warehouse_amount,
75 farmer_warehouse_money,
76 farmer_warehouse_purchase,
77 farmer_warehouse_price,
78 farmer_warehouse_pickup,
79 Text3D:farmer_warehouse_label3d
80}
81
82enum FARMER_enumPlayer {
83 farmer_player_state,
84 farmer_player_field_id,
85 farmer_player_vehicle_id,
86 farmer_player_object_id,
87 farmer_player_fertilize_left,
88 farmer_player_fertilize_pickup,
89 farmer_player_change_prod_id,
90 farmer_player_change_price_id,
91 farmer_player_harvest_price,
92 farmer_player_harvest_seed,
93 farmer_player_harvest_objects[FARMER_HARVEST_SADLER],
94 farmer_player_harvest_amount,
95 bool:farmer_player_harvest_pickup,
96 farmer_player_pickup_object,
97 Float:farmer_player_cp_x,
98 Float:farmer_player_cp_y,
99 Float:farmer_player_cp_z
100}
101
102enum FARMER_enumField {
103 farmer_field_min_x,
104 farmer_field_min_y,
105 farmer_field_max_x,
106 farmer_field_max_y,
107 Float:farmer_field_mid_x,
108 Float:farmer_field_mid_y,
109 Float:farmer_field_mid_z,
110 farmer_field_owner[MAX_PLAYER_NAME],
111 farmer_field_money,
112 farmer_field_quality,
113 farmer_field_state,
114 farmer_field_seed,
115 farmer_field_time,
116 farmer_field_harvest_left,
117 farmer_field_harvest_price[FARMER_WAREHOUSE_INPUT],
118 farmer_field_sell_price[FARMER_WAREHOUSE_OUTPUT],
119 bool:farmer_field_fertilized,
120 bool:farmer_field_harvestable,
121 farmer_field_prod_wheat,
122 farmer_field_prod_tomato,
123 farmer_field_prod_cucumber,
124 farmer_field_prod_drugs,
125 farmer_field_wh1_ready[FARMER_WAREHOUSE_INPUT],
126 farmer_field_wh2_ready[FARMER_WAREHOUSE_INPUT],
127 farmer_field_wh3_ready[FARMER_WAREHOUSE_INPUT],
128 farmer_field_wh1_done[FARMER_WAREHOUSE_OUTPUT],
129 farmer_field_wh2_done[FARMER_WAREHOUSE_OUTPUT],
130 farmer_field_wh3_done[FARMER_WAREHOUSE_OUTPUT],
131 farmer_field_pickup,
132 Text3D:farmer_field_label3d,
133 farmer_field_gangzone,
134 farmer_field_objects[FARMER_FIELD_OBJECTS],
135 bool:farmer_field_changed
136}
137
138enum FARMER_enumStore {
139 farmer_store_name[32],
140 Float:farmer_store_x,
141 Float:farmer_store_y,
142 Float:farmer_store_z,
143 farmer_store_accept[5],
144 farmer_store_amount[5],
145 farmer_store_price[5],
146 farmer_store_pickup,
147 Text3D:farmer_store_label3d,
148 bool:farmer_store_changed
149}
150
151new FARMER_fieldTimer, FARMER_saveTimer, FARMER_productionTimer, FARMER_currentHour;
152new FARMER_fieldList[FARMER_FIELD_AMOUNT][FARMER_enumField], FARMER_warehouseList[FARMER_WAREHOUSE_AMOUNT][FARMER_enumWarehouse], FARMER_playerList[MAX_PLAYERS][FARMER_enumPlayer], FARMER_storeList[FARMER_STORE_AMOUNT][FARMER_enumStore];
153
154/*
155 * ========================================================
156 * FORWARDS
157 * ========================================================
158*/
159
160forward FARMER_LoadWarehouseCallback(warehouseid, Float:x, Float:y, Float:z);
161forward FARMER_LoadFieldCallback(fieldid, minx, miny, maxx, maxy, Float:midx, Float:midy, Float:midz, quality);
162forward FARMER_LoadStoreCallback(storeid, name[32], Float:x, Float:y, Float:z, accept[5]);
163forward FARMER_FillWarehouse(playerid, max);
164forward FARMER_DestroyPlayerObjects(playerid);
165forward FARMER_FieldTimer();
166forward FARMER_SaveTimer();
167forward FARMER_ProductionTimer();
168
169forward FARMER_OnFilterScriptInit();
170forward FARMER_OnFilterScriptExit();
171forward FARMER_OnPlayerConnect(playerid);
172forward FARMER_OnPlayerDisconnect(playerid, reason);
173forward FARMER_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
174forward FARMER_OnVehicleDeath(vehicleid, killerid);
175forward FARMER_OnPlayerCheckpoint(playerid);
176
177/*
178 * ========================================================
179 * FUNCTIONS
180 * ========================================================
181*/
182
183FARMER_InitSQL() {
184
185 mysql_query(handle, "CREATE TABLE IF NOT EXISTS farmer_warehouses(id INT PRIMARY KEY, x FLOAT, y FLOAT, z FLOAT, owner VARCHAR(24), amount INT, money INT, purchase INT, price INT)", false);
186 mysql_query(handle, "CREATE TABLE IF NOT EXISTS farmer_fields(id INT PRIMARY KEY, minx INT, miny INT, maxx INT, maxy INT, midx FLOAT, midy FLOAT, midz FLOAT, owner VARCHAR(24), money INT, quality INT, state INT, seed INT, time INT, harvest_left INT, harvest_price LONGTEXT, sell_price LONGTEXT, fertilized BOOLEAN, harvestable BOOLEAN, prod LONGTEXT, wh_ready LONGTEXT, wh_done LONGTEXT)", false);
187 mysql_query(handle, "CREATE TABLE IF NOT EXISTS farmer_stores(id INT PRIMARY KEY, name VARCHAR(32), x FLOAT, y FLOAT, z FLOAT, accept VARCHAR(100), amount VARCHAR(100))");
188}
189
190FARMER_InitWarehouses() {
191
192 FARMER_LoadWarehouse(0, 1938.9655, 168.2423, 37.2752);
193 FARMER_LoadWarehouse(1, -156.1172, -289.6461, 3.9053);
194 FARMER_LoadWarehouse(2, -64.1066, -1120.9031, 1.0781);
195
196}
197
198FARMER_InitFields() {
199
200 FARMER_LoadField(0, -1881, -2661, -1769, -2620, -1818.3265, -2636.4038, 55.0854, FARMER_QUALITY_LOW);
201 FARMER_LoadField(1, -1194, -1069, -1008, -911, -1098.4128, -996.8738, 129.2188, FARMER_QUALITY_RARE);
202 FARMER_LoadField(2, -1156, -1257, -1062, -1145, -1116.2284, -1209.0652, 129.2188, FARMER_QUALITY_MEDIUM);
203 FARMER_LoadField(3, -588, -1403, -360, -1285, -459.1371, -1340.7061, 29.8254, FARMER_QUALITY_RARE);
204 FARMER_LoadField(4, -330, -1421, -162, -1309, -226.6910, -1369.5966, 8.0394, FARMER_QUALITY_HIGH);
205 FARMER_LoadField(5, -340, -1557, -220, -1463, -274.8835, -1512.9742, 5.1411, FARMER_QUALITY_HIGH);
206 FARMER_LoadField(6, -700, -685, -596, -631, -647.3006, -662.0098, 41.0418, FARMER_QUALITY_LOW);
207 FARMER_LoadField(7, -330, -985, -248, -909, -290.0308, -950.8212, 43.2995, FARMER_QUALITY_LOW);
208 FARMER_LoadField(8, -1254, -1461, -1138, -1367, -1202.0269, -1426.4172, 117.6877, FARMER_QUALITY_MEDIUM);
209 FARMER_LoadField(9, 902, 221, 1076, 327, 986.3124, 287.4386, 27.0235, FARMER_QUALITY_HIGH);
210 FARMER_LoadField(10, 1714, 303, 1872, 363, 1789.3790, 339.8018, 19.0061, FARMER_QUALITY_MEDIUM);
211 FARMER_LoadField(11, 1752, 199, 1880, 247, 1791.1466, 342.5998, 19.0271, FARMER_QUALITY_LOW);
212 FARMER_LoadField(12, 1900, 185, 2002, 247, 1950.1908, 204.5200, 31.3146, FARMER_QUALITY_MEDIUM);
213
214}
215
216FARMER_InitStores() {
217
218 FARMER_LoadStore(0, "Clucking Bell #1", 0.0, 0.0, 0.0, {0, 0, 0, 0, 0});
219
220}
221
222FARMER_LoadWarehouse(warehouseid, Float:x = 0.0, Float:y = 0.0, Float:z = 0.0) {
223
224 new query[128];
225 mysql_format(handle, query, sizeof(query),
226 "SELECT * FROM farmer_warehouses WHERE id = %i",
227 warehouseid);
228 mysql_tquery(handle, query, "FARMER_LoadWarehouseCallback", "ifff", warehouseid, x, y, z);
229
230}
231
232FARMER_SaveWarehouse(warehouseid, bool:async) {
233
234 new query[256];
235 mysql_format(handle, query, sizeof(query),
236 "UPDATE farmer_warehouses SET owner = '%s', amount = %i, money = %i, purchase = %i, price = %i WHERE id = %i",
237 FARMER_warehouseList[warehouseid][farmer_warehouse_owner], FARMER_warehouseList[warehouseid][farmer_warehouse_amount], FARMER_warehouseList[warehouseid][farmer_warehouse_money], FARMER_warehouseList[warehouseid][farmer_warehouse_purchase], FARMER_warehouseList[warehouseid][farmer_warehouse_price], warehouseid);
238
239 if(async) {
240 mysql_tquery(handle, query);
241 } else {
242 mysql_query(handle, query, false);
243 }
244}
245
246FARMER_DestroyWarehouse(warehouseid) {
247
248 DestroyPickup(FARMER_warehouseList[warehouseid][farmer_warehouse_pickup]);
249 Delete3DTextLabel(FARMER_warehouseList[warehouseid][farmer_warehouse_label3d]);
250
251}
252
253FARMER_UpdateWarehouseLabel(warehouseid) {
254
255 new text[512];
256 format(text, sizeof(text), "Lager #%i\nBesitzer: %s\nPreis pro Samen: %s$\nBezugspreis: %s$\n\n/buyseeds oder /deliverplants", warehouseid + 1, FARMER_warehouseList[warehouseid][farmer_warehouse_owner], FormatNumber(FARMER_warehouseList[warehouseid][farmer_warehouse_price]), FormatNumber(FARMER_warehouseList[warehouseid][farmer_warehouse_purchase]));
257 Update3DTextLabelText(FARMER_warehouseList[warehouseid][farmer_warehouse_label3d], HELP_COLOR_YELLOW, text);
258
259}
260
261FARMER_LoadField(fieldid, minx = 0, miny = 0, maxx = 0, maxy = 0, Float:midx = 0.0, Float:midy = 0.0, Float:midz = 0.0, quality = FARMER_QUALITY_LOW) {
262
263 new query[128];
264 mysql_format(handle, query, sizeof(query),
265 "SELECT * FROM farmer_fields WHERE id = %i",
266 fieldid);
267 mysql_tquery(handle, query, "FARMER_LoadFieldCallback", "iiiiifffi", fieldid, minx, miny, maxx, maxy, midx, midy, midz, quality);
268
269}
270
271FARMER_SaveField(fieldid, bool:async) {
272
273 new harvestPriceText[32], sellPriceText[32], prodText[32], readyText[32], doneText[32], query[1024];
274 format(harvestPriceText, sizeof(harvestPriceText), "%i %i %i %i", FARMER_fieldList[fieldid][farmer_field_harvest_price][0], FARMER_fieldList[fieldid][farmer_field_harvest_price][1], FARMER_fieldList[fieldid][farmer_field_harvest_price][2], FARMER_fieldList[fieldid][farmer_field_harvest_price][3]);
275 format(sellPriceText, sizeof(sellPriceText), "%i %i %i %i %i", FARMER_fieldList[fieldid][farmer_field_sell_price][0], FARMER_fieldList[fieldid][farmer_field_sell_price][1], FARMER_fieldList[fieldid][farmer_field_sell_price][2], FARMER_fieldList[fieldid][farmer_field_sell_price][3], FARMER_fieldList[fieldid][farmer_field_sell_price][4]);
276 format(prodText, sizeof(prodText), "%i %i %i %i", FARMER_fieldList[fieldid][farmer_field_prod_wheat], FARMER_fieldList[fieldid][farmer_field_prod_tomato], FARMER_fieldList[fieldid][farmer_field_prod_cucumber], FARMER_fieldList[fieldid][farmer_field_prod_drugs]);
277 format(readyText, sizeof(readyText), "%i %i %i %i %i %i %i %i %i %i %i %i",
278 FARMER_fieldList[fieldid][farmer_field_wh1_ready][0], FARMER_fieldList[fieldid][farmer_field_wh1_ready][1], FARMER_fieldList[fieldid][farmer_field_wh1_ready][2], FARMER_fieldList[fieldid][farmer_field_wh1_ready][3],
279 FARMER_fieldList[fieldid][farmer_field_wh2_ready][0], FARMER_fieldList[fieldid][farmer_field_wh2_ready][1], FARMER_fieldList[fieldid][farmer_field_wh2_ready][2], FARMER_fieldList[fieldid][farmer_field_wh2_ready][3],
280 FARMER_fieldList[fieldid][farmer_field_wh3_ready][0], FARMER_fieldList[fieldid][farmer_field_wh3_ready][1], FARMER_fieldList[fieldid][farmer_field_wh3_ready][2], FARMER_fieldList[fieldid][farmer_field_wh3_ready][3]);
281 format(doneText, sizeof(doneText), "%i %i %i %i %i %i %i %i %i %i %i %i %i %i %i",
282 FARMER_fieldList[fieldid][farmer_field_wh1_done][0], FARMER_fieldList[fieldid][farmer_field_wh1_done][1], FARMER_fieldList[fieldid][farmer_field_wh1_done][2], FARMER_fieldList[fieldid][farmer_field_wh1_done][3], FARMER_fieldList[fieldid][farmer_field_wh1_done][4],
283 FARMER_fieldList[fieldid][farmer_field_wh2_done][0], FARMER_fieldList[fieldid][farmer_field_wh2_done][1], FARMER_fieldList[fieldid][farmer_field_wh2_done][2], FARMER_fieldList[fieldid][farmer_field_wh2_done][3], FARMER_fieldList[fieldid][farmer_field_wh2_done][4],
284 FARMER_fieldList[fieldid][farmer_field_wh3_done][0], FARMER_fieldList[fieldid][farmer_field_wh3_done][1], FARMER_fieldList[fieldid][farmer_field_wh3_done][2], FARMER_fieldList[fieldid][farmer_field_wh3_done][3], FARMER_fieldList[fieldid][farmer_field_wh3_done][4]);
285
286 mysql_format(handle, query, sizeof(query),
287 "UPDATE farmer_fields SET owner = '%s', money = %i, state = %i, seed = %i, time = %i, harvest_left = %i, harvest_price = '%s', sell_price = '%s', fertilized = %i, harvestable = %i, prod = '%s', wh_ready = '%s', wh_done = '%s' WHERE id = %i",
288 FARMER_fieldList[fieldid][farmer_field_owner], FARMER_fieldList[fieldid][farmer_field_money], FARMER_fieldList[fieldid][farmer_field_state], FARMER_fieldList[fieldid][farmer_field_seed], FARMER_fieldList[fieldid][farmer_field_time], FARMER_fieldList[fieldid][farmer_field_harvest_left], harvestPriceText, sellPriceText, FARMER_fieldList[fieldid][farmer_field_fertilized], FARMER_fieldList[fieldid][farmer_field_harvestable], prodText, readyText, doneText, fieldid);
289
290 if(async) {
291 mysql_tquery(handle, query);
292 } else {
293 mysql_query(handle, query, false);
294 }
295}
296
297FARMER_DestroyField(fieldid) {
298
299 DestroyPickup(FARMER_fieldList[fieldid][farmer_field_pickup]);
300 Delete3DTextLabel(FARMER_fieldList[fieldid][farmer_field_label3d]);
301 GangZoneDestroy(FARMER_fieldList[fieldid][farmer_field_gangzone]);
302
303 FARMER_DestroyFieldObjects(fieldid);
304
305}
306
307FARMER_UpdateFieldLabel(fieldid) {
308
309 new text[512];
310 format(text, sizeof(text), "Field #%i\nBesitzer: {66CC99}%s{D3D3D3}\nQualität: %s\n\nStatus: {66CC99}%s{D3D3D3}\nSamen: {66CC99}%s{D3D3D3}\nZeit: {66CC99}%s{D3D3D3}", fieldid + 1, FARMER_fieldList[fieldid][farmer_field_owner], FARMER_QualityToText(FARMER_fieldList[fieldid][farmer_field_quality]), FARMER_StateToText(FARMER_fieldList[fieldid][farmer_field_state]), FARMER_SeedToText(FARMER_fieldList[fieldid][farmer_field_seed]), FARMER_TimeToDate(FARMER_fieldList[fieldid][farmer_field_time]));
311 Update3DTextLabelText(FARMER_fieldList[fieldid][farmer_field_label3d], HELP_COLOR_LIGHTGRAY, text);
312
313}
314
315FARMER_LoadStore(storeid, name[32], Float:x = 0.0, Float:y = 0.0, Float:z = 0.0, accept[5]) {
316
317 new query[128];
318 mysql_format(handle, query, sizeof(query),
319 "SELECT * FROM farmer_stores WHERE id = %i",
320 storeid);
321 mysql_tquery(handle, query, "FAMER_LoadStoreCallback", "s[32]fffi[5]", name, x, y, z, accept);
322
323}
324
325FARMER_SaveStore(storeid, bool:async) {
326
327 new acceptText[32], amountText[32], query[256];
328 format(acceptText, sizeof(acceptText), FARMER_storeList[storeid][farmer_store_accept][0], FARMER_storeList[storeid][farmer_store_accept][1], FARMER_storeList[storeid][farmer_store_accept][2], FARMER_storeList[storeid][farmer_store_accept][3], FARMER_storeList[storeid][farmer_store_accept][4]);
329 format(amountText, sizeof(amountText), FARMER_storeList[storeid][farmer_store_amount][0], FARMER_storeList[storeid][farmer_store_amount][1], FARMER_storeList[storeid][farmer_store_amount][2], FARMER_storeList[storeid][farmer_store_amount][3], FARMER_storeList[storeid][farmer_store_amount][4]);
330
331 mysql_format(handle, query, sizeof(query),
332 "UPDATE farmer_stores SET accept = '%s' amount = '%s' WHERE id = %i", acceptText, amountText, storeid);
333
334 if(async) {
335 mysql_tquery(handle, query);
336 } else {
337 mysql_query(handle, query, false);
338 }
339}
340
341FARMER_DestroyStore(storeid) {
342
343 DestroyPickup(FARMER_storeList[storeid][farmer_store_pickup]);
344 Delete3DTextLabel(FARMER_storeList[storeid][farmer_store_label3d]);
345}
346
347FARMER_UpdateStoreLabel(storeid) {
348
349 new text[512];
350 format(text, sizeof(text), "%s\n\nWaren: %s / %s\nPreis: %s$", FARMER_storeList[storeid][farmer_store_name], FormatNumber(0), FormatNumber(FARMER_STORE_MAX), FormatNumber(0));
351 Update3DTextLabelText(FARMER_storeList[storeid][farmer_store_label3d], HELP_COLOR_YELLOW, text);
352
353}
354
355FARMER_UpdateGangZoneForPlayer(playerid) {
356 for(new i; i < FARMER_FIELD_AMOUNT; i++) {
357 if(FARMER_HasField(playerid, i)) {
358 GangZoneShowForPlayer(playerid, FARMER_fieldList[i][farmer_field_gangzone], 0xFFFF0066);
359 } else {
360 GangZoneHideForPlayer(playerid, FARMER_fieldList[i][farmer_field_gangzone]);
361 }
362 }
363}
364
365FARMER_CreateFieldObjects(fieldid) {
366 for(new i; i < FARMER_FIELD_OBJECTS; i++) {
367
368 new Float:x = random(FARMER_fieldList[fieldid][farmer_field_max_x] - FARMER_fieldList[fieldid][farmer_field_min_x]) + FARMER_fieldList[fieldid][farmer_field_min_x];
369 new Float:y = random(FARMER_fieldList[fieldid][farmer_field_max_y] - FARMER_fieldList[fieldid][farmer_field_min_y]) + FARMER_fieldList[fieldid][farmer_field_min_y];
370 new Float:z = FARMER_fieldList[fieldid][farmer_field_mid_z] - 0.1;
371
372 FARMER_fieldList[fieldid][farmer_field_objects][i] = CreateObject(874, x, y, z, 0.0, 0.0, 0.0);
373
374 }
375}
376
377FARMER_DestroyFieldObjects(fieldid) {
378 for(new i; i < FARMER_FIELD_OBJECTS; i++) {
379 DestroyObject(FARMER_fieldList[fieldid][farmer_field_objects][i]);
380 }
381}
382
383FARMER_InitPlayerEmpty(playerid) {
384
385 FARMER_playerList[playerid][farmer_player_state] = FARMER_PLAYER_NONE;
386 FARMER_playerList[playerid][farmer_player_field_id] = -1;
387 FARMER_playerList[playerid][farmer_player_vehicle_id] = INVALID_VEHICLE_ID;
388 FARMER_playerList[playerid][farmer_player_object_id] = INVALID_OBJECT_ID;
389 FARMER_playerList[playerid][farmer_player_fertilize_pickup] = -1;
390 FARMER_playerList[playerid][farmer_player_fertilize_left] = 0;
391 FARMER_playerList[playerid][farmer_player_change_prod_id] = -1;
392 FARMER_playerList[playerid][farmer_player_change_price_id] = -1;
393 FARMER_playerList[playerid][farmer_player_cp_x] = 0.0;
394 FARMER_playerList[playerid][farmer_player_cp_y] = 0.0;
395 FARMER_playerList[playerid][farmer_player_cp_z] = 0.0;
396 FARMER_playerList[playerid][farmer_player_harvest_price] = 0;
397 FARMER_playerList[playerid][farmer_player_harvest_seed] = FARMER_SEED_NONE;
398 for(new i; i < FARMER_HARVEST_SADLER; i++) {
399 FARMER_playerList[playerid][farmer_player_harvest_objects][i] = INVALID_OBJECT_ID;
400 }
401 FARMER_playerList[playerid][farmer_player_harvest_amount] = 0;
402 FARMER_playerList[playerid][farmer_player_harvest_pickup] = false;
403 FARMER_playerList[playerid][farmer_player_pickup_object] = INVALID_OBJECT_ID;
404
405}
406
407FARMER_GetWarehouseInRange(playerid) {
408 for(new i; i < FARMER_WAREHOUSE_AMOUNT; i++) {
409 if(IsPlayerInRangeOfPoint(playerid, 10, FARMER_warehouseList[i][farmer_warehouse_x], FARMER_warehouseList[i][farmer_warehouse_y], FARMER_warehouseList[i][farmer_warehouse_z])) {
410 return i;
411 }
412 }
413 return -1;
414}
415
416FARMER_GetFieldInRange(playerid) {
417 for(new i; i < FARMER_FIELD_AMOUNT; i++) {
418 if(IsPlayerInRangeOfPoint(playerid, 10, FARMER_fieldList[i][farmer_field_mid_x], FARMER_fieldList[i][farmer_field_mid_y], FARMER_fieldList[i][farmer_field_mid_z])) {
419 return i;
420 }
421 }
422 return -1;
423}
424
425FARMER_HasField(playerid, fieldid) {
426
427 new playerName[MAX_PLAYER_NAME];
428 GetPlayerName(playerid, playerName, sizeof(playerName));
429
430 if(strcmp(FARMER_fieldList[fieldid][farmer_field_owner], playerName) == 0) {
431 return 1;
432 }
433 return 0;
434}
435
436FARMER_HasAnyField(playerid) {
437
438 new playerName[MAX_PLAYER_NAME];
439 GetPlayerName(playerid, playerName, sizeof(playerName));
440
441 for(new i; i < FARMER_FIELD_AMOUNT; i++) {
442 if(strcmp(FARMER_fieldList[i][farmer_field_owner], playerName) == 0) {
443 return 1;
444 }
445 }
446 return 0;
447}
448
449FARMER_OpenProductionDialog(playerid, fieldid) {
450
451 new text[512];
452 format(text, sizeof(text), "Weizen: %s\nTomaten: %s\nGurken: %s\nDrogen: %s", FARMER_ProdTypeToText(FARMER_fieldList[fieldid][farmer_field_prod_wheat]), FARMER_ProdTypeToText(FARMER_fieldList[fieldid][farmer_field_prod_tomato]), FARMER_ProdTypeToText(FARMER_fieldList[fieldid][farmer_field_prod_cucumber]), FARMER_ProdTypeToText(FARMER_fieldList[fieldid][farmer_field_prod_drugs]));
453 ShowPlayerDialog(playerid, FARMER_DIALOG_PROD, DIALOG_STYLE_LIST, "Farmer: Produktion", text, "Ändern", "Abbrechen");
454
455}
456
457FARMER_OpenPriceDialog(playerid, fieldid) {
458
459 new text[1024];
460 format(text, sizeof(text), "{66CC99}Erntepreis:\n - Weizen [%s$]\n - Tomaten [%s$]\n - Gurken [%s$]\n - Drogen [%s$]\n{66CC99}Verkaufspreis:\n - Weizen [%s$]\n - Tomaten [%s$]\n - Gurken [%s$]\n - Drogen [%s$]\n - Benzin [%s$]", FormatNumber(FARMER_fieldList[fieldid][farmer_field_harvest_price][0]), FormatNumber(FARMER_fieldList[fieldid][farmer_field_harvest_price][1]), FormatNumber(FARMER_fieldList[fieldid][farmer_field_harvest_price][2]),
461 FormatNumber(FARMER_fieldList[fieldid][farmer_field_harvest_price][3]), FormatNumber(FARMER_fieldList[fieldid][farmer_field_sell_price][0]), FormatNumber(FARMER_fieldList[fieldid][farmer_field_sell_price][1]), FormatNumber(FARMER_fieldList[fieldid][farmer_field_sell_price][2]), FormatNumber(FARMER_fieldList[fieldid][farmer_field_sell_price][3]), FormatNumber(FARMER_fieldList[fieldid][farmer_field_sell_price][4]));
462 ShowPlayerDialog(playerid, FARMER_DIALOG_PRICE, DIALOG_STYLE_LIST, "Farmer: Preise", text, "Ändern", "Abbrechen");
463
464}
465
466FARMER_FertilizeSetCheckpoint(playerid) {
467 if(FARMER_playerList[playerid][farmer_player_state] != FARMER_PLAYER_FERTILIZE) {
468 return;
469 }
470
471 new minx = FARMER_fieldList[FARMER_playerList[playerid][farmer_player_field_id]][farmer_field_min_x], miny = FARMER_fieldList[FARMER_playerList[playerid][farmer_player_field_id]][farmer_field_min_y], maxx = FARMER_fieldList[FARMER_playerList[playerid][farmer_player_field_id]][farmer_field_max_x], maxy = FARMER_fieldList[FARMER_playerList[playerid][farmer_player_field_id]][farmer_field_max_y];
472 new randomx = random(maxx - minx) + minx, randomy = random(maxy - miny) + miny, randomz = random(100) + floatround(FARMER_fieldList[FARMER_playerList[playerid][farmer_player_field_id]][farmer_field_mid_z]) + 10;
473
474 FARMER_playerList[playerid][farmer_player_cp_x] = randomx;
475 FARMER_playerList[playerid][farmer_player_cp_y] = randomy;
476 FARMER_playerList[playerid][farmer_player_cp_z] = randomz;
477
478 SetPlayerCheckpoint(playerid, randomx, randomy, randomz, 5);
479
480 if(FARMER_playerList[playerid][farmer_player_fertilize_pickup] == -1) {
481 FARMER_playerList[playerid][farmer_player_fertilize_pickup] = CreatePickup(19605, 1, randomx, randomy, randomz);
482 }
483}
484
485FARMER_HarvestSetCheckpoint(playerid) {
486 if(FARMER_playerList[playerid][farmer_player_state] != FARMER_PLAYER_HARVEST) {
487 return;
488 }
489
490 new minx = FARMER_fieldList[FARMER_playerList[playerid][farmer_player_field_id]][farmer_field_min_x], miny = FARMER_fieldList[FARMER_playerList[playerid][farmer_player_field_id]][farmer_field_min_y], maxx = FARMER_fieldList[FARMER_playerList[playerid][farmer_player_field_id]][farmer_field_max_x], maxy = FARMER_fieldList[FARMER_playerList[playerid][farmer_player_field_id]][farmer_field_max_y];
491 new randomx = random(maxx - minx) + minx, randomy = random(maxy - miny) + miny, Float:randomz = FARMER_fieldList[FARMER_playerList[playerid][farmer_player_field_id]][farmer_field_mid_z];
492
493 FARMER_playerList[playerid][farmer_player_cp_x] = randomx;
494 FARMER_playerList[playerid][farmer_player_cp_y] = randomy;
495 FARMER_playerList[playerid][farmer_player_cp_z] = randomz;
496
497 SetPlayerCheckpoint(playerid, randomx, randomy, randomz, 5);
498
499}
500
501FARMER_WarehouseSetCheckpoint(playerid) {
502
503 new warehouseid, distance = 999999;
504 for(new i; i < FARMER_WAREHOUSE_AMOUNT; i++) {
505 if(FARMER_GetDistanceToWarehouse(playerid, i) < distance) {
506 warehouseid = i;
507 distance = FARMER_GetDistanceToWarehouse(playerid, i);
508 }
509 }
510 SetPlayerCheckpoint(playerid, FARMER_warehouseList[warehouseid][farmer_warehouse_x], FARMER_warehouseList[warehouseid][farmer_warehouse_y], FARMER_warehouseList[warehouseid][farmer_warehouse_z], 3);
511}
512
513FARMER_GetDistanceToWarehouse(playerid, warehouseid) {
514
515 new Float:x, Float:y, Float:z;
516 GetPlayerPos(playerid, x, y, z);
517
518 return floatround(floatsqroot(((x - FARMER_warehouseList[warehouseid][farmer_warehouse_x]) * (x - FARMER_warehouseList[warehouseid][farmer_warehouse_x])) + (( y - FARMER_warehouseList[warehouseid][farmer_warehouse_y]) * ( y - FARMER_warehouseList[warehouseid][farmer_warehouse_y])) + ((z - FARMER_warehouseList[warehouseid][farmer_warehouse_z]) * (z - FARMER_warehouseList[warehouseid][farmer_warehouse_z]))));
519}
520
521FARMER_FlyThroughPickup(playerid) {
522 if(FARMER_playerList[playerid][farmer_player_state] != FARMER_PLAYER_FERTILIZE) {
523 return;
524 }
525 if(!IsPlayerInRangeOfPoint(playerid, 10, FARMER_playerList[playerid][farmer_player_cp_x], FARMER_playerList[playerid][farmer_player_cp_y], FARMER_playerList[playerid][farmer_player_cp_z])) {
526 return;
527 }
528 if(!IsPlayerInAnyVehicle(playerid) || GetPlayerState(playerid) != PLAYER_STATE_DRIVER || GetPlayerVehicleID(playerid) != FARMER_playerList[playerid][farmer_player_vehicle_id]) {
529 return;
530 }
531
532 DestroyPickup(FARMER_playerList[playerid][farmer_player_fertilize_pickup]);
533 FARMER_playerList[playerid][farmer_player_fertilize_pickup] = -1;
534
535 if(FARMER_playerList[playerid][farmer_player_fertilize_left] > 1) {
536
537 FARMER_playerList[playerid][farmer_player_fertilize_left] = FARMER_playerList[playerid][farmer_player_fertilize_left] - 1;
538 FARMER_FertilizeSetCheckpoint(playerid);
539
540 new text[128];
541 format(text, sizeof(text), "Du hast Dünger auf deinem Feld verteilt! Übrig: %i", FARMER_playerList[playerid][farmer_player_fertilize_left]);
542 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
543
544 } else {
545
546 FARMER_playerList[playerid][farmer_player_state] = FARMER_PLAYER_NONE;
547 FARMER_fieldList[FARMER_playerList[playerid][farmer_player_field_id]][farmer_field_fertilized] = true;
548 FARMER_fieldList[FARMER_playerList[playerid][farmer_player_field_id]][farmer_field_changed] = true;
549
550 SendClientMessage(playerid, HELP_COLOR_GREEN, "Du hast dein Feld erfolgreich gedüngt! Du erhälst nun bei der Ernte mehr Ertrag!");
551
552 }
553}
554
555FARMER_DriveThroughCheckpoint(playerid) {
556 if(FARMER_playerList[playerid][farmer_player_state] != FARMER_PLAYER_HARVEST) {
557 return 1;
558 }
559 if(!IsPlayerInRangeOfPoint(playerid, 10, FARMER_playerList[playerid][farmer_player_cp_x], FARMER_playerList[playerid][farmer_player_cp_y], FARMER_playerList[playerid][farmer_player_cp_z])) {
560 return 1;
561 }
562 if(!IsPlayerInAnyVehicle(playerid) || GetPlayerState(playerid) != PLAYER_STATE_DRIVER || GetPlayerVehicleID(playerid) != FARMER_playerList[playerid][farmer_player_vehicle_id]) {
563 return 1;
564 }
565
566 new fieldid = FARMER_playerList[playerid][farmer_player_field_id], harvestLeft = FARMER_fieldList[fieldid][farmer_field_harvest_left];
567 if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 532) {
568 if(harvestLeft > 1) {
569
570 FARMER_playerList[playerid][farmer_player_harvest_amount] = FARMER_playerList[playerid][farmer_player_harvest_amount] + 1;
571 FARMER_fieldList[fieldid][farmer_field_harvest_left] = harvestLeft - 1;
572
573 new text[128];
574 format(text, sizeof(text), "Du hast einen Teil des Feldes abgeerntet! Übrig: %i", FARMER_fieldList[fieldid][farmer_field_harvest_left]);
575 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
576
577 FARMER_HarvestSetCheckpoint(playerid);
578
579 } else {
580 if(harvestLeft == 1) {
581
582 FARMER_playerList[playerid][farmer_player_harvest_amount] = FARMER_playerList[playerid][farmer_player_harvest_amount] + 1;
583 FARMER_fieldList[fieldid][farmer_field_harvest_left] = harvestLeft - 1;
584
585 FARMER_fieldList[fieldid][farmer_field_state] = FARMER_STATE_EMPTY;
586 FARMER_fieldList[fieldid][farmer_field_seed] = FARMER_SEED_NONE;
587 FARMER_fieldList[fieldid][farmer_field_time] = 0;
588 FARMER_fieldList[fieldid][farmer_field_changed] = true;
589
590 FARMER_UpdateFieldLabel(fieldid);
591
592 }
593 if(FARMER_playerList[playerid][farmer_player_harvest_amount] > 0) {
594
595 SendClientMessage(playerid, HELP_COLOR_GREEN, "Das Feld ist nun komplett abgeerntet! Fahre deine Ladung zum nächstes Lager!");
596 FARMER_WarehouseSetCheckpoint(playerid);
597
598 } else {
599
600 SendClientMessage(playerid, HELP_COLOR_GREEN, "Das Feld ist bereits komplett abgeerntet!");
601 FARMER_playerList[playerid][farmer_player_state] = FARMER_PLAYER_NONE;
602 DisablePlayerCheckpoint(playerid);
603
604 }
605 }
606 } else if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 543) {
607 if(FARMER_playerList[playerid][farmer_player_harvest_amount] >= FARMER_HARVEST_SADLER) {
608 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Dein Sadler ist bereits voll! Leere ihn an einem Lager!");
609 }
610 if(harvestLeft > 0) {
611 SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Steige aus und gebe \"/storeplant\" ein!");
612 } else {
613 if(FARMER_playerList[playerid][farmer_player_harvest_amount] > 0) {
614
615 SendClientMessage(playerid, HELP_COLOR_GREEN, "Das Feld ist bereits komplett abgeerntet! Fahre deine Ladung zum nächsten Lager!");
616 FARMER_WarehouseSetCheckpoint(playerid);
617
618 } else {
619
620 SendClientMessage(playerid, HELP_COLOR_GREEN, "Das Feld ist bereits komplett abgeerntet!");
621 FARMER_playerList[playerid][farmer_player_state] = FARMER_PLAYER_NONE;
622 DisablePlayerCheckpoint(playerid);
623
624 }
625 }
626 }
627 return 1;
628}
629
630FARMER_SpawnSadlerObject(playerid) {
631
632 new vehicleid = FARMER_playerList[playerid][farmer_player_vehicle_id], amount = FARMER_playerList[playerid][farmer_player_harvest_amount], box = CreateObject(2912, 0, 0, -1000, 0, 0, 0, 100);
633 FARMER_playerList[playerid][farmer_player_harvest_objects][amount - 1] = box;
634
635 switch(amount) {
636 case 1: AttachObjectToVehicle(box, vehicleid, -0.370000, -0.940000, -0.195000, 0.000000, 0.000000, 0.000000);
637 case 2: AttachObjectToVehicle(box, vehicleid, 0.370000, -0.940000, -0.195000, 0.000000, 0.000000, 0.000000);
638 case 3: AttachObjectToVehicle(box, vehicleid, -0.370000, -1.690000, -0.195000, 0.000000, 0.000000, 0.000000);
639 case 4: AttachObjectToVehicle(box, vehicleid, 0.370000, -1.690000, -0.195000, 0.000000, 0.000000, 0.000000);
640 case 5: AttachObjectToVehicle(box, vehicleid, 0.024999, -0.954999, 0.514999, 0.000000, 0.000000, 0.000000);
641 case 6: AttachObjectToVehicle(box, vehicleid, 0.024999, -1.705000, 0.514999, 0.000000, 0.000000, 0.000000);
642 }
643}
644
645FARMER_DestroySadlerObjects(playerid) {
646 for(new i; i < FARMER_playerList[playerid][farmer_player_harvest_amount]; i++) {
647 DestroyObject(FARMER_playerList[playerid][farmer_player_harvest_objects][i]);
648 }
649}
650
651FARMER_StateToText(stateid) {
652
653 new text[64];
654 format(text, sizeof(text), "Leer");
655
656 switch(stateid) {
657 case 1: format(text, sizeof(text), "Wächst");
658 case 2: format(text, sizeof(text), "Fertig");
659 case 3: format(text, sizeof(text), "Verdorben");
660 case 4: format(text, sizeof(text), "Am Ernten");
661 }
662 return text;
663}
664
665FARMER_SeedToText(seedid) {
666
667 new text[64];
668 format(text, sizeof(text), "Keine");
669
670 switch(seedid) {
671 case 0: format(text, sizeof(text), "Weizen");
672 case 1: format(text, sizeof(text), "Tomaten");
673 case 2: format(text, sizeof(text), "Gurken");
674 case 3: format(text, sizeof(text), "Drogen");
675 }
676 return text;
677}
678
679FARMER_QualityToText(quality) {
680
681 new text[64];
682 format(text, sizeof(text), "Fehler");
683
684 switch(quality) {
685 case 1: format(text, sizeof(text), "{FF0000}Schlecht{D3D3D3}");
686 case 2: format(text, sizeof(text), "{FFFF00}Gut{D3D3D3}");
687 case 3: format(text, sizeof(text), "{0D7520}Perfekt{D3D3D3}");
688 case 4: format(text, sizeof(text), "{0069FF}Überragend{D3D3D3}");
689 }
690 return text;
691}
692
693FARMER_ProdTypeToText(type) {
694
695 new text[64];
696 format(text, sizeof(text), "Fehler");
697
698 switch(type) {
699 case 0: format(text, sizeof(text), "Normal");
700 case 1: format(text, sizeof(text), "Benzin");
701 }
702 return text;
703}
704
705FARMER_FertilizeToText(bool:fertilized) {
706
707 new text[64];
708 format(text, sizeof(text), "{FF0000}Nein{D3D3D3}");
709
710 if(fertilized) {
711 format(text, sizeof(text), "{00FF00}Ja{D3D3D3}");
712 }
713 return text;
714}
715
716FARMER_TimeToDate(timestamp) {
717
718 new time[64], hoursString[16], minutesString[16], hours = timestamp / 60, minutes = timestamp % 60;
719 format(hoursString, sizeof(hoursString), "%i", hours);
720 format(minutesString, sizeof(minutesString), "%i", minutes);
721
722 if(hours < 10) {
723 format(hoursString, sizeof(hoursString), "0%i", hours);
724 }
725 if(minutes < 10) {
726 format(minutesString, sizeof(minutesString), "0%i", minutes);
727 }
728
729 format(time, sizeof(time), "%sh %sm", hoursString, minutesString);
730 return time;
731}
732
733FARMER_Log(message[]) {
734
735 new entry[1024];
736 new year, month, date, hour, minute, second;
737
738 getdate(year, month, date);
739 gettime(hour, minute, second);
740
741 format(entry, sizeof(entry), "[%02d.%02d.%d %02d:%02d:%02d] %s\n", date, month, year, hour, minute, second, message);
742
743 new File:hFile;
744 hFile = fopen("farmer.log", io_append);
745
746 fwrite(hFile, entry);
747 fclose(hFile);
748
749}
750
751/*
752 * ========================================================
753 * PUBLICS
754 * ========================================================
755*/
756
757public FARMER_LoadWarehouseCallback(warehouseid, Float:x, Float:y, Float:z) {
758 if(cache_num_rows() == 0) {
759
760 new query[256];
761 mysql_format(handle, query, sizeof(query),
762 "INSERT INTO farmer_warehouses(id, x, y, z, owner, amount, money, purchase, price) VALUES (%i, %f, %f, %f, '-', %i, 0, 100, %i)",
763 warehouseid, x, y, z, FARMER_WAREHOUSE_MAX, FARMER_WAREHOUSE_PRICE_MIN);
764 mysql_query(handle, query, false);
765
766 FARMER_warehouseList[warehouseid][farmer_warehouse_x] = x;
767 FARMER_warehouseList[warehouseid][farmer_warehouse_y] = y;
768 FARMER_warehouseList[warehouseid][farmer_warehouse_z] = z;
769 format(FARMER_warehouseList[warehouseid][farmer_warehouse_owner], MAX_PLAYER_NAME, "-");
770 FARMER_warehouseList[warehouseid][farmer_warehouse_amount] = FARMER_WAREHOUSE_MAX;
771 FARMER_warehouseList[warehouseid][farmer_warehouse_money] = 0;
772 FARMER_warehouseList[warehouseid][farmer_warehouse_purchase] = 100;
773 FARMER_warehouseList[warehouseid][farmer_warehouse_price] = FARMER_WAREHOUSE_PRICE_MIN;
774
775 } else {
776
777 new i, Float:f, name[MAX_PLAYER_NAME];
778
779 cache_get_value_name_float(0, "x", f);
780 FARMER_warehouseList[warehouseid][farmer_warehouse_x] = f;
781
782 cache_get_value_name_float(0, "y", f);
783 FARMER_warehouseList[warehouseid][farmer_warehouse_y] = f;
784
785 cache_get_value_name_float(0, "z", f);
786 FARMER_warehouseList[warehouseid][farmer_warehouse_z] = f;
787
788 cache_get_value_name(0, "owner", name);
789 format(FARMER_warehouseList[warehouseid][farmer_warehouse_owner], MAX_PLAYER_NAME, "%s", name);
790
791 printf("%s x %s", name, FARMER_warehouseList[warehouseid][farmer_warehouse_owner]);
792
793 cache_get_value_name_int(0, "amount", i);
794 FARMER_warehouseList[warehouseid][farmer_warehouse_amount] = i;
795
796 cache_get_value_name_int(0, "money", i);
797 FARMER_warehouseList[warehouseid][farmer_warehouse_money] = i;
798
799 cache_get_value_name_int(0, "purchase", i);
800 FARMER_warehouseList[warehouseid][farmer_warehouse_purchase] = i;
801
802 cache_get_value_name_int(0, "price", i);
803 FARMER_warehouseList[warehouseid][farmer_warehouse_price] = i;
804
805 }
806
807 FARMER_warehouseList[warehouseid][farmer_warehouse_pickup] = CreatePickup(19523, 1, FARMER_warehouseList[warehouseid][farmer_warehouse_x], FARMER_warehouseList[warehouseid][farmer_warehouse_y], FARMER_warehouseList[warehouseid][farmer_warehouse_z]);
808 FARMER_warehouseList[warehouseid][farmer_warehouse_label3d] = Create3DTextLabel("-", HELP_COLOR_YELLOW, FARMER_warehouseList[warehouseid][farmer_warehouse_x], FARMER_warehouseList[warehouseid][farmer_warehouse_y], FARMER_warehouseList[warehouseid][farmer_warehouse_z], 20, 0);
809
810 FARMER_UpdateWarehouseLabel(warehouseid);
811
812}
813
814public FARMER_LoadFieldCallback(fieldid, minx, miny, maxx, maxy, Float:midx, Float:midy, Float:midz, quality) {
815 if(cache_num_rows() == 0) {
816
817 new query[512];
818 mysql_format(handle, query, sizeof(query),
819 "INSERT INTO farmer_fields(id, minx, miny, maxx, maxy, midx, midy, midz, owner, money, quality, state, seed, time, harvest_left, harvest_price, sell_price, fertilized, harvestable, prod, wh_ready, wh_done) VALUES (%i, %i, %i, %i, %i, %f, %f, %f, '-', 0, %i, %i, %i, 0, 0, '0 0 0 0', '0 0 0 0 0', 0, 0, '0 0 0 0', '0 0 0 0 0 0 0 0 0 0 0 0', '0 0 0 0 0 0 0 0 0 0 0 0 0 0 0')",
820 fieldid, minx, miny, maxx, maxy, midx, midy, midz, quality, FARMER_STATE_EMPTY, FARMER_SEED_NONE);
821 mysql_tquery(handle, query);
822
823 FARMER_fieldList[fieldid][farmer_field_min_x] = minx;
824 FARMER_fieldList[fieldid][farmer_field_min_y] = miny;
825 FARMER_fieldList[fieldid][farmer_field_max_x] = maxx;
826 FARMER_fieldList[fieldid][farmer_field_max_y] = maxy;
827 FARMER_fieldList[fieldid][farmer_field_mid_x] = midx;
828 FARMER_fieldList[fieldid][farmer_field_mid_y] = midy;
829 FARMER_fieldList[fieldid][farmer_field_mid_z] = midz;
830 format(FARMER_fieldList[fieldid][farmer_field_owner], MAX_PLAYER_NAME, "-");
831 FARMER_fieldList[fieldid][farmer_field_money] = 0;
832 FARMER_fieldList[fieldid][farmer_field_quality] = quality;
833 FARMER_fieldList[fieldid][farmer_field_state] = FARMER_STATE_EMPTY;
834 FARMER_fieldList[fieldid][farmer_field_seed] = FARMER_SEED_NONE;
835 FARMER_fieldList[fieldid][farmer_field_time] = 0;
836 FARMER_fieldList[fieldid][farmer_field_harvest_left] = 0;
837 for(new i; i < FARMER_WAREHOUSE_INPUT; i++) {
838 FARMER_fieldList[fieldid][farmer_field_harvest_price][i] = 0;
839 }
840 for(new i; i < FARMER_WAREHOUSE_OUTPUT; i++) {
841 FARMER_fieldList[fieldid][farmer_field_sell_price][i] = 0;
842 }
843 FARMER_fieldList[fieldid][farmer_field_fertilized] = false;
844 FARMER_fieldList[fieldid][farmer_field_harvestable] = false;
845 FARMER_fieldList[fieldid][farmer_field_prod_wheat] = 0;
846 FARMER_fieldList[fieldid][farmer_field_prod_tomato] = 0;
847 FARMER_fieldList[fieldid][farmer_field_prod_cucumber] = 0;
848 FARMER_fieldList[fieldid][farmer_field_prod_drugs] = 0;
849 for(new i; i < FARMER_WAREHOUSE_INPUT; i++) {
850 FARMER_fieldList[fieldid][farmer_field_wh1_ready][i] = 0;
851 }
852 for(new i; i < FARMER_WAREHOUSE_OUTPUT; i++) {
853 FARMER_fieldList[fieldid][farmer_field_wh1_done][i] = 0;
854 }
855 for(new i; i < FARMER_WAREHOUSE_INPUT; i++) {
856 FARMER_fieldList[fieldid][farmer_field_wh2_ready][i] = 0;
857 }
858 for(new i; i < FARMER_WAREHOUSE_OUTPUT; i++) {
859 FARMER_fieldList[fieldid][farmer_field_wh2_done][i] = 0;
860 }
861 for(new i; i < FARMER_WAREHOUSE_INPUT; i++) {
862 FARMER_fieldList[fieldid][farmer_field_wh3_ready][i] = 0;
863
864 }
865 for(new i; i < FARMER_WAREHOUSE_OUTPUT; i++) {
866 FARMER_fieldList[fieldid][farmer_field_wh3_done][i] = 0;
867 }
868 } else {
869
870 new i, Float:f, name[MAX_PLAYER_NAME], text[32], bool:b;
871
872 cache_get_value_name_int(0, "minx", i);
873 FARMER_fieldList[fieldid][farmer_field_min_x] = i;
874
875 cache_get_value_name_int(0, "miny", i);
876 FARMER_fieldList[fieldid][farmer_field_min_y] = i;
877
878 cache_get_value_name_int(0, "maxx", i);
879 FARMER_fieldList[fieldid][farmer_field_max_x] = i;
880
881 cache_get_value_name_int(0, "maxy", i);
882 FARMER_fieldList[fieldid][farmer_field_max_y] = i;
883
884 cache_get_value_name_float(0, "midx", f);
885 FARMER_fieldList[fieldid][farmer_field_mid_x] = f;
886
887 cache_get_value_name_float(0, "midy", f);
888 FARMER_fieldList[fieldid][farmer_field_mid_y] = f;
889
890 cache_get_value_name_float(0, "midz", f);
891 FARMER_fieldList[fieldid][farmer_field_mid_z] = f;
892
893 cache_get_value_name(0, "owner", name);
894 if(name[0] != 0) {
895
896 format(FARMER_fieldList[fieldid][farmer_field_owner], MAX_PLAYER_NAME, "%s", name);
897
898 } else {
899
900 format(FARMER_fieldList[fieldid][farmer_field_owner], MAX_PLAYER_NAME, "-");
901 FARMER_fieldList[fieldid][farmer_field_changed] = true;
902
903 new log[128];
904 format(log, sizeof(log), "[MYSQL] Feld #%i: Fehler beim Laden des Besitzers! Ersetze mit leerem Besitzer!", fieldid + 1);
905 FARMER_Log(log);
906
907 }
908
909 cache_get_value_name_int(0, "money", i);
910 FARMER_fieldList[fieldid][farmer_field_money] = i;
911
912 cache_get_value_name_int(0, "quality", i);
913 FARMER_fieldList[fieldid][farmer_field_quality] = i;
914
915 cache_get_value_name_int(0, "state", i);
916 FARMER_fieldList[fieldid][farmer_field_state] = i;
917
918 cache_get_value_name_int(0, "seed", i);
919 FARMER_fieldList[fieldid][farmer_field_seed] = i;
920
921 cache_get_value_name_int(0, "time", i);
922 FARMER_fieldList[fieldid][farmer_field_time] = i;
923
924 cache_get_value_name_int(0, "harvest_left", i);
925 FARMER_fieldList[fieldid][farmer_field_harvest_left] = i;
926
927 cache_get_value_name(0, "harvest_price", text);
928 sscanf(text, "iiii", FARMER_fieldList[fieldid][farmer_field_harvest_price][0], FARMER_fieldList[fieldid][farmer_field_harvest_price][1], FARMER_fieldList[fieldid][farmer_field_harvest_price][2], FARMER_fieldList[fieldid][farmer_field_harvest_price][3]);
929
930 cache_get_value_name(0, "sell_price", text);
931 sscanf(text, "iiiii", FARMER_fieldList[fieldid][farmer_field_sell_price][0], FARMER_fieldList[fieldid][farmer_field_sell_price][1], FARMER_fieldList[fieldid][farmer_field_sell_price][2], FARMER_fieldList[fieldid][farmer_field_sell_price][3], FARMER_fieldList[fieldid][farmer_field_sell_price][4]);
932
933 cache_get_value_name_bool(0, "fertilized", b);
934 FARMER_fieldList[fieldid][farmer_field_fertilized] = b;
935
936 cache_get_value_name_bool(0, "harvestable", b);
937 FARMER_fieldList[fieldid][farmer_field_harvestable] = b;
938
939 cache_get_value_name(0, "prod", text);
940 sscanf(text, "iiii", FARMER_fieldList[fieldid][farmer_field_prod_wheat], FARMER_fieldList[fieldid][farmer_field_prod_tomato], FARMER_fieldList[fieldid][farmer_field_prod_cucumber], FARMER_fieldList[fieldid][farmer_field_prod_drugs]);
941
942 cache_get_value_name(0, "wh_ready", text);
943 sscanf(text, "iiiiiiiiiiii",
944 FARMER_fieldList[fieldid][farmer_field_wh1_ready][0], FARMER_fieldList[fieldid][farmer_field_wh1_ready][1], FARMER_fieldList[fieldid][farmer_field_wh1_ready][2], FARMER_fieldList[fieldid][farmer_field_wh1_ready][3],
945 FARMER_fieldList[fieldid][farmer_field_wh2_ready][0], FARMER_fieldList[fieldid][farmer_field_wh2_ready][1], FARMER_fieldList[fieldid][farmer_field_wh2_ready][2], FARMER_fieldList[fieldid][farmer_field_wh2_ready][3],
946 FARMER_fieldList[fieldid][farmer_field_wh3_ready][0], FARMER_fieldList[fieldid][farmer_field_wh3_ready][1], FARMER_fieldList[fieldid][farmer_field_wh3_ready][2], FARMER_fieldList[fieldid][farmer_field_wh3_ready][3]);
947
948 cache_get_value_name(0, "wh_done", text);
949 sscanf(text, "iiiiiiiiiiiiiii",
950 FARMER_fieldList[fieldid][farmer_field_wh1_done][0], FARMER_fieldList[fieldid][farmer_field_wh1_done][1], FARMER_fieldList[fieldid][farmer_field_wh1_done][2], FARMER_fieldList[fieldid][farmer_field_wh1_done][3], FARMER_fieldList[fieldid][farmer_field_wh1_done][4],
951 FARMER_fieldList[fieldid][farmer_field_wh2_done][0], FARMER_fieldList[fieldid][farmer_field_wh2_done][1], FARMER_fieldList[fieldid][farmer_field_wh2_done][2], FARMER_fieldList[fieldid][farmer_field_wh2_done][3], FARMER_fieldList[fieldid][farmer_field_wh2_done][4],
952 FARMER_fieldList[fieldid][farmer_field_wh3_done][0], FARMER_fieldList[fieldid][farmer_field_wh3_done][1], FARMER_fieldList[fieldid][farmer_field_wh3_done][2], FARMER_fieldList[fieldid][farmer_field_wh3_done][3], FARMER_fieldList[fieldid][farmer_field_wh3_done][4]);
953
954 }
955
956 FARMER_fieldList[fieldid][farmer_field_pickup] = CreatePickup(1650, 1, FARMER_fieldList[fieldid][farmer_field_mid_x], FARMER_fieldList[fieldid][farmer_field_mid_y], FARMER_fieldList[fieldid][farmer_field_mid_z]);
957 FARMER_fieldList[fieldid][farmer_field_label3d] = Create3DTextLabel("-", HELP_COLOR_LIGHTRED, FARMER_fieldList[fieldid][farmer_field_mid_x], FARMER_fieldList[fieldid][farmer_field_mid_y], FARMER_fieldList[fieldid][farmer_field_mid_z], 20, 0);
958 FARMER_fieldList[fieldid][farmer_field_gangzone] = GangZoneCreate(FARMER_fieldList[fieldid][farmer_field_min_x], FARMER_fieldList[fieldid][farmer_field_min_y], FARMER_fieldList[fieldid][farmer_field_max_x], FARMER_fieldList[fieldid][farmer_field_max_y]);
959
960 GangZoneShowForAll(FARMER_fieldList[fieldid][farmer_field_gangzone], 0xFF0000FF);
961 FARMER_UpdateFieldLabel(fieldid);
962
963 if(FARMER_fieldList[fieldid][farmer_field_state] != FARMER_STATE_EMPTY) {
964 FARMER_CreateFieldObjects(fieldid);
965 }
966}
967
968public FARMER_LoadStoreCallback(storeid, name[32], Float:x, Float:y, Float:z, accept[5]) {
969 if(cache_num_rows() == 0) {
970
971 new query[512];
972 mysql_format(handle, query, sizeof(query),
973 "INSERT INTO farmer_stores(id, name, x, y, z, amount) VALUES (%i, %s, %f, %f, %f, 0)",
974 storeid, name, x, y, z);
975 mysql_tquery(handle, query);
976
977 format(FARMER_storeList[storeid][farmer_store_name], 32, "%s", name);
978 FARMER_storeList[storeid][farmer_store_x] = x;
979 FARMER_storeList[storeid][farmer_store_y] = y;
980 FARMER_storeList[storeid][farmer_store_z] = z;
981 for(new i; i < 5; i++) {
982 FARMER_storeList[storeid][farmer_store_accept][i] = 0;
983 }
984 for(new i; i < 5; i++) {
985 FARMER_storeList[storeid][farmer_store_amount][i] = 0;
986 }
987
988 } else {
989
990 new Float:f, string[32];
991
992 cache_get_value_name(0, "name", string);
993 format(FARMER_storeList[storeid][farmer_store_name], 32, "%s", string);
994
995 cache_get_value_name_float(0, "x", f);
996 FARMER_storeList[storeid][farmer_store_x] = f;
997
998 cache_get_value_name_float(0, "y", f);
999 FARMER_storeList[storeid][farmer_store_y] = f;
1000
1001 cache_get_value_name_float(0, "z", f);
1002 FARMER_storeList[storeid][farmer_store_z] = f;
1003
1004 cache_get_value_name(0, "accept", string);
1005 sscanf(string, "iiiii", FARMER_storeList[storeid][farmer_store_accept][0], FARMER_storeList[storeid][farmer_store_accept][1], FARMER_storeList[storeid][farmer_store_accept][2], FARMER_storeList[storeid][farmer_store_accept][3], FARMER_storeList[storeid][farmer_store_accept][4]);
1006
1007 cache_get_value_name(0, "amount", string);
1008 sscanf(string, "iiiii", FARMER_storeList[storeid][farmer_store_amount][0], FARMER_storeList[storeid][farmer_store_amount][1], FARMER_storeList[storeid][farmer_store_amount][2], FARMER_storeList[storeid][farmer_store_amount][3], FARMER_storeList[storeid][farmer_store_amount][4]);
1009
1010 }
1011
1012 FARMER_storeList[storeid][farmer_store_pickup] = CreatePickup(19522, 1, FARMER_storeList[storeid][farmer_store_x], FARMER_storeList[storeid][farmer_store_y], FARMER_storeList[storeid][farmer_store_z]);
1013 FARMER_storeList[storeid][farmer_store_label3d] = Create3DTextLabel("-", HELP_COLOR_YELLOW, FARMER_storeList[storeid][farmer_store_x], FARMER_storeList[storeid][farmer_store_y], FARMER_storeList[storeid][farmer_store_z], 20, 0);
1014
1015 FARMER_UpdateStoreLabel(storeid);
1016
1017}
1018
1019public FARMER_FillWarehouse(playerid, max) {
1020
1021 new warehouseid = FARMER_GetWarehouseInRange(playerid);
1022 if(warehouseid == -1) {
1023 return -1;
1024 }
1025
1026 new difference = FARMER_WAREHOUSE_MAX - FARMER_warehouseList[warehouseid][farmer_warehouse_amount], possible = FARMER_warehouseList[warehouseid][farmer_warehouse_money] / FARMER_warehouseList[warehouseid][farmer_warehouse_purchase];
1027 if(difference > possible) {
1028 difference = possible;
1029 }
1030 if(difference > max) {
1031 difference = max;
1032 }
1033
1034 RemoteGivePlayerMoney(playerid, difference * FARMER_warehouseList[warehouseid][farmer_warehouse_purchase]);
1035
1036 FARMER_warehouseList[warehouseid][farmer_warehouse_amount] = FARMER_warehouseList[warehouseid][farmer_warehouse_amount] + difference;
1037
1038 FARMER_SaveWarehouse(warehouseid, true);
1039 FARMER_UpdateWarehouseLabel(warehouseid);
1040
1041 return difference;
1042}
1043
1044public FARMER_DestroyPlayerObjects(playerid) {
1045 if(FARMER_playerList[playerid][farmer_player_state] == FARMER_PLAYER_BUY) {
1046 DestroyObject(FARMER_playerList[playerid][farmer_player_object_id]);
1047 } else if(FARMER_playerList[playerid][farmer_player_state] == FARMER_PLAYER_HARVEST) {
1048 FARMER_DestroySadlerObjects(playerid);
1049 }
1050}
1051
1052public FARMER_FieldTimer() {
1053 for(new i; i < FARMER_FIELD_AMOUNT; i++) {
1054 if(FARMER_fieldList[i][farmer_field_state] == FARMER_STATE_GROWING) {
1055 if(FARMER_fieldList[i][farmer_field_time] != 0) {
1056
1057 FARMER_fieldList[i][farmer_field_time] = FARMER_fieldList[i][farmer_field_time] - 1;
1058 FARMER_fieldList[i][farmer_field_changed] = true;
1059
1060 FARMER_UpdateFieldLabel(i);
1061
1062 } else {
1063
1064 FARMER_fieldList[i][farmer_field_state] = FARMER_STATE_READY;
1065 FARMER_fieldList[i][farmer_field_time] = 60;
1066 FARMER_fieldList[i][farmer_field_changed] = true;
1067
1068 FARMER_UpdateFieldLabel(i);
1069
1070 }
1071 } else if(FARMER_fieldList[i][farmer_field_state] == FARMER_STATE_READY) {
1072 if(FARMER_fieldList[i][farmer_field_time] != 0) {
1073
1074 FARMER_fieldList[i][farmer_field_time] = FARMER_fieldList[i][farmer_field_time] - 1;
1075 FARMER_fieldList[i][farmer_field_changed] = true;
1076
1077 FARMER_UpdateFieldLabel(i);
1078
1079 } else {
1080
1081 FARMER_fieldList[i][farmer_field_state] = FARMER_STATE_DUE;
1082 FARMER_fieldList[i][farmer_field_time] = 0;
1083 FARMER_fieldList[i][farmer_field_changed] = true;
1084
1085 FARMER_UpdateFieldLabel(i);
1086
1087 }
1088 } else if(FARMER_fieldList[i][farmer_field_state] == FARMER_STATE_HARVESTING) {
1089 if(FARMER_fieldList[i][farmer_field_time] != 0) {
1090
1091 FARMER_fieldList[i][farmer_field_time] = FARMER_fieldList[i][farmer_field_time] - 1;
1092 FARMER_fieldList[i][farmer_field_changed] = true;
1093
1094 FARMER_UpdateFieldLabel(i);
1095
1096 } else {
1097
1098 FARMER_fieldList[i][farmer_field_state] = FARMER_STATE_EMPTY;
1099 FARMER_fieldList[i][farmer_field_seed] = FARMER_SEED_NONE;
1100 FARMER_fieldList[i][farmer_field_time] = 0;
1101 FARMER_fieldList[i][farmer_field_harvest_left] = 0;
1102 FARMER_fieldList[i][farmer_field_changed] = true;
1103
1104 FARMER_UpdateFieldLabel(i);
1105
1106 }
1107 }
1108 }
1109}
1110
1111public FARMER_SaveTimer() {
1112 for(new i; i < FARMER_FIELD_AMOUNT; i++) {
1113 if(FARMER_fieldList[i][farmer_field_changed]) {
1114 FARMER_SaveField(i, true);
1115 }
1116 }
1117 for(new i; i < FARMER_STORE_AMOUNT; i++) {
1118 if(FARMER_storeList[i][farmer_store_changed]) {
1119 FARMER_SaveStore(i, true);
1120 }
1121 }
1122}
1123
1124public FARMER_ProductionTimer() {
1125
1126 new hour; gettime(hour);
1127 if(hour != FARMER_currentHour) {
1128
1129 FARMER_currentHour = hour;
1130 for(new i; i < FARMER_FIELD_AMOUNT; i++) {
1131
1132 new wheatDone, tomatoDone, cucumberDone, drugsDone, oilDone;
1133 new wheatReady1 = FARMER_fieldList[i][farmer_field_wh1_ready][0], tomatoReady1 = FARMER_fieldList[i][farmer_field_wh1_ready][1], cucumberReady1 = FARMER_fieldList[i][farmer_field_wh1_ready][2], drugsReady1 = FARMER_fieldList[i][farmer_field_wh1_ready][3];
1134 new wheatReady2 = FARMER_fieldList[i][farmer_field_wh2_ready][0], tomatoReady2 = FARMER_fieldList[i][farmer_field_wh2_ready][1], cucumberReady2 = FARMER_fieldList[i][farmer_field_wh2_ready][2], drugsReady2 = FARMER_fieldList[i][farmer_field_wh2_ready][3];
1135 new wheatReady3 = FARMER_fieldList[i][farmer_field_wh3_ready][0], tomatoReady3 = FARMER_fieldList[i][farmer_field_wh3_ready][1], cucumberReady3 = FARMER_fieldList[i][farmer_field_wh3_ready][2], drugsReady3 = FARMER_fieldList[i][farmer_field_wh3_ready][3];
1136
1137 if(wheatReady1 >= FARMER_READY_AMOUNT) {
1138 wheatReady1 = FARMER_READY_AMOUNT;
1139 }
1140 if(wheatReady2 >= FARMER_READY_AMOUNT) {
1141 wheatReady2 = FARMER_READY_AMOUNT;
1142 }
1143 if(wheatReady3 >= FARMER_READY_AMOUNT) {
1144 wheatReady3 = FARMER_READY_AMOUNT;
1145 }
1146 if(tomatoReady1 >= FARMER_READY_AMOUNT) {
1147 tomatoReady1 = FARMER_READY_AMOUNT;
1148 }
1149 if(tomatoReady2 >= FARMER_READY_AMOUNT) {
1150 tomatoReady2 = FARMER_READY_AMOUNT;
1151 }
1152 if(tomatoReady3 >= FARMER_READY_AMOUNT) {
1153 tomatoReady3 = FARMER_READY_AMOUNT;
1154 }
1155 if(cucumberReady1 >= FARMER_READY_AMOUNT) {
1156 cucumberReady1 = FARMER_READY_AMOUNT;
1157 }
1158 if(cucumberReady2 >= FARMER_READY_AMOUNT) {
1159 cucumberReady2 = FARMER_READY_AMOUNT;
1160 }
1161 if(cucumberReady3 >= FARMER_READY_AMOUNT) {
1162 cucumberReady3 = FARMER_READY_AMOUNT;
1163 }
1164 if(drugsReady1 >= FARMER_READY_AMOUNT) {
1165 drugsReady1 = FARMER_READY_AMOUNT;
1166 }
1167 if(drugsReady2 >= FARMER_READY_AMOUNT) {
1168 drugsReady2 = FARMER_READY_AMOUNT;
1169 }
1170 if(drugsReady3 >= FARMER_READY_AMOUNT) {
1171 drugsReady3 = FARMER_READY_AMOUNT;
1172 }
1173 if(FARMER_fieldList[i][farmer_field_prod_wheat] == 0) {
1174
1175 wheatDone = wheatDone + wheatReady1 + wheatReady2 + wheatReady3;
1176
1177 FARMER_fieldList[i][farmer_field_wh1_ready][0] = FARMER_fieldList[i][farmer_field_wh1_ready][0] - wheatReady1;
1178 FARMER_fieldList[i][farmer_field_wh1_done][0] = FARMER_fieldList[i][farmer_field_wh1_done][0] + wheatReady1;
1179
1180 FARMER_fieldList[i][farmer_field_wh2_ready][0] = FARMER_fieldList[i][farmer_field_wh2_ready][0] - wheatReady2;
1181 FARMER_fieldList[i][farmer_field_wh2_done][0] = FARMER_fieldList[i][farmer_field_wh2_done][0] + wheatReady2;
1182
1183 FARMER_fieldList[i][farmer_field_wh3_ready][0] = FARMER_fieldList[i][farmer_field_wh3_ready][0] - wheatReady3;
1184 FARMER_fieldList[i][farmer_field_wh3_done][0] = FARMER_fieldList[i][farmer_field_wh3_done][0] + wheatReady3;
1185
1186 FARMER_fieldList[i][farmer_field_changed] = true;
1187
1188 } else {
1189
1190 oilDone = wheatDone + wheatReady1 + wheatReady2 + wheatReady3;
1191
1192 FARMER_fieldList[i][farmer_field_wh1_ready][0] = FARMER_fieldList[i][farmer_field_wh1_ready][0] - wheatReady1;
1193 FARMER_fieldList[i][farmer_field_wh1_done][4] = FARMER_fieldList[i][farmer_field_wh1_done][4] + wheatReady1;
1194
1195 FARMER_fieldList[i][farmer_field_wh2_ready][0] = FARMER_fieldList[i][farmer_field_wh2_ready][0] - wheatReady2;
1196 FARMER_fieldList[i][farmer_field_wh2_done][4] = FARMER_fieldList[i][farmer_field_wh2_done][4] + wheatReady2;
1197
1198 FARMER_fieldList[i][farmer_field_wh3_ready][0] = FARMER_fieldList[i][farmer_field_wh3_ready][0] - wheatReady3;
1199 FARMER_fieldList[i][farmer_field_wh3_done][4] = FARMER_fieldList[i][farmer_field_wh3_done][4] + wheatReady3;
1200
1201 FARMER_fieldList[i][farmer_field_changed] = true;
1202
1203 }
1204 if(FARMER_fieldList[i][farmer_field_prod_tomato] == 0) {
1205
1206 tomatoDone = tomatoDone + tomatoReady1 + tomatoReady2 + tomatoReady3;
1207
1208 FARMER_fieldList[i][farmer_field_wh1_ready][1] = FARMER_fieldList[i][farmer_field_wh1_ready][1] - tomatoReady1;
1209 FARMER_fieldList[i][farmer_field_wh1_done][1] = FARMER_fieldList[i][farmer_field_wh1_done][1] + tomatoReady1;
1210
1211 FARMER_fieldList[i][farmer_field_wh2_ready][1] = FARMER_fieldList[i][farmer_field_wh2_ready][1] - tomatoReady2;
1212 FARMER_fieldList[i][farmer_field_wh2_done][1] = FARMER_fieldList[i][farmer_field_wh2_done][1] + tomatoReady2;
1213
1214 FARMER_fieldList[i][farmer_field_wh3_ready][1] = FARMER_fieldList[i][farmer_field_wh3_ready][1] - tomatoReady3;
1215 FARMER_fieldList[i][farmer_field_wh3_done][1] = FARMER_fieldList[i][farmer_field_wh3_done][1] + tomatoReady3;
1216
1217 FARMER_fieldList[i][farmer_field_changed] = true;
1218
1219 } else {
1220
1221 oilDone = tomatoDone + tomatoReady1 + tomatoReady2 + tomatoReady3;
1222
1223 FARMER_fieldList[i][farmer_field_wh1_ready][1] = FARMER_fieldList[i][farmer_field_wh1_ready][1] - tomatoReady1;
1224 FARMER_fieldList[i][farmer_field_wh1_done][4] = FARMER_fieldList[i][farmer_field_wh1_done][4] + tomatoReady1;
1225
1226 FARMER_fieldList[i][farmer_field_wh2_ready][1] = FARMER_fieldList[i][farmer_field_wh2_ready][1] - tomatoReady2;
1227 FARMER_fieldList[i][farmer_field_wh2_done][4] = FARMER_fieldList[i][farmer_field_wh2_done][4] + tomatoReady2;
1228
1229 FARMER_fieldList[i][farmer_field_wh3_ready][1] = FARMER_fieldList[i][farmer_field_wh3_ready][1] - tomatoReady3;
1230 FARMER_fieldList[i][farmer_field_wh3_done][4] = FARMER_fieldList[i][farmer_field_wh3_done][4] + tomatoReady3;
1231
1232 FARMER_fieldList[i][farmer_field_changed] = true;
1233
1234 }
1235 if(FARMER_fieldList[i][farmer_field_prod_cucumber] == 0) {
1236
1237 cucumberDone = cucumberDone + cucumberReady1 + cucumberReady2 + cucumberReady3;
1238
1239 FARMER_fieldList[i][farmer_field_wh1_ready][2] = FARMER_fieldList[i][farmer_field_wh1_ready][2] - cucumberReady1;
1240 FARMER_fieldList[i][farmer_field_wh1_done][2] = FARMER_fieldList[i][farmer_field_wh1_done][2] + cucumberReady1;
1241
1242 FARMER_fieldList[i][farmer_field_wh2_ready][2] = FARMER_fieldList[i][farmer_field_wh2_ready][2] - cucumberReady2;
1243 FARMER_fieldList[i][farmer_field_wh2_done][2] = FARMER_fieldList[i][farmer_field_wh2_done][2] + cucumberReady2;
1244
1245 FARMER_fieldList[i][farmer_field_wh3_ready][2] = FARMER_fieldList[i][farmer_field_wh3_ready][2] - cucumberReady3;
1246 FARMER_fieldList[i][farmer_field_wh3_done][2] = FARMER_fieldList[i][farmer_field_wh3_done][2] + cucumberReady3;
1247
1248 FARMER_fieldList[i][farmer_field_changed] = true;
1249
1250 } else {
1251
1252 oilDone = cucumberDone + cucumberReady1 + cucumberReady2 + cucumberReady3;
1253
1254 FARMER_fieldList[i][farmer_field_wh1_ready][2] = FARMER_fieldList[i][farmer_field_wh1_ready][2] - cucumberReady1;
1255 FARMER_fieldList[i][farmer_field_wh1_done][4] = FARMER_fieldList[i][farmer_field_wh1_done][4] + cucumberReady1;
1256
1257 FARMER_fieldList[i][farmer_field_wh2_ready][2] = FARMER_fieldList[i][farmer_field_wh2_ready][2] - cucumberReady2;
1258 FARMER_fieldList[i][farmer_field_wh2_done][4] = FARMER_fieldList[i][farmer_field_wh2_done][4] + cucumberReady2;
1259
1260 FARMER_fieldList[i][farmer_field_wh3_ready][2] = FARMER_fieldList[i][farmer_field_wh3_ready][2] - cucumberReady3;
1261 FARMER_fieldList[i][farmer_field_wh3_done][4] = FARMER_fieldList[i][farmer_field_wh3_done][4] + cucumberReady3;
1262
1263 FARMER_fieldList[i][farmer_field_changed] = true;
1264
1265
1266 }
1267 if(FARMER_fieldList[i][farmer_field_prod_drugs] == 0) {
1268
1269 drugsDone = drugsDone + drugsReady1 + drugsReady2 + drugsReady3;
1270
1271 FARMER_fieldList[i][farmer_field_wh1_ready][3] = FARMER_fieldList[i][farmer_field_wh1_ready][3] - drugsReady1;
1272 FARMER_fieldList[i][farmer_field_wh1_done][3] = FARMER_fieldList[i][farmer_field_wh1_done][3] + drugsReady1;
1273
1274 FARMER_fieldList[i][farmer_field_wh2_ready][3] = FARMER_fieldList[i][farmer_field_wh2_ready][3] - drugsReady2;
1275 FARMER_fieldList[i][farmer_field_wh2_done][3] = FARMER_fieldList[i][farmer_field_wh2_done][3] + drugsReady2;
1276
1277 FARMER_fieldList[i][farmer_field_wh3_ready][3] = FARMER_fieldList[i][farmer_field_wh3_ready][3] - drugsReady3;
1278 FARMER_fieldList[i][farmer_field_wh3_done][3] = FARMER_fieldList[i][farmer_field_wh3_done][3] + drugsReady3;
1279
1280 FARMER_fieldList[i][farmer_field_changed] = true;
1281
1282 } else {
1283
1284 oilDone = oilDone + drugsReady1 + drugsReady2 + drugsReady3;
1285
1286 FARMER_fieldList[i][farmer_field_wh1_ready][3] = FARMER_fieldList[i][farmer_field_wh1_ready][3] - drugsReady1;
1287 FARMER_fieldList[i][farmer_field_wh1_done][4] = FARMER_fieldList[i][farmer_field_wh1_done][4] + drugsReady1;
1288
1289 FARMER_fieldList[i][farmer_field_wh2_ready][3] = FARMER_fieldList[i][farmer_field_wh2_ready][3] - drugsReady2;
1290 FARMER_fieldList[i][farmer_field_wh2_done][4] = FARMER_fieldList[i][farmer_field_wh2_done][4] + drugsReady2;
1291
1292 FARMER_fieldList[i][farmer_field_wh3_ready][3] = FARMER_fieldList[i][farmer_field_wh3_ready][3] - drugsReady3;
1293 FARMER_fieldList[i][farmer_field_wh3_done][4] = FARMER_fieldList[i][farmer_field_wh3_done][4] + drugsReady3;
1294
1295 FARMER_fieldList[i][farmer_field_changed] = true;
1296
1297 }
1298
1299 for(new j; j < MAX_PLAYERS; j++) {
1300 if(IsPlayerConnected(j)) {
1301
1302 new playerName[MAX_PLAYER_NAME];
1303 GetPlayerName(j, playerName, sizeof(playerName));
1304
1305 if(strcmp(playerName, FARMER_fieldList[i][farmer_field_owner], true) == 0) {
1306
1307 new text[128];
1308 format(text, sizeof(text), "[Feld #%i] Weizen (%s), Tomaten (%s), Gurken (%s), Drogen (%s), Benzin (%s)", i + 1, FormatNumber(wheatDone), FormatNumber(tomatoDone), FormatNumber(cucumberDone), FormatNumber(drugsDone), FormatNumber(oilDone));
1309 SendClientMessage(j, HELP_COLOR_LIGHTBLUE, text);
1310
1311 }
1312 }
1313 }
1314 }
1315 }
1316}
1317
1318/*
1319 * ========================================================
1320 * EVENTS
1321 * ========================================================
1322*/
1323
1324public FARMER_OnFilterScriptInit() {
1325
1326 FARMER_InitSQL();
1327
1328 FARMER_InitWarehouses();
1329 FARMER_InitFields();
1330 FARMER_InitStores();
1331
1332 new hour; gettime(hour);
1333 FARMER_currentHour = hour;
1334
1335 FARMER_fieldTimer = SetTimer("FARMER_FieldTimer", 1000 * 60, true);
1336 FARMER_saveTimer = SetTimer("FARMER_SaveTimer", 1000 * 60 * 3, true);
1337 FARMER_productionTimer = SetTimer("FARMER_ProductionTimer", 1000 * 60 * 1, true);
1338
1339 for(new i; i < MAX_PLAYERS; i++) {
1340 if(IsPlayerConnected(i)) {
1341 FARMER_InitPlayerEmpty(i);
1342 FARMER_UpdateGangZoneForPlayer(i);
1343 }
1344 }
1345}
1346
1347public FARMER_OnFilterScriptExit() {
1348
1349 KillTimer(FARMER_fieldTimer);
1350 KillTimer(FARMER_saveTimer);
1351 KillTimer(FARMER_productionTimer);
1352
1353 for(new i; i < FARMER_WAREHOUSE_AMOUNT; i++) {
1354 FARMER_DestroyWarehouse(i);
1355 }
1356 for(new i; i < FARMER_FIELD_AMOUNT; i++) {
1357 FARMER_DestroyField(i);
1358 }
1359 for(new i; i < FARMER_STORE_AMOUNT; i++) {
1360 FARMER_DestroyStore(i);
1361 }
1362 for(new i; i < MAX_PLAYERS; i++) {
1363 if(IsPlayerConnected(i) && FARMER_playerList[i][farmer_player_state] == FARMER_PLAYER_FERTILIZE) {
1364 DestroyPickup(FARMER_playerList[i][farmer_player_fertilize_pickup]);
1365 }
1366 }
1367}
1368
1369public FARMER_OnPlayerConnect(playerid) {
1370
1371 FARMER_InitPlayerEmpty(playerid);
1372 FARMER_UpdateGangZoneForPlayer(playerid);
1373
1374}
1375
1376public FARMER_OnPlayerDisconnect(playerid, reason) {
1377 if(FARMER_playerList[playerid][farmer_player_state] == FARMER_PLAYER_FERTILIZE) {
1378 DestroyPickup(FARMER_playerList[playerid][farmer_player_fertilize_pickup]);
1379 }
1380
1381 FARMER_DestroyPlayerObjects(playerid);
1382 FARMER_InitPlayerEmpty(playerid);
1383
1384}
1385
1386public FARMER_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
1387 if(dialogid == FARMER_DIALOG_PLANT && response == 1) {
1388
1389 new fieldid = FARMER_GetFieldInRange(playerid);
1390 if(fieldid == -1 || !FARMER_HasField(playerid, fieldid)) {
1391 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht in der Nähe eines deiner Felder!");
1392 }
1393 if(FARMER_playerList[playerid][farmer_player_state] != FARMER_PLAYER_BUY) {
1394 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du hast derzeit keine Samen geladen!");
1395 }
1396 if(!IsPlayerInAnyVehicle(playerid) || GetPlayerVehicleID(playerid) != FARMER_playerList[playerid][farmer_player_vehicle_id]) {
1397 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht in dem Sadler den du beladen hast!");
1398 }
1399 if(FARMER_fieldList[fieldid][farmer_field_state] != FARMER_STATE_EMPTY) {
1400 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Dieses Feld ist nicht leer!");
1401 }
1402
1403 FARMER_playerList[playerid][farmer_player_state] = FARMER_PLAYER_NONE;
1404 FARMER_playerList[playerid][farmer_player_vehicle_id] = INVALID_VEHICLE_ID;
1405
1406 DestroyObject(FARMER_playerList[playerid][farmer_player_object_id]);
1407
1408 FARMER_fieldList[fieldid][farmer_field_seed] = listitem;
1409 FARMER_fieldList[fieldid][farmer_field_state] = FARMER_STATE_GROWING;
1410 FARMER_fieldList[fieldid][farmer_field_time] = FARMER_FIELD_GROW_TIME;
1411 FARMER_fieldList[fieldid][farmer_field_changed] = true;
1412
1413 FARMER_UpdateFieldLabel(fieldid);
1414 FARMER_CreateFieldObjects(fieldid);
1415
1416 SendClientMessage(playerid, HELP_COLOR_GREEN, "Du hast das Feld bepflanzt! Warte ab bis die Samen gewachsen sind und dünge das Feld.");
1417
1418 } else if(dialogid == FARMER_DIALOG_FIELDS && response == 1) {
1419 if(!FARMER_HasAnyField(playerid)) {
1420 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du besitzt keine Felder!");
1421 }
1422
1423 new count;
1424 for(new i; i < FARMER_FIELD_AMOUNT; i++) {
1425 if(FARMER_HasField(playerid, i)) {
1426 if(count == listitem) {
1427 break;
1428 }
1429 count++;
1430 }
1431 }
1432
1433 SetPlayerCheckpoint(playerid, FARMER_fieldList[count][farmer_field_mid_x], FARMER_fieldList[count][farmer_field_mid_y], FARMER_fieldList[count][farmer_field_mid_z], 3);
1434 SendClientMessage(playerid, HELP_COLOR_GREEN, "Dein Feld wurde auf der Karte markiert!");
1435
1436 } else if(dialogid == FARMER_DIALOG_PROD && response == 1) {
1437
1438 new fieldid = FARMER_playerList[playerid][farmer_player_change_prod_id];
1439 if(!FARMER_HasField(playerid, fieldid)) {
1440 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du besitzt dieses Feld nicht!");
1441 }
1442 switch(listitem) {
1443 case 0: FARMER_fieldList[fieldid][farmer_field_prod_wheat] = (FARMER_fieldList[fieldid][farmer_field_prod_wheat] + 1) % 2;
1444 case 1: FARMER_fieldList[fieldid][farmer_field_prod_tomato] = (FARMER_fieldList[fieldid][farmer_field_prod_tomato] + 1) % 2;
1445 case 2: FARMER_fieldList[fieldid][farmer_field_prod_cucumber] = (FARMER_fieldList[fieldid][farmer_field_prod_cucumber] + 1) % 2;
1446 case 3: FARMER_fieldList[fieldid][farmer_field_prod_drugs] = (FARMER_fieldList[fieldid][farmer_field_prod_drugs] + 1) % 2;
1447 }
1448
1449 FARMER_OpenProductionDialog(playerid, fieldid);
1450 FARMER_fieldList[fieldid][farmer_field_changed] = true;
1451
1452 } else if(dialogid == FARMER_DIALOG_PRICE && response == 1) {
1453
1454 new fieldid = FARMER_playerList[playerid][farmer_player_change_price_id];
1455 if(!FARMER_HasField(playerid, fieldid)) {
1456 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du besitzt dieses Feld nicht!");
1457 }
1458 switch(listitem) {
1459 case 1: ShowPlayerDialog(playerid, FARMER_DIALOG_CHANGE_H_W, DIALOG_STYLE_INPUT, "Farmer: Anpassen", "Setze hier nun deinen neuen Erntepreis für Weizen fest:", "Ändern", "Abbrechen");
1460 case 2: ShowPlayerDialog(playerid, FARMER_DIALOG_CHANGE_H_T, DIALOG_STYLE_INPUT, "Farmer: Anpassen", "Setze hier nun deinen neuen Erntepreis für Tomaten fest:", "Ändern", "Abbrechen");
1461 case 3: ShowPlayerDialog(playerid, FARMER_DIALOG_CHANGE_H_C, DIALOG_STYLE_INPUT, "Farmer: Anpassen", "Setze hier nun deinen neuen Erntepreis für Gurken fest:", "Ändern", "Abbrechen");
1462 case 4: ShowPlayerDialog(playerid, FARMER_DIALOG_CHANGE_H_D, DIALOG_STYLE_INPUT, "Farmer: Anpassen", "Setze hier nun deinen neuen Erntepreis für Drogen fest:", "Ändern", "Abbrechen");
1463 case 6: ShowPlayerDialog(playerid, FARMER_DIALOG_CHANGE_S_W, DIALOG_STYLE_INPUT, "Farmer: Anpassen", "Setze hier nun deinen neuen Verkaufspreis für Weizen fest:", "Ändern", "Abbrechen");
1464 case 7: ShowPlayerDialog(playerid, FARMER_DIALOG_CHANGE_S_T, DIALOG_STYLE_INPUT, "Farmer: Anpassen", "Setze hier nun deinen neuen Verkaufspreis für Tomaten fest:", "Ändern", "Abbrechen");
1465 case 8: ShowPlayerDialog(playerid, FARMER_DIALOG_CHANGE_S_C, DIALOG_STYLE_INPUT, "Farmer: Anpassen", "Setze hier nun deinen neuen Verkaufspreis für Gurken fest:", "Ändern", "Abbrechen");
1466 case 9: ShowPlayerDialog(playerid, FARMER_DIALOG_CHANGE_S_D, DIALOG_STYLE_INPUT, "Farmer: Anpassen", "Setze hier nun deinen neuen Verkaufspreis für Drogen fest:", "Ändern", "Abbrechen");
1467 case 10: ShowPlayerDialog(playerid, FARMER_DIALOG_CHANGE_S_O, DIALOG_STYLE_INPUT, "Farmer: Anpassen", "Setze hier nun deinen neuen Verkaufspreis für Benzin fest:", "Ändern", "Abbrechen");
1468 }
1469 } else if(dialogid == FARMER_DIALOG_CHANGE_H_W && response == 1) {
1470
1471 new text[128], fieldid = FARMER_playerList[playerid][farmer_player_change_price_id], price = strval(inputtext);
1472 if(!FARMER_HasField(playerid, fieldid)) {
1473 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du besitzt dieses Feld nicht!");
1474 }
1475 if(price < 0 || price > 1000) {
1476 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Der Preis muss größer als 0$ und kleiner als 1.000$ sein!");
1477 }
1478
1479 FARMER_fieldList[fieldid][farmer_field_harvest_price][0] = price;
1480 FARMER_fieldList[fieldid][farmer_field_changed] = true;
1481
1482 format(text, sizeof(text), "Erntepreis von Weizen auf %s$ gesetzt!", FormatNumber(price));
1483 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
1484
1485 } else if(dialogid == FARMER_DIALOG_CHANGE_H_T && response == 1) {
1486
1487 new text[128], fieldid = FARMER_playerList[playerid][farmer_player_change_price_id], price = strval(inputtext);
1488 if(!FARMER_HasField(playerid, fieldid)) {
1489 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du besitzt dieses Feld nicht!");
1490 }
1491 if(price < 0 || price > 1000) {
1492 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Der Preis muss größer als 0$ und kleiner als 1.000$ sein!");
1493 }
1494
1495 FARMER_fieldList[fieldid][farmer_field_harvest_price][1] = price;
1496 FARMER_fieldList[fieldid][farmer_field_changed] = true;
1497
1498 format(text, sizeof(text), "Erntepreis von Tomaten auf %s$ gesetzt!", FormatNumber(price));
1499 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
1500
1501 } else if(dialogid == FARMER_DIALOG_CHANGE_H_C && response == 1) {
1502
1503 new text[128], fieldid = FARMER_playerList[playerid][farmer_player_change_price_id], price = strval(inputtext);
1504 if(!FARMER_HasField(playerid, fieldid)) {
1505 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du besitzt dieses Feld nicht!");
1506 }
1507 if(price < 0 || price > 1000) {
1508 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Der Preis muss größer als 0$ und kleiner als 1.000$ sein!");
1509 }
1510
1511 FARMER_fieldList[fieldid][farmer_field_harvest_price][2] = price;
1512 FARMER_fieldList[fieldid][farmer_field_changed] = true;
1513
1514 format(text, sizeof(text), "Erntepreis von Gurken auf %s$ gesetzt!", FormatNumber(price));
1515 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
1516
1517 } else if(dialogid == FARMER_DIALOG_CHANGE_H_D && response == 1) {
1518
1519 new text[128], fieldid = FARMER_playerList[playerid][farmer_player_change_price_id], price = strval(inputtext);
1520 if(!FARMER_HasField(playerid, fieldid)) {
1521 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du besitzt dieses Feld nicht!");
1522 }
1523 if(price < 0 || price > 1000) {
1524 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Der Preis muss größer als 0$ und kleiner als 1.000$ sein!");
1525 }
1526
1527 FARMER_fieldList[fieldid][farmer_field_harvest_price][3] = price;
1528 FARMER_fieldList[fieldid][farmer_field_changed] = true;
1529
1530 format(text, sizeof(text), "Erntepreis von Drogen auf %s$ gesetzt!", FormatNumber(price));
1531 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
1532
1533 } else if(dialogid == FARMER_DIALOG_CHANGE_S_W && response == 1) {
1534
1535 new text[128], fieldid = FARMER_playerList[playerid][farmer_player_change_price_id], price = strval(inputtext);
1536 if(!FARMER_HasField(playerid, fieldid)) {
1537 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du besitzt dieses Feld nicht!");
1538 }
1539 if(price < 0 || price > 1000) {
1540 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Der Preis muss größer als 0$ und kleiner als 1.000$ sein!");
1541 }
1542
1543 FARMER_fieldList[fieldid][farmer_field_sell_price][0] = price;
1544 FARMER_fieldList[fieldid][farmer_field_changed] = true;
1545
1546 format(text, sizeof(text), "Verkaufspreis von Weizen auf %s$ gesetzt!", FormatNumber(price));
1547 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
1548
1549 } else if(dialogid == FARMER_DIALOG_CHANGE_S_T && response == 1) {
1550
1551 new text[128], fieldid = FARMER_playerList[playerid][farmer_player_change_price_id], price = strval(inputtext);
1552 if(!FARMER_HasField(playerid, fieldid)) {
1553 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du besitzt dieses Feld nicht!");
1554 }
1555 if(price < 0 || price > 1000) {
1556 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Der Preis muss größer als 0$ und kleiner als 1.000$ sein!");
1557 }
1558
1559 FARMER_fieldList[fieldid][farmer_field_sell_price][1] = price;
1560 FARMER_fieldList[fieldid][farmer_field_changed] = true;
1561
1562 format(text, sizeof(text), "Verkaufspreis von Tomaten auf %s$ gesetzt!", FormatNumber(price));
1563 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
1564
1565 } else if(dialogid == FARMER_DIALOG_CHANGE_S_C && response == 1) {
1566
1567 new text[128], fieldid = FARMER_playerList[playerid][farmer_player_change_price_id], price = strval(inputtext);
1568 if(!FARMER_HasField(playerid, fieldid)) {
1569 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du besitzt dieses Feld nicht!");
1570 }
1571 if(price < 0 || price > 1000) {
1572 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Der Preis muss größer als 0$ und kleiner als 1.000$ sein!");
1573 }
1574
1575 FARMER_fieldList[fieldid][farmer_field_sell_price][2] = price;
1576 FARMER_fieldList[fieldid][farmer_field_changed] = true;
1577
1578 format(text, sizeof(text), "Verkaufspreis von Gurken auf %s$ gesetzt!", FormatNumber(price));
1579 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
1580
1581 } else if(dialogid == FARMER_DIALOG_CHANGE_S_D && response == 1) {
1582
1583 new text[128], fieldid = FARMER_playerList[playerid][farmer_player_change_price_id], price = strval(inputtext);
1584 if(!FARMER_HasField(playerid, fieldid)) {
1585 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du besitzt dieses Feld nicht!");
1586 }
1587 if(price < 0 || price > 1000) {
1588 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Der Preis muss größer als 0$ und kleiner als 1.000$ sein!");
1589 }
1590
1591 FARMER_fieldList[fieldid][farmer_field_sell_price][3] = price;
1592 FARMER_fieldList[fieldid][farmer_field_changed] = true;
1593
1594 format(text, sizeof(text), "Verkaufspreis von Drogen auf %s$ gesetzt!", FormatNumber(price));
1595 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
1596
1597 } else if(dialogid == FARMER_DIALOG_CHANGE_S_O && response == 1) {
1598
1599 new text[128], fieldid = FARMER_playerList[playerid][farmer_player_change_price_id], price = strval(inputtext);
1600 if(!FARMER_HasField(playerid, fieldid)) {
1601 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du besitzt dieses Feld nicht!");
1602 }
1603 if(price < 0 || price > 1000) {
1604 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Der Preis muss größer als 0$ und kleiner als 1.000$ sein!");
1605 }
1606
1607 FARMER_fieldList[fieldid][farmer_field_sell_price][4] = price;
1608 FARMER_fieldList[fieldid][farmer_field_changed] = true;
1609
1610 format(text, sizeof(text), "Verkaufspreis von Benzin auf %s$ gesetzt!", FormatNumber(price));
1611 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
1612
1613 }
1614 return 1;
1615}
1616
1617public FARMER_OnVehicleDeath(vehicleid, killerid) {
1618 for(new i; i < MAX_PLAYERS; i++) {
1619 if(IsPlayerConnected(i) && FARMER_playerList[i][farmer_player_state] == FARMER_PLAYER_BUY && FARMER_playerList[i][farmer_player_vehicle_id] == vehicleid) {
1620
1621 FARMER_playerList[i][farmer_player_state] = FARMER_PLAYER_NONE;
1622 FARMER_playerList[i][farmer_player_vehicle_id] = INVALID_VEHICLE_ID;
1623
1624 DestroyObject(FARMER_playerList[i][farmer_player_object_id]);
1625 SendClientMessage(i, HELP_COLOR_LIGHTRED, "Deine Ladung Samen wurde mit deinem Fahrzeug zerstört!");
1626
1627 } else if(IsPlayerConnected(i) && FARMER_playerList[i][farmer_player_state] == FARMER_PLAYER_HARVEST && FARMER_playerList[i][farmer_player_vehicle_id] == vehicleid) {
1628
1629 FARMER_playerList[i][farmer_player_state] = FARMER_PLAYER_NONE;
1630 FARMER_playerList[i][farmer_player_vehicle_id] = INVALID_VEHICLE_ID;
1631
1632 FARMER_DestroySadlerObjects(i);
1633 SendClientMessage(i, HELP_COLOR_LIGHTRED, "Deine Ladung wurde mit deinem Fahrzeug zerstört!");
1634
1635 }
1636 }
1637}
1638
1639public FARMER_OnPlayerCheckpoint(playerid) {
1640
1641 FARMER_DriveThroughCheckpoint(playerid);
1642 FARMER_FlyThroughPickup(playerid);
1643
1644}
1645
1646/*
1647 * ========================================================
1648 * COMMANDS
1649 * ========================================================
1650*/
1651
1652ocmd:buyseeds(playerid, params[]) {
1653 if(RemoteIsLoggedIn(playerid) == 0) {
1654 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht eingeloggt!");
1655 }
1656
1657 new warehouseid = FARMER_GetWarehouseInRange(playerid);
1658 if(warehouseid == -1) {
1659 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht in der Nähe eines Lagers!");
1660 }
1661 if(FARMER_warehouseList[warehouseid][farmer_warehouse_amount] < 1) {
1662 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Das Lager ist leer!");
1663 }
1664 if(GetPlayerMoney(playerid) < FARMER_warehouseList[warehouseid][farmer_warehouse_price]) {
1665 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du hast nicht genügend Geld bei dir!");
1666 }
1667 if(FARMER_playerList[playerid][farmer_player_state] != FARMER_PLAYER_NONE) {
1668 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du kannst im Moment keine Samen kaufen!");
1669 }
1670 if(!IsPlayerInAnyVehicle(playerid) || GetPlayerState(playerid) != PLAYER_STATE_DRIVER || GetVehicleModel(GetPlayerVehicleID(playerid)) != 543) {
1671 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du befindest dich in keinem Sadler!");
1672 }
1673 if(!FARMER_HasAnyField(playerid)) {
1674 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du besitzt kein Feld!");
1675 }
1676
1677 FARMER_playerList[playerid][farmer_player_state] = FARMER_PLAYER_BUY;
1678 FARMER_playerList[playerid][farmer_player_vehicle_id] = GetPlayerVehicleID(playerid);
1679
1680 FARMER_playerList[playerid][farmer_player_object_id] = CreateObject(1271, 0, 0, -1000, 0, 0, 0, 100);
1681 AttachObjectToVehicle(FARMER_playerList[playerid][farmer_player_object_id], GetPlayerVehicleID(playerid), 0.0, -1.575, 0.15, 0.0, 0.0, 0.0);
1682
1683 RemoteGivePlayerMoney(playerid, -FARMER_warehouseList[warehouseid][farmer_warehouse_price]);
1684 FARMER_warehouseList[warehouseid][farmer_warehouse_amount] = FARMER_warehouseList[warehouseid][farmer_warehouse_amount] - 1;
1685
1686 SendClientMessage(playerid, HELP_COLOR_GREEN, "Du hast dir eine Ladung Samen gekauft. Fahre nun zu einem deiner Felder und gebe \"/plant\" ein!");
1687
1688 FARMER_UpdateWarehouseLabel(warehouseid);
1689 FARMER_SaveWarehouse(warehouseid, true);
1690
1691 return 1;
1692}
1693
1694ocmd:plant(playerid, params[]) {
1695 if(RemoteIsLoggedIn(playerid) == 0) {
1696 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht eingeloggt!");
1697 }
1698
1699 new fieldid = FARMER_GetFieldInRange(playerid);
1700 if(fieldid == -1 || !FARMER_HasField(playerid, fieldid)) {
1701 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht in der Nähe eines deiner Felder!");
1702 }
1703 if(FARMER_playerList[playerid][farmer_player_state] != FARMER_PLAYER_BUY) {
1704 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du hast derzeit keine Samen geladen!");
1705 }
1706 if(!IsPlayerInAnyVehicle(playerid) || GetPlayerVehicleID(playerid) != FARMER_playerList[playerid][farmer_player_vehicle_id]) {
1707 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht in dem Sadler den du beladen hast!");
1708 }
1709
1710 ShowPlayerDialog(playerid, FARMER_DIALOG_PLANT, DIALOG_STYLE_LIST, "Farmer: Anpflanzen", "Weizen\nTomaten\nGurken\nDrogen", "Anpflanzen", "Abbrechen");
1711
1712 return 1;
1713}
1714
1715ocmd:fields(playerid, params[]) {
1716 if(RemoteIsLoggedIn(playerid) == 0) {
1717 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht eingeloggt!");
1718 }
1719
1720 new text[1024];
1721 if(FARMER_HasAnyField(playerid)) {
1722 for(new i; i < FARMER_FIELD_AMOUNT; i++) {
1723 if(FARMER_HasField(playerid, i)) {
1724 format(text, sizeof(text), "%s{D3D3D3}Feld #%i (Status: %s, Zeit: %s)\n", text, i + 1, FARMER_StateToText(FARMER_fieldList[i][farmer_field_state]), FARMER_TimeToDate(FARMER_fieldList[i][farmer_field_time]));
1725 }
1726 }
1727 } else {
1728 format(text, sizeof(text), "{FF0000}- Du besitzt keine Felder -");
1729 }
1730
1731 ShowPlayerDialog(playerid, FARMER_DIALOG_FIELDS, DIALOG_STYLE_LIST, "Farmer: Felder", text, "Finden", "Abbrechen");
1732
1733 return 1;
1734}
1735
1736ocmd:fieldinfo(playerid, params[]) {
1737 if(RemoteIsLoggedIn(playerid) == 0) {
1738 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht eingeloggt!");
1739 }
1740
1741 new fieldid;
1742 if(sscanf(params, "i", fieldid)) {
1743 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "/fieldinfo [Feld]");
1744 }
1745 if(fieldid <= 0 || fieldid > FARMER_FIELD_AMOUNT) {
1746 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Ungültiges Feld!");
1747 }
1748 if(!FARMER_HasField(playerid, fieldid - 1)) {
1749 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du besitzt dieses Feld nicht!");
1750 }
1751
1752 new text[128];
1753 format(text, sizeof(text), "============================ Feld #%i Informationen ============================", fieldid);
1754 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
1755
1756 format(text, sizeof(text), "Status: {66CC99}%s{D3D3D3}, Samen: {66CC99}%s{D3D3D3}, Zeit: {66CC99}%s{D3D3D3}, Gedüngt: %s", FARMER_StateToText(FARMER_fieldList[fieldid - 1][farmer_field_state]), FARMER_SeedToText(FARMER_fieldList[fieldid - 1][farmer_field_seed]), FARMER_TimeToDate(FARMER_fieldList[fieldid - 1][farmer_field_time]), FARMER_FertilizeToText(FARMER_fieldList[fieldid - 1][farmer_field_fertilized]));
1757 SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, text);
1758
1759 format(text, sizeof(text), "Produktion: Weizen (%s), Tomate (%s), Gurke (%s), Drogen (%s)", FARMER_ProdTypeToText(FARMER_fieldList[fieldid - 1][farmer_field_prod_wheat]), FARMER_ProdTypeToText(FARMER_fieldList[fieldid - 1][farmer_field_prod_tomato]), FARMER_ProdTypeToText(FARMER_fieldList[fieldid - 1][farmer_field_prod_cucumber]), FARMER_ProdTypeToText(FARMER_fieldList[fieldid - 1][farmer_field_prod_drugs]));
1760 SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, text);
1761
1762 format(text, sizeof(text), "Erntepreis: Weizen (%s$), Tomate (%s$), Gurke (%s$), Drogen (%s$)", FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_harvest_price][0]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_harvest_price][1]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_harvest_price][2]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_harvest_price][3]));
1763 SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, text);
1764
1765 format(text, sizeof(text), "Verkaufspreis: Weizen (%s$), Tomate (%s$), Gurke (%s$), Drogen (%s$), Benzin (%s$)", FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_sell_price][0]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_sell_price][1]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_sell_price][2]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_sell_price][3]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_sell_price][4]));
1766 SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, text);
1767
1768 SendClientMessage(playerid, HELP_COLOR_LIGHTBLUE, "Lager #1:");
1769
1770 format(text, sizeof(text), " In Verarbeitung: Weizen (%s), Tomate (%s), Gurke (%s), Drogen (%s)", FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh1_ready][0]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh1_ready][1]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh1_ready][2]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh1_ready][3]));
1771 SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, text);
1772
1773 format(text, sizeof(text), " Fertig: Weizen (%s), Tomate (%s), Gurke (%s), Drogen (%s), Benzin (%s)", FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh1_done][0]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh1_done][1]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh1_done][2]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh1_done][3]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh1_done][4]));
1774 SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, text);
1775
1776 SendClientMessage(playerid, HELP_COLOR_LIGHTBLUE, "Lager #2:");
1777
1778 format(text, sizeof(text), " In Verarbeitung: Weizen (%s), Tomate (%s), Gurke (%s), Drogen (%s)", FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh2_ready][0]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh2_ready][1]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh2_ready][2]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh2_ready][3]));
1779 SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, text);
1780
1781 format(text, sizeof(text), " Fertig: Weizen (%s), Tomate (%s), Gurke (%s), Drogen (%s), Benzin (%s)", FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh2_done][0]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh2_done][1]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh2_done][2]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh2_done][3]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh2_done][4]));
1782 SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, text);
1783
1784 SendClientMessage(playerid, HELP_COLOR_LIGHTBLUE, "Lager #3:");
1785
1786 format(text, sizeof(text), " In Verarbeitung: Weizen (%s), Tomate (%s), Gurke (%s), Drogen (%s)", FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh3_ready][0]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh3_ready][1]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh3_ready][2]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh3_ready][3]));
1787 SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, text);
1788
1789 format(text, sizeof(text), " Fertig: Weizen (%s), Tomate (%s), Gurke (%s), Drogen (%s), Benzin (%s)", FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh3_done][0]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh3_done][1]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh3_done][2]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh3_done][3]), FormatNumber(FARMER_fieldList[fieldid - 1][farmer_field_wh3_done][4]));
1790 SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, text);
1791
1792 format(text, sizeof(text), "============================ Feld #%i Informationen ============================", fieldid);
1793 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
1794
1795 return 1;
1796}
1797
1798ocmd:fertilize(playerid, params) {
1799 if(RemoteIsLoggedIn(playerid) == 0) {
1800 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht eingeloggt!");
1801 }
1802
1803 new fieldid = FARMER_GetFieldInRange(playerid);
1804 if(fieldid == -1 || !FARMER_HasField(playerid, fieldid)) {
1805 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist bei keinem deiner Felder!");
1806 }
1807 if(!IsPlayerInAnyVehicle(playerid) || GetPlayerState(playerid) != PLAYER_STATE_DRIVER || GetVehicleModel(GetPlayerVehicleID(playerid)) != 512) {
1808 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du befindest dich in keinem Cropduster!");
1809 }
1810 if(FARMER_fieldList[fieldid][farmer_field_fertilized]) {
1811 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Das Feld wurde bereits gedüngt!");
1812 }
1813 if(FARMER_fieldList[fieldid][farmer_field_state] != FARMER_STATE_GROWING) {
1814 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Das Feld wächst im Moment nicht!");
1815 }
1816 if(FARMER_playerList[playerid][farmer_player_state] != FARMER_PLAYER_NONE && FARMER_playerList[playerid][farmer_player_state] != FARMER_PLAYER_FERTILIZE) {
1817 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du kannst im Moment kein Feld düngen!");
1818 }
1819
1820 FARMER_playerList[playerid][farmer_player_field_id] = fieldid;
1821 FARMER_playerList[playerid][farmer_player_vehicle_id] = GetPlayerVehicleID(playerid);
1822 FARMER_playerList[playerid][farmer_player_state] = FARMER_PLAYER_FERTILIZE;
1823 FARMER_playerList[playerid][farmer_player_fertilize_left] = FARMER_FERTILIZE_AMOUNT;
1824
1825 FARMER_FertilizeSetCheckpoint(playerid);
1826
1827 SendClientMessage(playerid, HELP_COLOR_GREEN, "Dünge nun dein Feld!");
1828
1829 return 1;
1830}
1831
1832ocmd:harvest(playerid, params) {
1833 if(RemoteIsLoggedIn(playerid) == 0) {
1834 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht eingeloggt!");
1835 }
1836
1837 new fieldid = FARMER_GetFieldInRange(playerid);
1838 if(fieldid == -1) {
1839 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist bei keinem Feld!");
1840 }
1841 if(FARMER_fieldList[fieldid][farmer_field_state] != FARMER_STATE_READY && FARMER_fieldList[fieldid][farmer_field_state] != FARMER_STATE_DUE && FARMER_fieldList[fieldid][farmer_field_state] != FARMER_STATE_HARVESTING) {
1842 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Das Feld ist nicht bereit für eine Ernte!");
1843 }
1844 if(FARMER_playerList[playerid][farmer_player_state] != FARMER_PLAYER_NONE && FARMER_playerList[playerid][farmer_player_state] != FARMER_PLAYER_HARVEST) {
1845 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du kannst im Moment kein Feld ernten!");
1846 }
1847 if(FARMER_fieldList[fieldid][farmer_field_harvest_price][FARMER_fieldList[fieldid][farmer_field_seed]] == 0 && !FARMER_HasField(playerid, fieldid)) {
1848 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Dieses Feld kann nur von dem Besitzer geerntet werden!");
1849 }
1850 if(!IsPlayerInAnyVehicle(playerid) || GetPlayerState(playerid) != PLAYER_STATE_DRIVER || (GetVehicleModel(GetPlayerVehicleID(playerid)) != 543 && GetVehicleModel(GetPlayerVehicleID(playerid)) != 532)) {
1851 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du sitzt in keinem Sadler oder Combine Harvester!");
1852 }
1853
1854 new harvestLeft = FARMER_fieldList[fieldid][farmer_field_harvest_left];
1855 if(FARMER_fieldList[fieldid][farmer_field_state] != FARMER_STATE_HARVESTING ) {
1856 harvestLeft = FARMER_HARVEST_AMOUNT;
1857 }
1858 if(FARMER_fieldList[fieldid][farmer_field_money] < (harvestLeft * FARMER_fieldList[fieldid][farmer_field_harvest_price][FARMER_fieldList[fieldid][farmer_field_seed]]) && !FARMER_HasField(playerid, fieldid)) {
1859 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Das Feld besitzt nicht genügend Geld in der Kasse!");
1860 }
1861
1862 FARMER_playerList[playerid][farmer_player_field_id] = fieldid;
1863 FARMER_playerList[playerid][farmer_player_vehicle_id] = GetPlayerVehicleID(playerid);
1864 FARMER_playerList[playerid][farmer_player_state] = FARMER_PLAYER_HARVEST;
1865 FARMER_playerList[playerid][farmer_player_harvest_price] = FARMER_fieldList[fieldid][farmer_field_harvest_price][FARMER_fieldList[fieldid][farmer_field_seed]];
1866 FARMER_playerList[playerid][farmer_player_harvest_seed] = FARMER_fieldList[fieldid][farmer_field_seed];
1867
1868 if(FARMER_fieldList[fieldid][farmer_field_state] != FARMER_STATE_HARVESTING) {
1869
1870 FARMER_fieldList[fieldid][farmer_field_state] = FARMER_STATE_HARVESTING;
1871 FARMER_fieldList[fieldid][farmer_field_time] = FARMER_FIELD_HARVEST_TIME;
1872 FARMER_fieldList[fieldid][farmer_field_harvest_left] = FARMER_HARVEST_AMOUNT;
1873 FARMER_fieldList[fieldid][farmer_field_changed] = true;
1874
1875 FARMER_UpdateFieldLabel(fieldid);
1876
1877 }
1878
1879 FARMER_HarvestSetCheckpoint(playerid);
1880
1881 new text[128];
1882 format(text, sizeof(text), "Du kannst nun mit der Ernte beginnen! Übrig: %i", FARMER_fieldList[fieldid][farmer_field_harvest_left]);
1883 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
1884
1885 return 1;
1886}
1887
1888ocmd:storeplant(playerid, params[]) {
1889 if(RemoteIsLoggedIn(playerid) == 0) {
1890 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht eingeloggt!");
1891 }
1892 if(FARMER_playerList[playerid][farmer_player_state] != FARMER_PLAYER_HARVEST) {
1893 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du erntest kein Feld!");
1894 }
1895 if(GetVehicleModel(FARMER_playerList[playerid][farmer_player_vehicle_id]) != 543) {
1896 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du erntest das Feld in keinem Sadler!");
1897 }
1898 if(FARMER_playerList[playerid][farmer_player_harvest_amount] >= FARMER_HARVEST_SADLER) {
1899 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Dein Sadler ist bereits voll!");
1900 }
1901 if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) {
1902 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du kannst das nicht in einem Fahrzeug tun!");
1903 }
1904 if(!FARMER_playerList[playerid][farmer_player_harvest_pickup]) {
1905 if(!IsPlayerInRangeOfPoint(playerid, 5, FARMER_playerList[playerid][farmer_player_cp_x], FARMER_playerList[playerid][farmer_player_cp_y], FARMER_playerList[playerid][farmer_player_cp_z])) {
1906 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht in der Nähe des Checkpoints!");
1907 }
1908
1909 new fieldid = FARMER_playerList[playerid][farmer_player_field_id], harvestLeft = FARMER_fieldList[fieldid][farmer_field_harvest_left];
1910 if(harvestLeft > 1) {
1911
1912 FARMER_playerList[playerid][farmer_player_harvest_pickup] = true;
1913 FARMER_fieldList[fieldid][farmer_field_harvest_left] = harvestLeft - 1;
1914
1915 SendClientMessage(playerid, HELP_COLOR_GREEN, "Du hast einen Teil der Ernte aufgehoben! Bringe diese nun zu deinem Fahrzeug!");
1916
1917 new Float:x, Float:y, Float:z;
1918 GetVehiclePos(FARMER_playerList[playerid][farmer_player_vehicle_id], x, y, z);
1919
1920 SetPlayerCheckpoint(playerid, x, y, z, 3);
1921
1922 } else {
1923 if(harvestLeft == 1) {
1924
1925 FARMER_playerList[playerid][farmer_player_harvest_pickup] = true;
1926 FARMER_fieldList[fieldid][farmer_field_harvest_left] = harvestLeft - 1;
1927
1928 SendClientMessage(playerid, HELP_COLOR_GREEN, "Das Feld ist komplett abgeerntet! Bringe das letzte Stück nun zu deinem Fahrzeug!");
1929
1930 new Float:x, Float:y, Float:z;
1931 GetVehiclePos(FARMER_playerList[playerid][farmer_player_vehicle_id], x, y, z);
1932
1933 SetPlayerCheckpoint(playerid, x, y, z, 3);
1934
1935 FARMER_fieldList[fieldid][farmer_field_state] = FARMER_STATE_EMPTY;
1936 FARMER_fieldList[fieldid][farmer_field_seed] = FARMER_SEED_NONE;
1937 FARMER_fieldList[fieldid][farmer_field_time] = 0;
1938 FARMER_fieldList[fieldid][farmer_field_changed] = true;
1939
1940 FARMER_UpdateFieldLabel(fieldid);
1941
1942 } else {
1943 if(FARMER_playerList[playerid][farmer_player_harvest_amount] > 0) {
1944
1945 SendClientMessage(playerid, HELP_COLOR_GREEN, "Das Feld ist nun komplett abgeerntet! Fahre deine Ladung zum nächstes Lager!");
1946 FARMER_WarehouseSetCheckpoint(playerid);
1947
1948 } else {
1949
1950 SendClientMessage(playerid, HELP_COLOR_GREEN, "Das Feld ist bereits komplett abgeerntet!");
1951 DisablePlayerCheckpoint(playerid);
1952
1953 }
1954 }
1955 }
1956 } else {
1957
1958 new Float:x, Float:y, Float:z;
1959 GetVehiclePos(FARMER_playerList[playerid][farmer_player_vehicle_id], x, y, z);
1960
1961 if(!IsPlayerInRangeOfPoint(playerid, 5, x, y, z)) {
1962 return SendClientMessage(playerid, HELP_COLOR_GREEN, "Du bist nicht in der Nähe deines Fahrzeuges!");
1963 }
1964
1965 new fieldid = FARMER_playerList[playerid][farmer_player_field_id], harvestLeft = FARMER_fieldList[fieldid][farmer_field_harvest_left];
1966
1967 FARMER_playerList[playerid][farmer_player_harvest_pickup] = false;
1968 FARMER_playerList[playerid][farmer_player_harvest_amount] = FARMER_playerList[playerid][farmer_player_harvest_amount] + 1;
1969
1970 FARMER_SpawnSadlerObject(playerid);
1971
1972 if(FARMER_playerList[playerid][farmer_player_harvest_amount] >= FARMER_HARVEST_SADLER) {
1973
1974 FARMER_WarehouseSetCheckpoint(playerid);
1975 SendClientMessage(playerid, HELP_COLOR_GREEN, "Dein Sadler ist nun voll! Fahre deine Ladung zum nächsten Lager!");
1976
1977 } else {
1978 if(harvestLeft > 0) {
1979
1980 new text[128];
1981 format(text, sizeof(text), "Du hast einen Teil der Ernte aufgeladen! Übrig: %i", FARMER_fieldList[fieldid][farmer_field_harvest_left]);
1982 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
1983
1984 FARMER_HarvestSetCheckpoint(playerid);
1985
1986 } else {
1987
1988 SendClientMessage(playerid, HELP_COLOR_GREEN, "Das Feld ist nun leer! Fahre deine restliche Ladung zum nächsten Lager!");
1989 FARMER_WarehouseSetCheckpoint(playerid);
1990
1991 }
1992 }
1993 }
1994 return 1;
1995}
1996
1997ocmd:deliverplants(playerid, params[]) {
1998 if(RemoteIsLoggedIn(playerid) == 0) {
1999 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht eingeloggt!");
2000 }
2001 if(FARMER_playerList[playerid][farmer_player_state] != FARMER_PLAYER_HARVEST) {
2002 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du erntest kein Feld!");
2003 }
2004 if(!IsPlayerInAnyVehicle(playerid) || GetPlayerState(playerid) != PLAYER_STATE_DRIVER || FARMER_playerList[playerid][farmer_player_vehicle_id] != GetPlayerVehicleID(playerid)) {
2005 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du sitzt nicht in deinem Erntefahrzeug!");
2006 }
2007
2008 new warehouseid = FARMER_GetWarehouseInRange(playerid);
2009 if(warehouseid == -1) {
2010 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist an keinem Lager!");
2011 }
2012 if(FARMER_playerList[playerid][farmer_player_harvest_amount] == 0) {
2013 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du hast keine Ladung dabei!");
2014 }
2015
2016 new fieldid = FARMER_playerList[playerid][farmer_player_field_id], seedid = FARMER_playerList[playerid][farmer_player_harvest_seed];
2017 if(!FARMER_HasField(playerid, fieldid)) {
2018
2019 new money = FARMER_playerList[playerid][farmer_player_harvest_amount] * FARMER_playerList[playerid][farmer_player_harvest_price];
2020 FARMER_fieldList[fieldid][farmer_field_money] = FARMER_fieldList[fieldid][farmer_field_money] - money;
2021
2022 RemoteGivePlayerMoney(playerid, money);
2023 FARMER_UpdateFieldLabel(fieldid);
2024
2025 new text[128];
2026 format(text, sizeof(text), "Du hast die Ladung abgegeben und %s$ erhalten", FormatNumber(money));
2027 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
2028
2029 } else {
2030
2031 new text[128];
2032 switch(warehouseid) {
2033 case 0: format(text, sizeof(text), "Du hast %i Ernteprodukte in Lager #1 abgegeben! Gesamt: %s", FARMER_playerList[playerid][farmer_player_harvest_amount], FormatNumber(FARMER_fieldList[fieldid][farmer_field_wh1_ready][seedid] + FARMER_playerList[playerid][farmer_player_harvest_amount]));
2034 case 1: format(text, sizeof(text), "Du hast %i Ernteprodukte in Lager #2 abgegeben! Gesamt: %s", FARMER_playerList[playerid][farmer_player_harvest_amount], FormatNumber(FARMER_fieldList[fieldid][farmer_field_wh2_ready][seedid] + FARMER_playerList[playerid][farmer_player_harvest_amount]));
2035 case 2: format(text, sizeof(text), "Du hast %i Ernteprodukte in Lager #3 abgegeben! Gesamt: %s", FARMER_playerList[playerid][farmer_player_harvest_amount], FormatNumber(FARMER_fieldList[fieldid][farmer_field_wh3_ready][seedid] + FARMER_playerList[playerid][farmer_player_harvest_amount]));
2036 }
2037 SendClientMessage(playerid, HELP_COLOR_GREEN, text);
2038 }
2039 switch(warehouseid) {
2040 case 0: FARMER_fieldList[fieldid][farmer_field_wh1_ready][seedid] = FARMER_fieldList[fieldid][farmer_field_wh1_ready][seedid] + FARMER_playerList[playerid][farmer_player_harvest_amount];
2041 case 1: FARMER_fieldList[fieldid][farmer_field_wh2_ready][seedid] = FARMER_fieldList[fieldid][farmer_field_wh2_ready][seedid] + FARMER_playerList[playerid][farmer_player_harvest_amount];
2042 case 2: FARMER_fieldList[fieldid][farmer_field_wh3_ready][seedid] = FARMER_fieldList[fieldid][farmer_field_wh3_ready][seedid] + FARMER_playerList[playerid][farmer_player_harvest_amount];
2043 }
2044 if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 543) {
2045 FARMER_DestroySadlerObjects(playerid);
2046 }
2047
2048 FARMER_playerList[playerid][farmer_player_harvest_amount] = 0;
2049
2050 if(FARMER_fieldList[fieldid][farmer_field_state] != FARMER_STATE_HARVESTING) {
2051
2052 FARMER_playerList[playerid][farmer_player_state] = FARMER_PLAYER_NONE;
2053 SendClientMessage(playerid, HELP_COLOR_GREEN, "Das Feld wurde komplett abgeerntet!");
2054
2055 DisablePlayerCheckpoint(playerid);
2056
2057 } else {
2058
2059 SendClientMessage(playerid, HELP_COLOR_GREEN, "Fahre nun wieder zum Feld um es weiter abzuernten!");
2060 FARMER_HarvestSetCheckpoint(playerid);
2061
2062 }
2063 return 1;
2064}
2065
2066ocmd:harvestjobs(playerid, params[]) {
2067 if(RemoteIsLoggedIn(playerid) == 0) {
2068 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht eingeloggt!");
2069 }
2070 if(FARMER_playerList[playerid][farmer_player_state] != FARMER_PLAYER_HARVEST) {
2071 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du erntest kein Feld!");
2072 }
2073 return 1;
2074}
2075
2076ocmd:changeproduction(playerid, params[]) {
2077 if(RemoteIsLoggedIn(playerid) == 0) {
2078 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht eingeloggt!");
2079 }
2080
2081 new fieldid;
2082 if(sscanf(params, "i", fieldid)) {
2083 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "/changeproduction [Feld]");
2084 }
2085 if(fieldid <= 0 || fieldid > FARMER_FIELD_AMOUNT) {
2086 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Ungültiges Feld!");
2087 }
2088 if(!FARMER_HasField(playerid, fieldid - 1)) {
2089 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du besitzt dieses Feld nicht!");
2090 }
2091
2092 FARMER_playerList[playerid][farmer_player_change_prod_id] = fieldid -1;
2093 FARMER_OpenProductionDialog(playerid, fieldid - 1);
2094
2095 return 1;
2096}
2097
2098ocmd:changeprice(playerid, params[]) {
2099 if(RemoteIsLoggedIn(playerid) == 0) {
2100 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht eingeloggt!");
2101 }
2102
2103 new fieldid;
2104 if(sscanf(params, "i", fieldid)) {
2105 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "/changeprice [Feld]");
2106 }
2107 if(fieldid <= 0 || fieldid > FARMER_FIELD_AMOUNT) {
2108 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Ungültiges Feld!");
2109 }
2110 if(!FARMER_HasField(playerid, fieldid - 1)) {
2111 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du besitzt dieses Feld nicht!");
2112 }
2113
2114 FARMER_playerList[playerid][farmer_player_change_price_id] = fieldid -1;
2115 FARMER_OpenPriceDialog(playerid, fieldid - 1);
2116
2117 return 1;
2118}
2119
2120ocmd:farmerhelp(playerid, params[]) {
2121 if(RemoteIsLoggedIn(playerid) == 0) {
2122 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht eingeloggt!");
2123 }
2124
2125 SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "*** FARMER *** /buyseeds /plant /fields /fieldinfo /changeproduction /fertilize /harvest /harvestjobs /storeplant /deliverplants");
2126
2127 if(RemoteGetAdminLevel(playerid) >= 1) {
2128 SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "*** ADMIN *** /setfieldowner /setfieldstate /setfieldseed /setfieldtime");
2129 }
2130 return 1;
2131}
2132
2133ocmd:setfieldowner(playerid, params[]) {
2134 if(RemoteIsLoggedIn(playerid) == 0) {
2135 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht eingeloggt!");
2136 }
2137 if(RemoteGetAdminLevel(playerid) < 4) {
2138 return 1;
2139 }
2140
2141 new fieldid, targetid;
2142 if(sscanf(params, "iu", fieldid, targetid)) {
2143 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "/setfieldowner [Feld] [Spieler]");
2144 }
2145 if(!IsPlayerConnected(targetid)) {
2146 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Dieser Spieler ist nicht online!");
2147 }
2148 if(fieldid <= 0 || fieldid > FARMER_FIELD_AMOUNT) {
2149 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Ungültiges Feld!");
2150 }
2151
2152 new text[128], playerName[MAX_PLAYER_NAME], targetName[MAX_PLAYER_NAME];
2153 GetPlayerName(playerid, playerName, sizeof(playerName));
2154 GetPlayerName(targetid, targetName, sizeof(targetName));
2155
2156 format(FARMER_fieldList[fieldid - 1][farmer_field_owner], MAX_PLAYER_NAME, "%s", targetName);
2157 FARMER_fieldList[fieldid - 1][farmer_field_changed] = true;
2158
2159 format(text, sizeof(text), "%s hat %s das Feld %i überschrieben.", playerName, targetName, fieldid);
2160 SendAdminMessage(text);
2161
2162 format(text, sizeof(text), "Ein Admin hat dir das Feld %i überschrieben!", fieldid);
2163 SendClientMessage(targetid, HELP_COLOR_LIGHTRED, text);
2164
2165 printf("[Farmer] %s hat %s das Feld %i überschrieben!", playerName, targetName, fieldid);
2166
2167 FARMER_UpdateFieldLabel(fieldid -1);
2168 FARMER_SaveField(fieldid - 1, true);
2169
2170 return 1;
2171}
2172
2173ocmd:setfieldstate(playerid, params[]) {
2174 if(RemoteIsLoggedIn(playerid) == 0) {
2175 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht eingeloggt!");
2176 }
2177 if(RemoteGetAdminLevel(playerid) < 4) {
2178 return 1;
2179 }
2180
2181 new fieldid, stateid;
2182 if(sscanf(params, "ii", fieldid, stateid)) {
2183 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "/setfieldstate [Feld] [1-5]");
2184 }
2185 if(stateid <= 0 || stateid > 5) {
2186 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Ungültiger Status!");
2187 }
2188
2189 new text[128], playerName[MAX_PLAYER_NAME];
2190 GetPlayerName(playerid, playerName, sizeof(playerName));
2191
2192 FARMER_fieldList[fieldid - 1][farmer_field_state] = stateid - 1;
2193 FARMER_fieldList[fieldid - 1][farmer_field_changed] = true;
2194
2195 format(text, sizeof(text), "%s hat den Status von Feld %i auf %i gesetzt.", playerName, fieldid, stateid);
2196 SendAdminMessage(text);
2197
2198 printf("[Farmer] %s hat den Status von Feld %i auf %i gesetzt!", playerName, fieldid, stateid);
2199
2200 FARMER_UpdateFieldLabel(fieldid -1);
2201 FARMER_SaveField(fieldid - 1, true);
2202
2203 return 1;
2204}
2205
2206ocmd:setfieldseed(playerid, params[]) {
2207 if(RemoteIsLoggedIn(playerid) == 0) {
2208 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht eingeloggt!");
2209 }
2210 if(RemoteGetAdminLevel(playerid) < 4) {
2211 return 1;
2212 }
2213
2214 new fieldid, seedid;
2215 if(sscanf(params, "ii", fieldid, seedid)) {
2216 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "/setfieldseed [Feld] [0-4]");
2217 }
2218 if(seedid < 0 || seedid > 4) {
2219 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Ungültiger Samen!");
2220 }
2221
2222 new text[128], playerName[MAX_PLAYER_NAME];
2223 GetPlayerName(playerid, playerName, sizeof(playerName));
2224
2225 FARMER_fieldList[fieldid - 1][farmer_field_seed] = seedid - 1;
2226 FARMER_fieldList[fieldid - 1][farmer_field_changed] = true;
2227
2228 format(text, sizeof(text), "%s hat den Samen von Feld %i auf %i gesetzt.", playerName, fieldid, seedid);
2229 SendAdminMessage(text);
2230
2231 printf("[Farmer] %s hat den Samen von Feld %i auf %i gesetzt!", playerName, fieldid, seedid);
2232
2233 FARMER_UpdateFieldLabel(fieldid - 1);
2234 FARMER_SaveField(fieldid - 1, true);
2235
2236 return 1;
2237}
2238
2239ocmd:setfieldtime(playerid, params[]) {
2240 if(RemoteIsLoggedIn(playerid) == 0) {
2241 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Du bist nicht eingeloggt!");
2242 }
2243 if(RemoteGetAdminLevel(playerid) < 4) {
2244 return 1;
2245 }
2246
2247 new fieldid, time;
2248 if(sscanf(params, "ii", fieldid, time)) {
2249 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "/setfieldtime [Feld] [Zeit]");
2250 }
2251 if(time <= 0 || time > 720) {
2252 return SendClientMessage(playerid, HELP_COLOR_LIGHTGRAY, "Die Zeit muss größer 0 Minuten und kleiner 720 Minuten sein!");
2253 }
2254
2255 new text[128], playerName[MAX_PLAYER_NAME];
2256 GetPlayerName(playerid, playerName, sizeof(playerName));
2257
2258 FARMER_fieldList[fieldid - 1][farmer_field_time] = time;
2259 FARMER_fieldList[fieldid - 1][farmer_field_changed] = true;
2260
2261 format(text, sizeof(text), "%s hat die Zeit von Feld %i auf %i Minuten gesetzt.", playerName, fieldid, time);
2262 SendAdminMessage(text);
2263
2264 printf("[Farmer] %s hat den Zeit von Feld %i auf %i Minuten gesetzt!", playerName, fieldid, time);
2265
2266 FARMER_UpdateFieldLabel(fieldid - 1);
2267 FARMER_SaveField(fieldid - 1, true);
2268
2269 return 1;
2270}