· 9 years ago · Jan 14, 2017, 02:50 PM
1//#define POLICE_USE //uncomment if you want only police to use it.
2//#define ADMIN_USE //uncomment if you want only admins to use it.
3
4/*
5AddSPU(spuid, Float:x, Float:y, Float:z, Float:rotation, color1, color2, lightonoroff) //lightonoroff: 1 = on, 0 = off.
6
7You can use this function to create SPU's without using the dialog, i.e. in OnFilterScriptInit.
8SPU-id stands for the type you need:
91 --- Sultan with lamp on dashboard.
102 --- Sultan with lamp on roof.
113 --- Cheetah with lamp on dashboard.
124 --- Cheetah with lamp on roof.
135 --- Washington with lamp on dashboard.
146 --- Washington with lamp on roof.
157 --- Premier with lamp on dashboard.
168 --- Premier with lamp on roof.
179 --- Huntley with lamp on dashboard.
1810 --- Huntley with lamp on roof.
1911 --- Buffalo with lamp on dashboard.
2012 --- Buffalo with lamp on roof.
2113 --- LSPD with lamp on dashboard.
2214 --- LSPD with lamp on roof.
2315 --- SFPD with lamp on dashboard.
2416 --- SFPD with lamp on roof.
2517 --- LVPD with lamp on dashboard.
2618 --- LVPD with lamp on roof.
2719 --- FireTruck
2820 --- FBI-Truck
2921 --- Towtruck
3022 --- Stretch with lamp on dashboard.
3123 --- Stretch with lamp on roof.
3224 --- PCJ-600
3325 --- FCR-900
3426 --- Wayfarer
3527 --- Super GT
3628 --- Burrito with lamp on dashboard.
3729 --- Burrito with lamp on roof.
3830 --- BF Injection
3931 --- Patriot
4032 --- Barracks
4133 --- Rhino
4234 --- Securicar
43*/
44
45#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
46//#include <sscanf2>
47#include <a_samp>
48#include <zcmd>
49#include <sscanf2>
50//#include <S32_House>
51#include <foreach>
52#include <a_mysql>
53#include <a_players>
54#include <SII>
55#include <streamer>
56#include <F_Streamer>
57#include <SmartChat>
58
59
60#pragma tabsize 0
61
62#define USE_MYSQL_VERSION
63
64//==============================
65
66//Décommenter pour utiliser
67//#include <streamer>
68
69
70//==============================
71
72#define MAX_LOAD_OBJECTS 2000 // MAX 500 SPAWN D'UN COUP
73
74#undef MAX_PLAYERS
75#define MAX_PLAYERS 50 // Aussi bas qu'on peut
76
77#define CameraFile "Cameras.ini"
78#define MAX_CAMERAS 100
79
80#define MAX_HOUSES 60 //Nombre maximum de maisons (max 999).
81
82#define HD HouseData
83#define HC HouseCreating
84
85#define COLOR_RED 0xAA3333AA
86#define COLOR_WHITE 0xFFFFFFAA
87
88#define SAVETIME_MINUTES 1 //Changer l'intervalle de sauvegarde
89#define SAVETIME (SAVETIME_MINUTES * 60000)
90
91
92
93
94#define mysql_host "127.0.0.1"
95#define mysql_user "root"
96#define mysql_password ""
97#define mysql_database "samp"
98
99#define SYellow 0xFFFF00FF
100#define SRed 0xFF0000FF
101#define SPurple 0xFF76FFFF
102#define SOrange 0xFF7300FF
103#define SGreen 0x00FF00FF
104#define COLOR_RED 0xAA3333AA
105#define COLOR_YELLOW 0xFFFF00AA
106//COULEUR MODERNTOPIA
107#define COLOR_GRAD1 0xB4B5B7FF
108#define COLOR_GRAD2 0xBFC0C2FF
109#define COLOR_GRAD3 0xCBCCCEFF
110#define COLOR_GRAD4 0xD8D8D8FF
111#define COLOR_GRAD5 0xE3E3E3FF
112#define COLOR_GRAD6 0xF0F0F0FF
113#define COLOR_GREY 0xAFAFAFAA
114#define COLOR_GREEN 0x33AA33AA
115#define COLOR_RED 0xAA3333AA
116#define COLOR_LIGHTRED 0xFF6347AA
117#define COLOR_LIGHTBLUE 0x33CCFFAA
118#define COLOR_LIGHTGREEN 0x9ACD32AA
119#define COLOR_YELLOW 0xFFFF00AA
120#define COLOR_YELLOW2 0xF5DEB3AA
121#define COLOR_WHITE 0xFFFFFFAA
122#define COLOR_MAGENTA 0xFF00FFFF
123#define COLOR_FADE1 0xE6E6E6E6
124#define COLOR_FADE2 0xC8C8C8C8
125#define COLOR_FADE3 0xAAAAAAAA
126#define COLOR_FADE4 0x8C8C8C8C
127#define COLOR_FADE5 0x6E6E6E6E
128#define COLOR_PURPLE 0xC2A2DAAA
129#define COLOR_DBLUE 0x2641FEAA
130#define COLOR_ALLDEPT 0xFF8282AA
131#define COLOR_NEWS 0xFFA500AA
132#define COLOR_OOC 0xE0FFFFAA
133#define TEAM_CYAN 1
134#define TEAM_BLUE 2
135#define TEAM_GREEN 3
136#define TEAM_ORANGE 4
137#define TEAM_COR 5
138#define TEAM_BAR 6
139#define TEAM_TAT 7
140#define TEAM_CUN 8
141#define TEAM_STR 9
142#define TEAM_HIT 10
143#define TEAM_ADMIN 11
144#define OBJECTIVE_COLOR 0x64000064
145#define TEAM_GREEN_COLOR 0xFFFFFFAA
146#define TEAM_JOB_COLOR 0xFFB6C1AA
147#define TEAM_HIT_COLOR 0xFFFFFF00
148#define TEAM_BLUE_COLOR 0x8D8DFF00
149#define COLOR_ADD 0x63FF60AA
150#define TEAM_GROVE_COLOR 0x00D900C8
151#define TEAM_VAGOS_COLOR 0xFFC801C8
152#define TEAM_BALLAS_COLOR 0xD900D3C8
153#define TEAM_AZTECAS_COLOR 0x01FCFFC8
154#define TEAM_CYAN_COLOR 0xFF8282AA
155#define TEAM_ORANGE_COLOR 0xFF830000
156#define TEAM_COR_COLOR 0x39393900
157#define TEAM_BAR_COLOR 0x00D90000
158#define TEAM_TAT_COLOR 0xBDCB9200
159#define TEAM_CUN_COLOR 0xD900D300
160#define TEAM_STR_COLOR 0x01FCFF00
161#define TEAM_ADMIN_COLOR 0x00808000
162#define COLOR_INVIS 0xAFAFAF00
163#define COLOR_SPEC 0xBFC0C200
164
165#define at 75//Change 75 to how long the animation will applied you want or comment this line and change them one by one
166
167
168#define CYELLOW "{9DBD1E}"
169#define CORANGE "{E68C0E}"
170#define CBLUE "{39AACC}"
171#define CDGREEN "{6FA828}"
172#define CWHITE "{FFFFFF}"
173#define CRED "{FF0000}"
174#define CGREY "{7D8584}"
175
176#define MAX_BUYABLE_VEH 500 // Changement du nombre de véhicules
177#define MAX_VEH_MODS 12 // Tunning max (ne pas toucher)
178#define MAX_OWNABLE_VEH 5 // Nombre de véhicules que peut possèder un joueur
179#define OwnedVeh(%0) ivCreated[%0]
180
181#define COLOR_RED 0xAA3333AA
182
183#define DIALOG1_MSG "Sultan [dashboard]\nSultan [roof]\nCheetah [dashboard]\nCheetah [roof]\nWashington [dashboard]\nWashington [roof]\nPremier [dashboard]\nPremier [roof]\nHuntley [dashboard]\nHuntley [roof]\nMore"
184#define DIALOG2_MSG "Buffalo [dashboard]\nBuffalo [roof]\nLSPD Cruiser[dashboard]\nLSPD Cruiser[roof]\nSFPD Cruiser[dashboard]\nSFPD Cruiser[roof]\nLVPD Cruiser[dashboard]\nLVPD Cruiser[roof]\nFiretruck\nFBI Truck \nMore"
185#define DIALOG3_MSG "Tow Truck\nStretch [dashboard]\nStretch [roof]\nPCJ-600\nFCR-900\nWayfarer\nSuper GT\nBurrito [dashboard]\nBurrito [roof]\nBF Injection\nPatriot\nBarracks\nSecuricar"
186
187new ChatState[MAX_PLAYERS char],
188 bool:Muted[MAX_PLAYERS char],
189 SCSString[129],
190 SCSInt,
191 Float:SCSPos[3];
192
193AntiDeAMX()
194{
195 new a[][] =
196 {
197 "Unarmed (Fist)",
198 "Brass K"
199 };
200 #pragma unused a
201}
202
203enum jHouseInfo {
204 ID,
205 owner[24],
206 price,
207 Float:exteriorX,
208 Float:exteriorY,
209 Float:exteriorZ,
210 Float:interiorX,
211 Float:interiorY,
212 Float:interiorZ,
213 interiorInt,
214 locked,
215 gunslot1,
216 locklevel,
217 safeamount
218}
219new HouseData[MAX_HOUSES][jHouseInfo], InsideHouse[MAX_PLAYERS];
220enum creatingHouse {
221 Float:exteriorX,
222 Float:exteriorY,
223 Float:exteriorZ,
224 Float:interiorX,
225 Float:interiorY,
226 Float:interiorZ,
227 interiorInt
228}
229new HouseCreating[MAX_PLAYERS][creatingHouse], bool:breakingLock[MAX_PLAYERS], housetimer;
230new WeaponNames[47][] =
231{
232 "Poing", "Poing américain", "Club de golf", "Matraque", "Couteau", "Batte de baseball", "Pelle", "Queue de billard", "Katana", "Tronconneuse", "Gode", "Vibro", "Vibro XXL", "Vibro argenté",
233 "Fleurs", "Canne", "Grenade", "Grenade lacrymogène", "Cocktail Molotv", "Jetpack", "Rien", "Rien", "Colt 45", "Pistolet silencieux", "Desert Eagle", "Fusil à pompe", "Fusil à pompe à canon scié", "SPAS-12",
234 "Micro SMG", "MP5", "AK47", "M4A1", "Tec-9", "Carabine", "Fusil Sniper", "Lance-roquettes", "Lance-roquettes thermoguidé", "Lance-flammes", "Minigun", "C4", "Detonateur", "Spray", "Extincteur",
235 "Appareil photo", "Vision nocturne", "Vision thermique", "Parachute"
236};
237
238forward SaveHouses();
239forward ConnectMySQL();
240forward BuildHouse(hprice, Float:hexteriorX, Float:hexteriorY, Float:hexteriorZ, Float:hinteriorX, Float:hinteriorY, Float:hinteriorZ, hinteriorInt, hlocked);
241forward BreakHouseLock(houseid, playerid, time);
242
243
244enum Coords
245{
246 SPU,
247 VehicleID,
248 Float:X,
249 Float:Y,
250 Float:Z,
251};
252
253new Offsets[33][Coords] = {
254 {1, 560, 0.398071289,0.75390625,0.43879509},
255 {2, 560, -0.35644531250, 0.0388183593, 0.863788605},
256 {3, 415, 0.409729004, 0.526367188, 0.206963539},
257 {4, 415, -0.290039062, -0.284179688, 0.631957054},
258 {5, 421, 0.421691895, 0.804931641, 0.256482124},
259 {6, 421, -0.323303223, 0.0207519532, 0.731482506},
260 {7, 426, 0.575378418, 0.786132812, 0.361483574},
261 {8, 426, -0.455505371, -0.143066406, 0.861475945},
262 {9, 579, 0.454345703, 0.575683594, 0.645122528},
263 {10, 579, -0.442626953, -0.269042969, 1.27014542},
264 {11, 402, 0.53515625, 0.562988281, 0.278743744},
265 {12, 402, -0.412841797, -0.474365234, 0.778804779},
266 {13, 596, 0.53515625, 0.771728516, 0.373809814},
267 {14, 596, -0.0048828125, -0.860107422, 0.848770142},
268 {15, 597, 0.53515625, 0.771728516, 0.373809814},
269 {16, 597, -0.0048828125, -0.860107422, 0.848770142},
270 {17, 598, 0.406738281, 0.696777344, 0.398208618},
271 {18, 598, -0.0048828125, -0.860107422, 0.848770142},
272 {19, 544, 0.522338867, 2.5925293, 1.46867275},
273 {20, 528, 0.563842773, 0.754882812, 0.487258911},
274 {21, 525, -0.0089111328, 0.273193359, 1.4037838},
275 {22, 409, 0.420776367, 1.80236816, 0.368680954},
276 {23, 409, -0.439941406, 0.824829102, 0.842817307},
277 {24, 461, 0.00000000, -0.932861328, 0.494509697},
278 {25, 521, 0.00000000, -0.928955078, 0.558652878},
279 {26, 586, 0.00000000, -1.20178223, 0.671886444},
280 {27, 506, 0.541137695, 0.282714844, 0.272130013},
281 {28, 482, 0.493530273, 1.39465332, 0.442443848},
282 {29, 482, -0.392211914, 0.565551758, 0.941601753},
283 {30, 424, -0.624511719, 0.139648438, 0.918135643},
284 {31, 470, -1.917797851, -0.006640625, 1.80928631},
285 {32, 433, -0.577392578, 1.23217773, 1.70311642},
286 {33, 428, -0.882626953, 0.869042969, 1.17014542}
287};
288enum _VINFO
289{
290 vModel,
291 vColor1,
292 vColor2,
293 vPrice,
294 vOwner[MAX_PLAYER_NAME],
295 Float:vPosX,
296 Float:vPosY,
297 Float:vPosZ,
298 Float:vPosA,
299 vPlate[32],
300 vPaintJ,
301 vLocked
302}
303new
304 vInfo[MAX_BUYABLE_VEH][_VINFO],
305 ivCreated[MAX_VEHICLES],
306 Total_Veh_Created,
307 vMods[MAX_BUYABLE_VEH][MAX_VEH_MODS],
308 Total_Player_Vehicles[MAX_PLAYERS];
309
310
311//--------------Use comments if you are not using ("//")-----------------
312//#define COB//Create object
313//#define CDO // Streamer Ignoto
314#define FCO //Streamer Fallout
315//-----------------------------------------------------------------------
316
317//CREATION OBJETS
318#define mysql_fetch_row(%1) mysql_fetch_row_format(%1,"|")
319new OBID[MAX_LOAD_OBJECTS], row2[500], Obcount, Float:Floats[7], Var[6], Stopload, FORMAT[20], refstr[100], AID[MAX_LOAD_OBJECTS];
320//FIN CREATION OBJETS
321
322new Skin[MAX_PLAYERS];
323new Tuto[MAX_PLAYERS];
324new Faction[MAX_PLAYERS];
325new Locatype[MAX_PLAYERS];
326new Prixloca[MAX_PLAYERS];
327new Plaque[MAX_PLAYERS];
328new Prison[MAX_PLAYERS];
329new Etapetuto[MAX_PLAYERS];
330new Demarrage[MAX_PLAYERS];
331new Flash[MAX_PLAYERS];
332new Service[MAX_PLAYERS];
333new Rang[MAX_PLAYERS];
334new Pickup[MAX_PLAYERS];
335new Bidon[MAX_PLAYERS];
336new Modeleveh[MAX_PLAYERS];
337new Motard[MAX_PLAYERS];
338
339
340new IsRentable[MAX_VEHICLES];
341new IsRented[MAX_VEHICLES];
342new RentedBy[MAX_VEHICLES][24];
343
344new TowTruckers=0;
345new IsTowTrucker[MAX_PLAYERS];
346
347
348// 2400 =e 2400/2 = 1200 secondes (ou 1200/60 = 20 minutes) sans faire le plein
349new MaxFuel = 2400;
350// RefuelMaxPrice est le prix que vous payez pour un total plein (lorsque le véhicule n'a pas plus de carburant), le prix à payer est calculé
351// Par la quantité de carburant pour faire le plein (à payer 50% de RefuelMaxPrice lorsque le véhicule a une demi du réservoir de carburant)
352new RefuelMaxPrice = 800;
353
354// Pour désactiver ombres
355new bool:DisableShadows = false;
356
357// DEF PICKUPS
358
359new entreesfpd;
360new sortiesfpd;
361new entreessol1;
362new entreessol2;
363new edsfpd;
364new fdsfpd;
365new gdsfpdf1;
366new gdsfpdf2;
367new portaile;
368new ouvportaili;
369new ouvportaile;
370new portegsfpd;
371new ouvgi;
372new ouvge;
373new servicep;
374
375// VERIF NOM
376new symbols[] =
377{
378 '[', ']'
379};
380
381new abc[] =
382{
383 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
384 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
385};
386
387new bool: Big;
388new IsSpu[MAX_VEHICLES] = 0;
389new Lamp[MAX_VEHICLES] = 0;
390new light[MAX_VEHICLES];
391
392new vehEngine[MAX_VEHICLES];
393
394//FORWARD
395forward ouvgsfpde(playerid);
396forward fergsfpde(playerid);
397forward actionportailo(playerid);
398forward actionportailf(playerid);
399forward ouvgaragesfpd(playerid);
400forward fergaragesfpd(playerid);
401forward Tutoriel(playerid);
402forward StartEngine(playerid);
403forward DamagedEngine(playerid);
404
405
406enum TSpeedCamera
407{
408 Float:CamX,
409 Float:CamY,
410 Float:CamZ,
411 Float:CamAngle,
412 CamSpeed, //
413 CamObj1, // Référence objet 1
414 CamObj2 // Reference objet 2
415}
416new ACameras[MAX_CAMERAS][TSpeedCamera];
417
418
419enum TPickupData
420{
421 Float:pux,
422 Float:puy,
423 Float:puz,
424 PickupID
425}
426// Maximum de stations service
427new ARefuelPickups[50][TPickupData];
428
429//
430enum TVehicleData
431{
432 Fuel // Montant d'essence
433}
434//MAX 2000veh
435new AVehicleData[2000][TVehicleData];
436
437enum TPlayerData
438{
439 Text:SpeedometerText, // Texdraw vitesse
440 Text:FuelGauge, // Textdraw jauge
441 SpeedometerTimer, //
442 PlayerSpeed, //
443 PlayerCaughtSpeeding //
444}
445// Create an array to hold the playerdata for every player
446new APlayerData[MAX_PLAYERS][TPlayerData];
447
448
449
450// These variables are used when starting the script and debugging purposes
451new TotalRefuelStations, TotalCameras;
452//============================================================================//
453// Définition valeurs //
454//============================================================================//
455
456
457//STOCKS
458
459/*stock RetraitUnderScore(playerid)
460{
461 new name[MAX_PLAYER_NAME];
462 GetPlayerName(playerid,name,sizeof(name));
463 for(new i = 0; i < MAX_PLAYER_NAME; i++)
464 {
465 if(name[i] == '_') name[i] = ' ';
466 }
467 return name;
468}*/
469
470//------------------------------------------------------------------------------------------
471
472
473//-------------------------------------------------------------------------------------------------------------------------
474
475new Logged[MAX_PLAYERS]; //Pour vérifier que le joueur est loggé.
476
477
478//-----------------------------------------------------------------
479main()
480{
481 print("\n----------------------------------");
482 print(" Innovation Rôleplay 2012 ");
483 print(" - SQL VERSION - ");
484 print("----------------------------------\n");
485}
486
487
488public OnGameModeInit()
489{
490 AntiDeAMX();
491 mysql_connect("localhost", "root", "samp", "");
492 SetGameModeText("iRP 0.0.1");
493 AddPlayerClass(0, -2026.4872,96.6347,40.5084, 269.1425, 0, 0, 0, 0, 0, 0);
494 DisableInteriorEnterExits();
495 EnableStuntBonusForAll(0);
496 ShowPlayerMarkers(0);
497 LoadHouses();
498 printf("Sauvegarde toutes les %d millisecondes, (Soit toutes les %d minute(s))", SAVETIME, SAVETIME_MINUTES);
499 SetTimer("SaveHouses", SAVETIME, true);
500
501 LoadPVehicles(); //CHARGEMENT VEH
502
503 //VEH LOCA
504 CreateRentalVehicle(462,-1969.80004883,106.50000000,27.39999962,181.99951172,-1,-1); //Faggio
505 CreateRentalVehicle(462,-1971.00000000,106.50000000,27.39999962,181.99951172,-1,-1); //Faggio
506 CreateRentalVehicle(462,-1971.90002441,106.50000000,27.39999962,181.99951172,-1,-1); //Faggio
507 CreateRentalVehicle(462,-1972.90002441,106.50000000,27.39999962,181.99951172,-1,-1); //Faggio
508 CreateRentalVehicle(462,-1973.90002441,106.50000000,27.39999962,181.99951172,-1,-1); //Faggio
509 CreateRentalVehicle(462,-1974.90002441,106.50000000,27.39999962,181.99951172,-1,-1); //Faggio
510 CreateRentalVehicle(462,-1976.09997559,106.50000000,27.39999962,181.99951172,-1,-1); //Faggio
511 CreateRentalVehicle(462,-1977.00000000,106.50000000,27.39999962,181.99951172,-1,-1); //Faggio
512 CreateRentalVehicle(462,-1969.00000000,106.40000153,27.39999962,181.99951172,-1,-1); //Faggio
513 CreateRentalVehicle(510,-1996.59997559,133.10000610,27.39999962,295.99914551,-1,-1); //Mountain Bike
514 CreateRentalVehicle(510,-1996.59997559,134.30000305,27.39999962,295.99914551,-1,-1); //Mountain Bike
515 CreateRentalVehicle(510,-1996.59997559,135.60000610,27.39999962,295.99914551,-1,-1); //Mountain Bike
516 CreateRentalVehicle(510,-1996.59997559,136.39999390,27.39999962,295.99914551,-1,-1); //Mountain Bike
517 CreateRentalVehicle(510,-1996.59997559,137.50000000,27.39999962,295.99914551,-1,-1); //Mountain Bike
518 CreateRentalVehicle(510,-1996.59997559,138.30000305,27.39999962,295.99914551,-1,-1); //Mountain Bike
519 CreateRentalVehicle(510,-1996.59997559,139.10000610,27.39999962,295.99914551,-1,-1); //Mountain Bike
520 CreateRentalVehicle(510,-1996.59997559,140.00000000,27.39999962,295.99914551,-1,-1); //Mountain Bike
521 CreateRentalVehicle(510,-1996.59997559,140.80000305,27.39999962,295.99914551,-1,-1); //Mountain Bike
522 CreateRentalVehicle(510,-1996.59997559,141.60000610,27.39999962,295.99914551,-1,-1); //Mountain Bike
523 CreateRentalVehicle(510,-1996.59997559,142.19999695,27.39999962,295.99914551,-1,-1); //Mountain Bike
524 CreateRentalVehicle(510,-1996.59997559,142.89999390,27.39999962,295.99914551,-1,-1); //Mountain Bike
525 CreateRentalVehicle(509,-1996.50000000,149.50000000,27.20000076,247.99987793,-1,-1); //Bike
526 CreateRentalVehicle(509,-1996.40002441,150.60000610,27.29999924,247.99987793,-1,-1); //Bike
527 CreateRentalVehicle(509,-1996.40002441,151.60000610,27.29999924,247.99987793,-1,-1); //Bike
528 CreateRentalVehicle(509,-1996.40002441,152.39999390,27.29999924,247.99987793,-1,-1); //Bike
529 CreateRentalVehicle(509,-1996.40002441,153.10000610,27.29999924,247.99987793,-1,-1); //Bike
530 CreateRentalVehicle(509,-1996.40002441,153.89999390,27.29999924,247.99987793,-1,-1); //Bike
531 CreateRentalVehicle(509,-1996.40002441,154.50000000,27.29999924,247.99987793,-1,-1); //Bike
532 CreateRentalVehicle(509,-1996.40002441,155.30000305,27.29999924,247.99987793,-1,-1); //Bike
533 CreateRentalVehicle(509,-1996.40002441,156.00000000,27.29999924,247.99987793,-1,-1); //Bike
534 CreateRentalVehicle(509,-1996.40002441,156.80000305,27.29999924,247.99987793,-1,-1); //Bike
535 CreateRentalVehicle(462,-1968.19995117,106.30000305,27.39999962,181.99951172,-1,-1); //Faggio
536 CreateRentalVehicle(462,-1967.40002441,106.19999695,27.39999962,181.99951172,-1,-1); //Faggio
537
538 //FIN LOCA
539
540 //DEBUT GRILLES
541
542 gdsfpdf1 = CreateObject(2930,253.19999695,110.80000305,1004.90002441,0.00000000,0.00000000,0.00000000); //object(chinatgate) (1)
543 gdsfpdf2 = CreateObject(2930,253.19999695,109.08000183,1004.90002441,0.00000000,0.00000000,0.00000000); //object(chinatgate) (2)
544
545 portaile = CreateObject(987,-1572.19995117,656.09997559,3.50000000,0.00000000,0.00000000,90.00000000); //object(elecfence_bar) (1) BARRIERE COTE CANAL
546 portegsfpd = CreateObject(10184,-1631.69995117,688.40002441,8.69999981,0.00000000,0.00000000,270.00000000); //object(sfcopdr) (2) PORTE DE GARAGE
547 CreateObject(8167,-1701.40002441,683.00000000,25.00000000,0.00000000,0.00000000,0.00000000); //object(apgate1_vegs01) (1) PORTE HAUT
548
549
550
551 //DEBUT PICKUPS
552
553 Create3DTextLabel("Poste de Police de San Fierro", 0xFFFF00AA, -1605.6999, 711.4000, 14.1000, 40.0, 0, 0);
554 entreesfpd = CreatePickup(1247, 23, -1605.69995117,711.40002441,13.40000038, -1);
555
556 Create3DTextLabel("Retour à San Fierro", 0xFFFF00AA, 246.39999390,107.59999847,1003.80001221, 20.0, 0, 0);
557 sortiesfpd = CreatePickup(1247, 23, 246.39999390,107.59999847,1003.20001221, -1);
558
559 Create3DTextLabel("Vers le SFPD", 0xFFFF00AA, -1593.8311,716.2568,-4.2422, 20.0, 0, 0);
560 entreessol1 = CreatePickup(1247, 23, -1593.8311,716.2568,-5.2422, -1);
561
562 Create3DTextLabel("Vers le SFPD", 0xFFFF00AA, -1606.3641,672.7165,-4.2422, 20.0, 0, 0);
563 entreessol2 = CreatePickup(1247, 23, -1606.3641,672.7165,-5.2422, -1);
564
565 Create3DTextLabel("Prendre son service \n /service", 0xFFFF00AA, 234.1651,111.4078,1003.2257, 10.0, 0, 0);
566 servicep = CreatePickup(1239, 2, 234.1651,111.4078,1003.2257, -1);
567
568 Create3DTextLabel("Entrée réservée au SFPD", 0xFF6347AA, 252.3151,109.2000,1003.2188, 1.0, 0, 0);
569 edsfpd = CreatePickup(1239, 2, 252.3151,109.2000,1003.2188, -1);
570
571 Create3DTextLabel("Sortie du SFDP", 0xFF6347AA, 255.3196,111.3532,1003.2188, 1.0, 0, 0);
572 fdsfpd = CreatePickup(1239, 2, 255.3196,111.3532,1003.2188, -1);
573
574 Create3DTextLabel("Ouverture grille SFPD", COLOR_LIGHTBLUE, -1568.9683,662.2180,8.1875, 8.0, 0, 0);
575 ouvportaili = CreatePickup(1247, 2, -1575.0378,662.2130,7.1875, -1);
576
577 Create3DTextLabel("Ouverture grille SFPD", COLOR_LIGHTBLUE, -1568.9683,662.2180,8.1875, 8.0, 0, 0);
578 ouvportaile = CreatePickup(1247, 2, -1568.9683,662.2180,7.1875, -1);
579
580 Create3DTextLabel("Ouverture garage SFPD", COLOR_LIGHTBLUE, -1631.5081,736.5239,-5.1444, 8.0, 0, 0);
581 ouvgi = CreatePickup(1247, 2, -1631.5081,736.5239,-5.1444, -1);
582
583 Create3DTextLabel("Ouverture garage SFPD", COLOR_LIGHTBLUE, -1630.3855,685.8479,7.1875, 8.0, 0, 0);
584 ouvge = CreatePickup(1247, 2, -1630.3855,685.8479,7.1875, -1);
585
586
587
588 //FIN PICKUPS
589
590 AddStaticVehicle(494, -1988.3811,138.0612,27.5391, 104.0376, 0, 1);
591 AddStaticVehicle(521, -1986.3811,138.0612,27.5391, 104.0376, 0, 1);
592 AddStaticVehicle(487, -1997.4984,120.7537,27.6875,91.4523, -1, -1);
593
594 AddStaticVehicle(420,-1986.1897,171.5134,27.5040,359.7882,-1,-1); //
595 AddStaticVehicle(420,-1986.2063,165.5855,27.5045,359.7536,-1,-1); //
596
597
598 SetVehicleNumberPlate(AddStaticVehicle(497,-1680.40002441,706.29998779,30.89999962,92.00000000,252,1), "Jay's Ride"); //Police Maverick
599 AddStaticVehicle(469,-1647.40002441,692.90002441,38.29999924,0.00000000,252,1); //Sparrow
600 AddStaticVehicle(469,-1657.19995117,693.20001221,38.29999924,0.00000000,252,1); //Sparrow
601 AddStaticVehicle(417,-1651.59997559,705.09997559,38.70000076,180.00000000,252,1); //Leviathan
602 SetVehicleNumberPlate(AddStaticVehicle(597,-1594.40002441,652.20001221,7.09999990,0.00000000,252,1), "SFPD P01"); //Police Car (SFPD)
603 SetVehicleNumberPlate(AddStaticVehicle(597,-1600.40002441,652.59997559,7.09999990,0.00000000,252,1), "SFPD P02"); //Police Car (SFPD)
604 SetVehicleNumberPlate(AddStaticVehicle(597,-1605.90002441,652.90002441,7.09999990,0.00000000,252,1), "SFPD P03"); //Police Car (SFPD)
605 SetVehicleNumberPlate(AddStaticVehicle(597,-1611.50000000,653.20001221,7.09999990,0.00000000,252,1), "SFPD P04"); //Police Car (SFPD)
606 SetVehicleNumberPlate(AddStaticVehicle(597,-1588.80004883,652.00000000,7.09999990,0.00000000,252,1), "SFPD P05"); //Police Car (SFPD)
607 SetVehicleNumberPlate(AddStaticVehicle(523,-1591.50000000,705.50000000,-5.59999990,274.00000000,252,1), "HPV P01"); //HPV1000
608 SetVehicleNumberPlate(AddStaticVehicle(523,-1591.30004883,706.59997559,-5.59999990,274.00000000,252,1), "HPV P02"); //HPV1000
609 SetVehicleNumberPlate(AddStaticVehicle(523,-1591.09997559,707.59997559,-5.59999990,273.99902344,252,1), "HPV P03"); //HPV1000
610 SetVehicleNumberPlate(AddStaticVehicle(523,-1591.00000000,708.59997559,-5.59999990,273.99902344,252,1), "HPV P04"); //HPV1000
611 SetVehicleNumberPlate(AddStaticVehicle(523,-1590.90002441,709.50000000,-5.59999990,273.99902344,252,1), "HPV P05"); //HPV1000
612 SetVehicleNumberPlate(AddStaticVehicle(523,-1590.80004883,710.40002441,-5.59999990,273.99902344,252,1), "HPV P06"); //HPV1000
613 SetVehicleNumberPlate(AddStaticVehicle(523,-1590.69995117,711.40002441,-5.59999990,273.99902344,252,1), "HPV P07"); //HPV1000
614 SetVehicleNumberPlate(AddStaticVehicle(427,-1589.2213,682.6833,-5.1103,276.8503,252,1), "SFPD E01"); //Enforcer
615 SetVehicleNumberPlate(AddStaticVehicle(427,-1577.4479,689.9567,-5.1101,310.8936,252,1), "SFPD E02"); //Enforcer
616 SetVehicleNumberPlate(AddStaticVehicle(601,-1623.09997559,662.09997559,-5.30000019,92.00000000,252,1), "SWAT S01"); //S.W.A.T. Van
617 SetVehicleNumberPlate(AddStaticVehicle(601,-1622.90002441,658.40002441,-5.30000019,91.99951172,252,1), "SWAT S02"); //S.W.A.T. Van
618 SetVehicleNumberPlate(AddStaticVehicle(528,-1638.90002441,654.59997559,-5.09999990,270.00000000,252,1), "FBI T01"); //FBI Truck
619 SetVehicleNumberPlate(AddStaticVehicle(528,-1638.80004883,658.20001221,-5.09999990,270.00000000,252,1), "FBI T02"); //FBI Truck
620 SetVehicleNumberPlate(AddStaticVehicle(599,-1574.80004883,710.59997559,-4.90000010,90.00000000,252,1), "SAPD R01"); //Police Ranger
621 SetVehicleNumberPlate(AddStaticVehicle(599,-1574.90002441,714.29998779,-4.90000010,90.00000000,252,1), "SAPD R02"); //Police Ranger
622 SetVehicleNumberPlate(AddStaticVehicle(599,-1575.19995117,718.29998779,-4.90000010,90.00000000,252,1), "SAPD R03"); //Police Ranger
623 SetVehicleNumberPlate(AddStaticVehicle(599,-1575.00000000,726.20001221,-4.90000010,90.00000000,252,1), "SAPD R04"); //Police Ranger
624 SetVehicleNumberPlate(AddStaticVehicle(599,-1575.19995117,722.29998779,-4.90000010,90.00000000,252,1), "SAPD R05"); //Police Ranger
625 SetVehicleNumberPlate(AddStaticVehicle(597,-1584.50000000,748.00000000,-5.40000010,0.00000000,252,1), "SFPD P06"); //Police Car (SFPD)
626 SetVehicleNumberPlate(AddStaticVehicle(597,-1580.69995117,748.20001221,-5.40000010,0.00000000,252,1), "SFPD P07"); //Police Car (SFPD)
627 SetVehicleNumberPlate(AddStaticVehicle(597,-1588.50000000,747.90002441,-5.40000010,0.00000000,252,1), "SFPD P08"); //Police Car (SFPD)
628 SetVehicleNumberPlate(AddStaticVehicle(597,-1592.19995117,747.79998779,-5.40000010,0.00000000,252,1), "SFPD P09"); //Police Car (SFPD)
629 SetVehicleNumberPlate(AddStaticVehicle(597,-1595.80004883,747.90002441,-5.40000010,0.00000000,252,1), "SFPD P10"); //Police Car (SFPD)
630
631 /*SetVehicleNumberPlate(AddStaticVehicle(525,-1855.7843,140.2876,14.9974,331.0923,1,1), "MECA M01"); // debut meca
632 SetVehicleNumberPlate(AddStaticVehicle(525,-1849.7864,139.8622,14.9920,316.4363,1,1), "MECA M02"); //
633 SetVehicleNumberPlate(AddStaticVehicle(525,-1843.7338,139.5944,15.0290,310.1774,1,1), "MECA M03"); //
634 SetVehicleNumberPlate(AddStaticVehicle(525,-1840.4788,138.9799,14.9989,309.6508,1,1), "MECA M04"); //
635 SetVehicleNumberPlate(AddStaticVehicle(525,-1860.8400,129.9722,14.9966,2.1387,1,1), "MECA M05"); // fin meca*/
636
637 AddStaticVehicle(595,-2223.2908,2398.8523,0.2116,44.5815,0,0); // Bateau La Rocca
638 AddStaticVehicle(484,-2203.4514,2419.5078,0.1657,42.9961,0,0); // Bateau rocca
639
640 AddSPU(2, -2012.5632,133.4649,27.4518,0.7342, 0, 0, 0); //DEBUT UNDERCOVER
641 AddSPU(2,-1632.8729,693.4904,-5.4731,179.1609, 0, 0, 0); // undercoverdebut
642 AddSPU(28,-1628.5006,693.3505,-5.4743,181.6391, 0, 0, 0); //
643 AddSPU(29,-1624.3251,693.1818,-5.4715,180.3906, 0, 0, 0); //
644 AddSPU(10,-1620.1672,693.2610,-5.4742,180.8625, 0, 0, 0); //
645 AddSPU(10,-1616.3621,692.7872,-5.4742,178.2605, 0, 0, 0); //
646 AddSPU(10,-1574.7164,706.0988,-5.4731,89.0098, 0, 0, 0); // rancher undercover
647 AddSPU(9,-1574.4487,734.5341,-5.4743,90.4713, 0, 0, 0); // undercover
648 AddSPU(31,-1606.3527,723.2231,11.8223,270.1633, 0, 0, 0); // sultan undercov
649
650 AddSPU(21,-1855.7843,140.2876,14.9974,331.0923,1,1,0); // debut meca
651 AddSPU(21,-1849.7864,139.8622,14.9920,316.4363,1,1,0); //
652 AddSPU(21,-1843.7338,139.5944,15.0290,310.1774,1,1,0); //
653 AddSPU(21,-1840.4788,138.9799,14.9989,309.6508,1,1,0); //
654 AddSPU(21,-1860.8400,129.9722,14.9966,2.1387,1,1,0); // fin meca
655
656 for (new vid; vid < 2000; vid++)
657 {
658 if (CallRemoteFunction("Housing_IsVehicleOwned", "i", vid) == 1)
659 {
660 }
661 else //Le véhicule n'appartient pas au script de housing(il est créé et géré par un autre script), réglez le carburant au maximum
662 AVehicleData[vid][Fuel] = MaxFuel;
663 }
664
665 // Ajouter les stations services
666 AddRefuelPickup(-1471.5, 1863.75, 32.7);
667 AddRefuelPickup(-1326.5, 2677.5, 50.1);
668 AddRefuelPickup(611.5, 1694.5, 7.0);
669 AddRefuelPickup(-2249.25, -2559.0, 32.0);
670 AddRefuelPickup(-1606.5, -2714.0, 48.6);
671 AddRefuelPickup(-93.5, -1175.0, 2.3);
672 AddRefuelPickup(1377.5, 457.0, 19.9);
673 AddRefuelPickup(651.5, -565.5, 16.4);
674 AddRefuelPickup(-1675.75, 412.75, 7.2);
675 AddRefuelPickup(-2405.50, 976.25, 45.3);
676 AddRefuelPickup(-1131.75, -204.25, 14.2);
677 AddRefuelPickup(66.50, 1220.50, 18.9);
678 AddRefuelPickup(350.50, 2537.50, 16.8);
679 AddRefuelPickup(2147.00, 2747.75, 10.9);
680 AddRefuelPickup(2639.75, 1106.00, 10.9);
681 AddRefuelPickup(2115.00, 920.00, 10.9);
682 AddRefuelPickup(2202.00, 2475.00, 10.9);
683 AddRefuelPickup(1596.50, 2199.75, 10.9);
684 AddRefuelPickup(1584.25, 1448.25, 10.9);
685 AddRefuelPickup(1004.25, -940.50, 42.2);
686 AddRefuelPickup(1935.00, -1772.75, 13.4);
687 AddRefuelPickup(-1284.9802,1.7317,13.7214);
688 AddRefuelPickup(-1284.9802,1.7317,13.7214);
689 AddRefuelPickup(-1853.1355,117.3529,15.0696);
690 AddRefuelPickup(-1682.7299,419.5684,7.0434);
691
692 // Load all speedcamera's
693 CameraFile_Load();
694
695
696 //DEBUT MAPPING
697 #if defined COB
698 format(FORMAT, sizeof(FORMAT), "CreateObject");
699 #endif
700 #if defined CDO
701 format(FORMAT, sizeof(FORMAT), "CreateDynamicObject");
702 #endif
703 #if defined FCO
704 format(FORMAT, sizeof(FORMAT), "F_CreateObject");
705 #endif
706 //mysql_debug(1);
707 mysql_connect(mysql_host, mysql_user, mysql_database, mysql_password);
708 SetTimer("Emload", 10000, true);
709 new query[75];
710 format(query, sizeof(query), "SELECT * FROM `%s`", FORMAT);
711 mysql_query(query);
712 mysql_store_result();
713 while(mysql_fetch_row(row2))
714 {
715 #if defined COB
716 Obcount = FindFirstFreeSlot();
717 sscanf(row2, "p<|>dfffffffds[100]dd", Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5], Floats[6], Var[1], refstr, AID[Obcount], Var[2]);
718 OBID[Obcount] = CreateObject(Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5], Floats[6]);
719 #endif
720 #if defined CDO // This is so if you don't have the include it won't chuck errors at you.
721 Obcount = FindFirstFreeSlot();
722 sscanf(row2, "p<|>dffffffdddfds[100]dd", Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5], Var[1], Var[2], Var[3], Floats[6], Var[4], refstr, AID[Obcount], Var[5]);
723 OBID[Obcount] = CreateDynamicObject(Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5], Var[1], Var[2], Var[3], Floats[6]);
724 #endif
725 #if defined FCO // This is so if you don't have the include it won't chuck errors at you.
726 Obcount = FindFirstFreeSlot();
727 sscanf(row2, "p<|>dffffffds[100]dd", Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5], Var[1], refstr, AID[Obcount], Var[2]);
728 OBID[Obcount] = F_CreateObject(Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5]);
729 #endif
730 }
731 format(query, sizeof(query), "UPDATE `%s` SET `immediate` = 0 WHERE `immediate` = 1", FORMAT);
732 mysql_query(query);
733 mysql_free_result();
734 //FIN MAPPING
735
736 //================================================================//
737 // Connexion à MYSQL + Création variables //
738 //================================================================//
739
740 mysql_connect(mysql_host, mysql_user, mysql_database, mysql_password);
741 mysql_query("CREATE TABLE IF NOT EXISTS joueurs(nom VARCHAR(24), pass VARCHAR(41), email VARCHAR(41), actif INT(20), score INT(20), argent INT(20), IP VARCHAR(16), XPOS FLOAT, skin VARCHAR(10), faction INT(20), rang INT(20), prison INT(20), morts INT(20), bidon VARCHAR(20))");
742 mysql_query("CREATE TABLE IF NOT EXISTS banque(nom VARCHAR(24), argent INT(20), emprunt INT(20), interets INT(20))");
743 //Champs:
744 //Nom - Usage - Type
745 //nom- Prenom_Nom - String
746 //pass- Mot de passe - String
747 //score - Niveau du joueur - int
748 //argent - Argent du joueur - int
749 //IP - Adresse ip du joueur - int
750 //FIN SQL
751 /*new query[300], pname[24], savingstring[20];
752 GetPlayerName(playerid, pname, 24);
753 format(query, sizeof(query), "SELECT skin FROM joueurs WHERE nom = '%s'", pname);
754 //On sélectionne uniquement la variable qu'on veut utiliser.
755 mysql_query(query); //
756 mysql_store_result(); //Garder le résultat car il est selctionné.
757 while(mysql_fetch_row_format(query,"|"))
758 {
759 mysql_fetch_field_row(savingstring, "skin");
760 if(strval(savingstring) == 0){
761 new Text:Skind = strval(savingstring);
762 AddPlayerClass(Text:Skind, -1968.6528,113.3424,27.6875, 269.15, 26, 36, 28, 150, 0, 0);
763 SAUVEGARDE DU SKIN
764 new req[200];
765 format(req, sizeof(req), "UPDATE joueurs SET skin=%d WHERE nom='%s'", Skinhasard, pname);
766 mysql_query(req);
767 // FIN SAUVEGARDE
768 }
769 else if(strval(savingstring) != 0){
770 AddPlayerClass(0, -1968.6528,113.3424,27.6875, 269.15, 26, 36, 28, 150, 0, 0);
771 }
772
773 }
774 mysql_free_result(); //Libération du résultat stocké*/
775 mysql_debug(1);
776
777 return 1;
778}
779
780forward Emload();
781public Emload()
782{
783 if(Stopload) return 1;
784 new query[75];
785 format(query, sizeof(query), "SELECT * FROM `%s` WHERE `immediate` = 1", FORMAT);
786 mysql_query(query);
787 mysql_store_result();
788 while(mysql_fetch_row(row2))
789 {
790 #if defined COB
791 Obcount = FindFirstFreeSlot();
792 sscanf(row2, "p<|>dfffffffds[100]dd", Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5], Floats[6], Var[1], refstr, AID[Obcount], Var[2]);
793 OBID[Obcount] = CreateObject(Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5], Floats[6]);
794 #endif
795 #if defined CDO // This is so if you don't have the include it won't chuck errors at you.
796 Obcount = FindFirstFreeSlot();
797 sscanf(row2, "p<|>dffffffdddfds[100]dd", Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5], Var[1], Var[2], Var[3], Floats[6], Var[4], refstr, AID[Obcount], Var[5]);
798 OBID[Obcount] = CreateDynamicObject(Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5], Var[1], Var[2], Var[3], Floats[6]);
799 #endif
800 #if defined FCO // This is so if you don't have the include it won't chuck errors at you.
801 Obcount = FindFirstFreeSlot();
802 sscanf(row2, "p<|>dffffffds[100]dd", Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5], Var[1], refstr, AID[Obcount], Var[2]);
803 OBID[Obcount] = F_CreateObject(Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5]);
804 #endif
805 }
806 mysql_free_result();
807 format(query, sizeof(query), "UPDATE `%s` SET `immediate` = 0 WHERE `immediate` = 1", FORMAT);
808 mysql_query(query);
809 //=========================================================================
810 format(query, sizeof(query), "SELECT * FROM %s WHERE deleted = 1", FORMAT);
811 mysql_query(query);
812 mysql_store_result();
813 new intt;
814 new p = mysql_num_rows();
815 if(p > 0)
816 {
817 for(new x; x<p; x++)
818 {
819 format(query, sizeof(query), "SELECT id FROM %s WHERE deleted = 1", FORMAT);
820 mysql_query(query);
821 mysql_store_result();
822 new aid = mysql_fetch_int();
823 for(new ZZ; ZZ<MAX_LOAD_OBJECTS; ZZ++)
824 {
825 if(AID[ZZ] == aid)
826 {
827 #if defined COB
828 DestroyObject(ZZ);
829 #endif
830
831 #if defined CDO
832 DestroyDynamicObject(ZZ);
833 #endif
834
835 #if defined FCO
836 F_DestroyObject(ZZ);
837 #endif
838 AID[ZZ] = 0;
839 OBID[ZZ] = 0;
840 intt = ZZ;
841 break;
842 }
843 }
844 format(query, sizeof(query), "DELETE FROM %s WHERE deleted = 1 AND id = %d", FORMAT, aid);
845 mysql_query(query);
846 mysql_free_result();
847 }
848 }
849 #if defined COB
850 DestroyObject(intt+1);
851 #endif
852 #if defined CDO
853 DestroyDynamicObject(intt+1);
854 #endif
855 #if defined FCO
856 F_DestroyObject(intt+1);
857 #endif
858 return 1;
859}
860
861public OnGameModeExit()
862{
863 for(new i = 0; i < MAX_BUYABLE_VEH; ++i) DestroyVehicle(i);
864 return 1;
865}
866
867public OnPlayerRequestClass(playerid, classid)
868{
869 //SetPlayer(playerid,1);
870 SetPlayerPos(playerid, -2026.4872,96.6347,40.5084);
871 SetPlayerCameraPos(playerid, -2026.4872,96.6347,40.5084);
872 SetPlayerCameraLookAt(playerid, -2026.4872,96.6347,40.5084);
873 return 1;
874}
875
876new IsRegistered[MAX_PLAYERS];
877new MoneyGiven[MAX_PLAYERS];
878
879
880public OnPlayerConnect(playerid)
881{
882 Speedometer_Setup(playerid);
883 Muted{playerid} = false;
884 ChatState{playerid} = 0;
885 Demarrage[playerid] = 1;
886 Locatype[playerid] = 0;
887 MoneyGiven[playerid] = -1; //Reset de la variable
888 SetPlayerColor(playerid, COLOR_GREY);
889 new query[200], pname[24]; //Creation de nos variables.
890 GetPlayerName(playerid, pname, 24); //Recuperation du pseudo
891 format(query, sizeof(query), "SELECT IP FROM `joueurs` WHERE nom = '%s' LIMIT 1", pname); //Formats the query, view above the code for a explanation
892 mysql_query(query); //Fonction de recherche pour interroger la chaine
893 mysql_store_result(); //Sauvegarde du résultat
894 new rows = mysql_num_rows(); //Nombre de ligne reçues de la requête.
895 if(!rows)
896 {
897 //Si = 0. personne n'a ce pseudo dans la bdd
898 //donc : formulaire d'inscription
899 ShowPlayerDialog(playerid, 15000, DIALOG_STYLE_INPUT, "Enregistrement","{FFFFFF}Vous n'avez {FF0000}pas{FFFFFF} de titre de séjour! Merci de signer ci-dessous!","Signer","Partir"); //Boite de dialogue.
900 }
901 if(rows == 1)
902 {
903 //Si = 1. Joueur trouvé
904 //On peut lancer la procédure de login
905 //Et vérifier que l'ip actuelle est la même que dans la bdd
906 new IP[2][16]; //variable à deux string IP, une pour récupérer le champ mysql et un pour GetPlayerIP.
907 mysql_fetch_field_row(IP[0],"IP");
908 GetPlayerIp(playerid, IP[1], 16);
909 if(strlen(IP[0]) != 0 && !strcmp(IP[0], IP[1], true)) //Verifier que l'ip a une valeur et que ce seont les mêmes
910 {
911 MySQL_Login(playerid);
912 IsRegistered[playerid] = 1;
913 }
914 else if(!strlen(IP[0]) || strcmp(IP[0], IP[1], true))
915 {
916 ShowPlayerDialog(playerid, 15500, DIALOG_STYLE_INPUT, "Immigration","{00CC33}Vous disposez d'un titre de séjour valide! \n {FFFFFF} Merci de signer ci-dessous!","Signer","Partir"); //Boite de dialogue.
917 IsRegistered[playerid] = 1; //Sets the registered variable to 1 (Shows that the player is registered).
918 }
919 }
920 mysql_free_result();
921 //Libération des resultats pour l'usage mémoire
922
923 new string[128], ppName[MAX_PLAYER_NAME];
924 GetPlayerName(playerid, ppName, MAX_PLAYER_NAME);
925 //MESSAGE BIENVENUE
926 format(string, 128, "%s vient de passer la frontière!", ppName);
927 SendClientMessageToAll(COLOR_GREY, string);
928 // FIN MESSAGE
929 if(IsPlayerNPC(playerid))
930 {
931 return 1;
932 }
933 if(strfind(ppName, "_", true) == -1)
934 {
935 format(string, 128, ".:: %s a été exclu de la ville! Raison: Nom incorrect! Prenom_Nom ::.", ppName);
936 SendClientMessageToAll(0xAA3333AA, string);
937 Kick(playerid);
938 return 1;
939 } else {
940 for(new i; i <= strlen(ppName); i++)
941 {
942 for(new j; j <= 9; j++)
943 {
944 if(ppName[i] == j)
945 {
946 format(string, 128, ".:: a été exclu de la ville! Raison: Nom incorrect! Prenom_Nom::.", ppName);
947 SendClientMessageToAll(0xAA3333AA, string);
948 Kick(playerid);
949 return 1;
950 }
951 }
952 for(new j; j <= sizeof(symbols); j++)
953 {
954 if(ppName[i] == symbols[j])
955 {
956 format(string, 128, ".:: %s a été exclu de la ville! Raison: Nom incorrect! Prenom_Nom ::.", ppName);
957 SendClientMessageToAll(0xAA3333AA, string);
958 Kick(playerid);
959 return 1;
960 }
961 }
962 if(i >= 1)
963 {
964 if(Big == true)
965 {
966 Big = false;
967 continue;
968 }
969 if(ppName[i] == '_')
970 {
971 Big = true;
972 continue;
973 }
974 for(new j; j <= sizeof(abc); j++)
975 {
976 if(ppName[i] == abc[j])
977 {
978 format(string, 128, ".:: %s a été exclu de la ville! Raison: Nom incorrect! Prenom_Nom ::.", ppName);
979 SendClientMessageToAll(0xAA3333AA, string);
980 Kick(playerid);
981 return 1;
982 }
983 }
984 }
985 }
986 }
987 SetPVarInt(playerid, "Renting", 0);
988 SetPVarInt(playerid, "CarRentID", 0);
989 return 1;
990}
991
992
993public OnPlayerDisconnect(playerid, reason)
994{
995 if(Logged[playerid] == 1)
996 {
997 new score = GetPlayerScore(playerid); //Recupère le score
998 new argent = GetPlayerMoney(playerid); //Recupère l'argent
999 new skin = Skin[playerid]; //Recupère le skin
1000 new actif = Tuto[playerid]; //Recupère le skin
1001 new ebidon = Bidon[playerid];
1002 new query[200], query2[200], pname[24]; //Créé la variable
1003 GetPlayerName(playerid, pname, 24); //Recupération du nom du joueur.
1004 format(query, sizeof(query), "UPDATE joueurs SET score=%d, argent=%d, skin=%d, actif=%d, bidon=%d WHERE nom='%s'", score, argent, skin, actif, ebidon, pname);
1005 mysql_query(query);
1006 new Float:x, Float:y, Float:z;
1007 new XPOSV = GetPlayerPos(playerid, x, y, z);
1008 format(query2, sizeof(query2), "UPDATE joueurs SET XPOS=%d WHERE nom='%s'", XPOSV, pname);
1009 mysql_query(query2);
1010 //Pas besoin de stocker pour mà j
1011 }
1012 if (GetPVarInt(playerid, "Renting") == 1){
1013 IsRented[GetPVarInt(playerid, "CarRentID")] = 0,
1014 SetVehicleToRespawn(GetPVarInt(playerid, "CarRentID"));
1015 DeletePVar(playerid, "Renting");
1016 DeletePVar(playerid, "CarRentID");
1017 Speedometer_Cleanup(playerid);
1018 }
1019 if (IsTowTrucker[playerid]==1){
1020 IsTowTrucker[playerid]=0;
1021 TowTruckers--;
1022 }
1023 return 1;
1024}
1025
1026public OnPlayerSpawn(playerid)
1027{
1028 AntiDeAMX();
1029 SetPlayerColor(playerid, 0xFFFFFFFF);
1030 SetWeather(2);
1031 Demarrage[playerid] = 1;
1032 Flash[playerid] = 0;
1033 Service[playerid] = 0;
1034 Modeleveh[playerid] = 0;
1035 Motard[playerid] = 0;
1036
1037 if(MoneyGiven[playerid] != -1)
1038 {
1039 GivePlayerMoney(playerid, MoneyGiven[playerid]);
1040 MoneyGiven[playerid] = -1;
1041 }
1042 //Donne l'argent au joueur, si pas reçu
1043
1044 //VERIF DU TUTO
1045 if(Tuto[playerid] != 1 && Faction[playerid] == 0)
1046 {
1047 GivePlayerMoney(playerid, 50000);
1048 Etapetuto[playerid] = 0;
1049 SetPlayerPos(playerid, 1.4263,25.1052,1199.5938);
1050 SendClientMessage(playerid, COLOR_LIGHTRED, "VOL SF2772 - La Police vous place en état d'arrestation jusqu'à atterrissage de l'appareil!");
1051 //SendClientMessage(playerid, COLOR_LIGHTRED, "VOL SF2772 - Votre procédure de relachement est en cours!");
1052 TogglePlayerControllable(playerid, 0);
1053 SetCameraBehindPlayer(playerid);
1054 SetPlayerInterior(playerid, 1);
1055 //SetTimer("Tutoriel", 3000, false);
1056 SetTimerEx("Tutoriel", 2500, false, "d", playerid);
1057 }
1058 else if(Tuto[playerid] == 1 && Faction[playerid] == 0)
1059 {
1060 SetPlayerPos(playerid, 1.4263,25.1052,1199.5938);
1061 //SendClientMessage(playerid, COLOR_LIGHTRED, "VOL SF2772 - Votre procédure de relachement est en cours!");
1062 SetPlayerInterior(playerid, 0);
1063 Etapetuto[playerid] = -1;
1064 }
1065
1066 if(Tuto[playerid] == 1 ) // CIVIL
1067 {
1068 SetPlayerPos(playerid, -1968.6528,113.3424,27.6875); //SPAWN SF
1069 }
1070 /*else if(Faction[playerid] == 1) //POLICE
1071 {
1072 SendClientMessage(playerid, COLOR_LIGHTBLUE, "Bienvenue à la police de San Fierro!");
1073 SetPlayerPos(playerid, 229.1644,127.0122,1010.2188);
1074 SetPlayerInterior(playerid, 10);
1075 }*/
1076
1077 // SYSTEME DE SKIN
1078 new Skinhasard = random(29);
1079 if(Skin[playerid] == 0 && Tuto[playerid] == 1)
1080 {
1081 SetPlayerSkin(playerid, Skinhasard);
1082 Skin[playerid] = Skinhasard;
1083 new string[128];
1084 new pname[24]; //Creation de nos variables.
1085 GetPlayerName(playerid, pname, 24); //Recuperation du pseudo
1086 format(string, 128, "Voici des habits propres pour votre nouvelle vie! Bienvenue à San Fierro %s", pname);
1087 SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
1088 }
1089 else if(Skin[playerid] != 0)
1090 {
1091 SetPlayerSkin(playerid, Skin[playerid]);
1092 Skin[playerid] = Skin[playerid];
1093 //SendClientMessage(playerid, -1, "Skin récupéré!");
1094 }
1095
1096 //FIN SYSTEME SKIN
1097 return 1;
1098}
1099
1100public OnPlayerDeath(playerid, killerid, reason)
1101{
1102 return 1;
1103}
1104
1105public OnVehicleSpawn(vehicleid)
1106{
1107 if (CallRemoteFunction("Housing_IsVehicleOwned", "i", vehicleid) == 1)
1108 {
1109 // Si géré par le systeme housing
1110 }
1111 else // Si géré par autre systeme
1112 AVehicleData[vehicleid][Fuel] = MaxFuel;
1113 return 1;
1114}
1115
1116public Tutoriel(playerid)
1117{
1118 new pname[24], string[128]; //Creation de nos variables.
1119 GetPlayerName(playerid, pname, 24); //Recuperation du pseudo
1120 if(Etapetuto[playerid] == 0)
1121 {
1122 format(string, 128, "-------------------DOSSIER DE %s----------------------", pname);
1123 SendClientMessage(playerid, COLOR_YELLOW, string);
1124 format(string, 128, "Motif d'accusation : Tentative de fraude (pas de billet d'avion)");
1125 SendClientMessage(playerid,COLOR_WHITE, string);
1126 format(string, 128, "Sanction encourue : Sensibilisation et remise en liberté sous caution");
1127 SendClientMessage(playerid,COLOR_WHITE, string);
1128 format(string, 128, "Classification de la fraude : niveau 5 (vol international à risque)");
1129 SendClientMessage(playerid,COLOR_WHITE, string);
1130 format(string, 128, "----------------------------------------------------------------------------");
1131 SendClientMessage(playerid,COLOR_YELLOW, string);
1132 SetTimerEx("Tutoriel", 18000, false, "d", playerid);
1133 Etapetuto[playerid] = 1;
1134 }
1135 else if(Etapetuto[playerid] == 1)
1136 {
1137 format(string, 128, "---------------------------SENSIBILISATION----------------------------");
1138 SendClientMessage(playerid,COLOR_YELLOW, string);
1139 format(string, 128, "Bonjour %s, je suis la personne chargée de vous éduquer en vue de votre remise en liberté.", pname);
1140 SendClientMessage(playerid,COLOR_WHITE, string);
1141 format(string, 128, "Avant de retrouver votre liberté vous allez devoir écouter ce que j'ai à vous dire.");
1142 SendClientMessage(playerid,COLOR_WHITE, string);
1143 format(string, 128, "Commençons par San Fierro! Le juge y a demandé votre extradition.");
1144 SendClientMessage(playerid,COLOR_WHITE, string);
1145 format(string, 128, "Vous allez donc y être conduis dès l'atterrissage de l'appareil par voie ferroviaire.");
1146 SendClientMessage(playerid,COLOR_WHITE, string);
1147 format(string, 128, "Une fois arrivé, il vous suffira d'appeler un taxi pour vous déplacer, ou de louer un vélo ou scooter.");
1148 SendClientMessage(playerid,COLOR_WHITE, string);
1149 format(string, 128, "Pensez à vous trouver un job ou un vrai travail, afin de subvenir à vos besoin (nourriture, permis, maison).");
1150 SendClientMessage(playerid,COLOR_WHITE, string);
1151 format(string, 128, "Vous commencez une nouvelle vie, soyez courageux, et n'oubliez pas que le travail paye, le crime non.");
1152 SendClientMessage(playerid,COLOR_WHITE, string);
1153 format(string, 128, "----------------------------------------------------------------------------");
1154 SendClientMessage(playerid,COLOR_YELLOW, string);
1155 SetTimerEx("Tutoriel", 18000, false, "d", playerid);
1156 Etapetuto[playerid] = 2;
1157 }
1158 else if(Etapetuto[playerid] == 2)
1159 {
1160 format(string, 128, "---------------------------REMISE EN LIBERTE--------------------------------");
1161 SendClientMessage(playerid,COLOR_YELLOW, string);
1162 format(string, 128, "%s nous voilà arrivé, vous allez être conduis à la gare de San Fierro.", pname);
1163 SendClientMessage(playerid,COLOR_WHITE, string);
1164 format(string, 128, "Courage, et bonne chance.");
1165 SendClientMessage(playerid,COLOR_WHITE, string);
1166 format(string, 128, "----------------------------------------------------------------------------");
1167 SendClientMessage(playerid,COLOR_YELLOW, string);
1168 SetTimerEx("Tutoriel", 18000, false, "d", playerid);
1169 Etapetuto[playerid] = 3;
1170 }
1171 else if(Etapetuto[playerid] == 3)
1172 {
1173 SendClientMessage(playerid,COLOR_GREY, string);
1174 format(string, 128, "Vous revoilà maintenant en liberté! A vous de faire vos preuves %s.", pname);
1175 SendClientMessage(playerid,COLOR_WHITE, string);
1176 format(string, 128, "La caution de libération s'élève à 45000$");
1177 SendClientMessage(playerid,COLOR_LIGHTRED, string);
1178 TogglePlayerControllable(playerid, 1);
1179 SetCameraBehindPlayer(playerid);
1180 SetPlayerInterior(playerid, 0);
1181 GivePlayerMoney(playerid, -45000);
1182 Tuto[playerid] = 1;
1183 SetTimerEx("OnPlayerSpawn", 100, false, "d", playerid);
1184 }
1185 return 1;
1186}
1187
1188public OnVehicleDeath(vehicleid, killerid)
1189{
1190 if(OwnedVeh(vehicleid) != 0)
1191 {
1192 new
1193 vCreated = OwnedVeh(vehicleid);
1194
1195 DestroyVehicle(vehicleid);
1196
1197 new
1198 NewVeh = CreateVehicle(vInfo[vCreated][vModel], vInfo[vCreated][vPosX], vInfo[vCreated][vPosY], vInfo[vCreated][vPosZ], vInfo[vCreated][vPosA], vInfo[vCreated][vColor1], vInfo[vCreated][vColor2], 500000);
1199 SetVehicleNumberPlate(NewVeh, vInfo[vCreated][vPlate]);
1200 ChangeVehiclePaintjob(NewVeh, vInfo[vCreated][vPaintJ]);
1201
1202 for(new iMod = 0; iMod < MAX_VEH_MODS; ++iMod)
1203 {
1204 if(vMods[vCreated][iMod] > 0)
1205 {
1206 AddVehicleComponent(NewVeh, vMods[vCreated][iMod]);
1207 }
1208 }
1209
1210 printf("=- Vehicule id: %i a ete recree -=", vCreated);
1211 }
1212 new vID = GetPlayerVehicleID(killerid);
1213 if (IsRentedCar(vID) && Locatype[killerid] == 462)
1214 {
1215 SendClientMessage(killerid, COLOR_LIGHTRED, "La caution de 1500$ du véhicule a été encaissée suite aux dommages subis.");
1216 GivePlayerMoney(killerid, -1500);
1217 }
1218 return 1;
1219}
1220
1221public OnPlayerText(playerid, text[])
1222{
1223 switch(ChatState{playerid})
1224 {
1225 case 0:
1226 {
1227 CostumFormat(SCSString,"%s: %s",GetPlayerNameEx(playerid),text);
1228 SCGeneral(playerid,SCSString,5,7,10,13,15,SWhite,SChat1,SChat2,SChat3,SChat4);
1229 }
1230 case 1:
1231 {
1232 CostumFormat(SCSString,"[Chuchotement]%s: %s",GetPlayerNameEx(playerid),text);
1233 SCGeneral(playerid,text,2,4,6,8,10,COLOR_GREY,SChat1,SChat2,SChat3,SChat4);
1234 }
1235 case 2:
1236 {
1237 CostumFormat(SCSString,"[Crie]%s: %s",GetPlayerNameEx(playerid),text);
1238 SCGeneral(playerid,text,15,20,25,30,35,SWhite,SChat1,SChat2,SChat3,SChat4);
1239 }
1240 }
1241 SCAnim(playerid,text,at);
1242 return 1;
1243}
1244
1245public OnPlayerCommandText(playerid, cmdtext[])
1246{
1247 return 0;
1248}
1249
1250public BreakHouseLock(houseid, playerid, time)
1251{
1252 time--;
1253 if(time == 0)
1254 {
1255 SendClientMessage(playerid, COLOR_WHITE, "Vous avez crocheté la serrure!");
1256 ClearAnimations(playerid);
1257 HD[houseid][locked] = 0;
1258 HD[houseid][locklevel] = 0;
1259 if(breakingLock[playerid]) { breakingLock[playerid] = false; }
1260 TogglePlayerControllable(playerid, 1);
1261 }
1262 else
1263 {
1264 new string[128];
1265 if(!breakingLock[playerid]) { breakingLock[playerid] = true; }
1266 format(string, sizeof(string), "~w~Crochetage~n~~r~%d ~w~secondes restantes", time);
1267 GameTextForPlayer(playerid, string, 900, 4);
1268 housetimer = SetTimerEx("BreakHouseLock", 1000, false, "did", houseid, playerid, time);
1269 }
1270}
1271
1272
1273public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
1274{
1275 new vid = GetPlayerVehicleID(playerid);
1276 Locatype[playerid] = GetVehicleModel(vehicleid);
1277 Modeleveh[playerid] = GetVehicleModel(vehicleid);
1278 if(Modeleveh[playerid] == 525 && Faction[playerid] == 2 && Service[playerid] == 0){
1279 SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour vous mettre en service faites /service");
1280 }
1281 else if(Modeleveh[playerid] == 525 && Faction[playerid] != 2){
1282 RemovePlayerFromVehicle(playerid);
1283 SendClientMessage(playerid, COLOR_GREY, "Vous n'êtes pas mécanicien (/sortir)");
1284 }
1285 else if(Modeleveh[playerid] == 525 && Faction[playerid] == 2 && Service[playerid] == 1){
1286 SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous êtes en service!");
1287 }
1288 else if(Modeleveh[playerid] == 523 && Faction[playerid] == 1 && Service[playerid] == 1){
1289 Motard[playerid] = 1;
1290 SetPlayerSkin(playerid, 284);
1291 SendClientMessage(playerid, COLOR_LIGHTRED, "N'oubliez pas votre équipement de moto (/moto)!");
1292 }
1293 if(AVehicleData[vid][Fuel] == 0){SendClientMessage(playerid, COLOR_GREY, "Vous n'avez plus d'essence! Procurez vous un bidon ou appelez un mécanicien (/remorquage)");}
1294 return 1;
1295}
1296
1297public OnPlayerExitVehicle(playerid, vehicleid)
1298{
1299 new engine, lights, alarm, doors, bonnet, boot, objective;
1300 Modeleveh[playerid] = GetVehicleModel(vehicleid);
1301 if (GetPlayerVehicleSeat(playerid) == 0)
1302 {
1303 // Arreter moteur et lumiere
1304 GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
1305 SetVehicleParamsEx(vehicleid, 0, 0, alarm, doors, bonnet, boot, objective);
1306 }
1307 TogglePlayerControllable(playerid, 1);
1308 Demarrage[playerid] = 1;
1309 return 1;
1310}
1311
1312public OnPlayerStateChange(playerid, newstate, oldstate)
1313{
1314new vehicleid = GetPlayerVehicleID(playerid);
1315
1316if((newstate==PLAYER_STATE_ONFOOT)&&(IsTowTrucker[playerid]==1)){
1317 IsTowTrucker[playerid]=0;
1318 TowTruckers--;
1319 }
1320if((newstate==PLAYER_STATE_PASSENGER)&&(TowTruckers>0)){
1321 SendClientMessage(playerid,0xFFFF00AA,"If you have a problem with your car, use /TowMe to call a TowTruker");
1322 }
1323
1324if(newstate == PLAYER_STATE_DRIVER)
1325 {
1326 new engine, lights, alarm, doors, bonnet, boot, objective;
1327 if (AVehicleData[vehicleid][Fuel] > 0)
1328 {
1329 // Start the engine and turn on the lights
1330 GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
1331 SetVehicleParamsEx(vehicleid, 1, 1, alarm, doors, bonnet, boot, objective);
1332 }
1333 if(vehEngine[vehicleid] == 0 && Demarrage[playerid] == 1)
1334 {
1335 TogglePlayerControllable(playerid, 0);
1336 SendClientMessage(playerid, COLOR_GREY, "Moteur du véhicule éteint.");
1337 SendClientMessage(playerid, COLOR_YELLOW, "Utilisez la touche shift pour démarrer ou faites /moteur");
1338 }
1339 else if(vehEngine[vehicleid] == 1 && Demarrage[playerid] == 1)
1340 {
1341 TogglePlayerControllable(playerid, 1);
1342 SendClientMessage(playerid, COLOR_GREY, "Moteur déjà allumé.");
1343 }
1344 if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 525)
1345 {
1346 IsTowTrucker[playerid]=1;
1347 TowTruckers++;
1348 SendClientMessage(playerid, COLOR_PURPLE,"Utilisez la touche CTRL pour remorquer un véhicule");
1349 }
1350 else
1351 {
1352 if(TowTruckers>0){
1353 SendClientMessage(playerid,COLOR_GREY,"En cas de problème avec votre voiture appellez un mécanicien /remorquage");
1354 }
1355 }
1356 }
1357if (newstate == 2)
1358 {
1359 if (oldstate == 1)
1360 {
1361 new vID = GetPlayerVehicleID(playerid);
1362 new string[128];
1363 if (IsRentableCar(vID))
1364 {
1365 if (!IsRentedCar(vID) && Locatype[playerid] == 462)
1366 {
1367 Demarrage[playerid] = 0;
1368 Prixloca[playerid] = 500;
1369 format(string, sizeof(string), "Ceci est un Faggio de location! Le prix est de %d$", Prixloca[playerid]);
1370 SendClientMessage(playerid, COLOR_YELLOW, string);
1371 SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour louer faites /louer sinon faites /rsortir");
1372 TogglePlayerControllable(playerid, 0);
1373 }
1374 if (!IsRentedCar(vID) && Locatype[playerid] == 510 || !IsRentedCar(vID) && Locatype[playerid] == 509)
1375 {
1376 Prixloca[playerid] = 100;
1377 format(string, sizeof(string), "Ceci est un vélo de location! Le prix est de %d$", Prixloca[playerid]);
1378 SendClientMessage(playerid, COLOR_YELLOW, string);
1379 SendClientMessage(playerid, COLOR_LIGHTBLUE, "Pour louer faites /louer sinon faites /rsortir");
1380 TogglePlayerControllable(playerid, 0);
1381 }
1382 else if (IsRentedCar(vID))
1383 {
1384 if (GetPVarInt(playerid, "CarRentID") == vID)
1385 {
1386 SendClientMessage(playerid, COLOR_GREEN, "Merci d'avoir loué ce véhicule.");
1387 Demarrage[playerid] = 1;
1388
1389 }
1390 else if (GetPVarInt(playerid, "CarRentID") != vID)
1391 {
1392 format(string, sizeof(string), "Ce véhicule est loué par %s", RentedBy[vID]);
1393 SendClientMessage(playerid, COLOR_LIGHTRED, string);
1394 SendClientMessage(playerid, COLOR_GREY, "/rsortir pour quitter le véhicule");
1395 return 1;
1396 }
1397 }
1398 }
1399 }
1400 }
1401if(newstate == PLAYER_STATE_DRIVER)
1402 {
1403 new
1404 iVehicleID = GetPlayerVehicleID(playerid),
1405 iMsg[120];
1406
1407 if(OwnedVeh(iVehicleID) != 0)
1408 {
1409 if(strmatch(vInfo[OwnedVeh(iVehicleID)][vOwner], "Personne"))
1410 {
1411 Demarrage[playerid] = 0;
1412 if(strmatch(vInfo[OwnedVeh(iVehicleID)][vOwner], "Personne"))
1413 {
1414 format(iMsg, sizeof(iMsg), ""#CBLUE"Ce véhicule est en vente au prix de: "#CDGREEN"%i$", vInfo[OwnedVeh(iVehicleID)][vPrice]);
1415 SendClientMessage(playerid, -1, iMsg);
1416 SendClientMessage(playerid, COLOR_GREY, "Tapez /vachat pour acheter ce véhicule. Sinon faites /sortir!");
1417 TogglePlayerControllable(playerid, false);
1418 }
1419 }
1420 else if(strmatch(vInfo[OwnedVeh(iVehicleID)][vOwner], pName(playerid)))
1421 {
1422 format(iMsg, sizeof(iMsg), ""#CBLUE"Bonjour "#CDGREEN"%s(%d)! "#CBLUE"Bienvenue dans votre véhicule. Soyez prudent!", pName(playerid), playerid);
1423 SendClientMessage(playerid, COLOR_RED, iMsg);
1424 }
1425 else if(strmatch(vInfo[OwnedVeh(iVehicleID)][vOwner], pName(playerid)) || vInfo[OwnedVeh(iVehicleID)][vLocked] == 1)
1426 {
1427 Demarrage[playerid] = 0;
1428 if(strmatch(vInfo[OwnedVeh(iVehicleID)][vOwner], pName(playerid)) || vInfo[OwnedVeh(iVehicleID)][vLocked] == 1)
1429 {
1430 format(iMsg, sizeof(iMsg), ""CBLUE"Bonjour "#CDGREEN"%s(%d)! "#CBLUE"Ce véhicule appartient à : "#CDGREEN"%s!", pName(playerid), playerid, vInfo[OwnedVeh(iVehicleID)][vOwner]);
1431 SendClientMessage(playerid, -1, iMsg);
1432 SendClientMessage(playerid, -1, ""#CYELLOW"Ce véhicule "#CRED"verrouillé! "#CYELLOW"Faites /sortir pour quitter le véhicule!");
1433 TogglePlayerControllable(playerid, false);
1434 }
1435 }
1436 else if(strmatch(vInfo[OwnedVeh(iVehicleID)][vOwner], pName(playerid)) || vInfo[OwnedVeh(iVehicleID)][vLocked] == 0)
1437 {
1438 format(iMsg, sizeof(iMsg), ""CBLUE"Bonjour "#CDGREEN"%s(%d)! "#CBLUE"Ce véhicule appartient à "#CDGREEN"%s !", pName(playerid), playerid, vInfo[OwnedVeh(iVehicleID)][vOwner]);
1439 SendClientMessage(playerid, -1, iMsg);
1440 SendClientMessage(playerid, -1, ""#CYELLOW"Ce véhicule est "#CDGREEN"déverrouillé!");
1441 }
1442 else
1443 {
1444 format(iMsg, sizeof(iMsg), ""#CBLUE"Le propriétaire de ce véhicule est: "#CDGREEN"%s", vInfo[OwnedVeh(iVehicleID)][vOwner]);
1445 SendClientMessage(playerid, -1, iMsg);
1446
1447 RemovePlayerFromVehicle(playerid);
1448 }
1449 }
1450 }
1451return 1;
1452}
1453
1454public OnPlayerEnterCheckpoint(playerid)
1455{
1456DisablePlayerCheckpoint(playerid);
1457return 1;
1458}
1459
1460public OnPlayerLeaveCheckpoint(playerid)
1461{
1462 return 1;
1463}
1464
1465public OnPlayerEnterRaceCheckpoint(playerid)
1466{
1467 return 1;
1468}
1469
1470public OnPlayerLeaveRaceCheckpoint(playerid)
1471{
1472 return 1;
1473}
1474
1475public OnRconCommand(cmd[])
1476{
1477 return 1;
1478}
1479
1480public OnPlayerRequestSpawn(playerid)
1481{
1482 if(!Logged[playerid]) //Si le joueur n'est pas connecté
1483 {
1484 if(IsRegistered[playerid] == 0) //Si le joueur n'est pas enregistré
1485 {
1486 ShowPlayerDialog(playerid, 15000, DIALOG_STYLE_INPUT, "Service de douane","{FF0000}Vous ne disposez pas d'un titre de séjour! Merci de signer ci-dessous!\n {FF0000}ERREUR:Vous devez possèder un titre de séjour pour rentrer en ville!","Signer","Partir");
1487 return 0; //Bloquer le spawn
1488 }
1489 if(IsRegistered[playerid] == 1) //
1490 {
1491 ShowPlayerDialog(playerid, 15500, DIALOG_STYLE_INPUT, "Passage de douane","{00CC33}Vous disposez d'un titre de séjour valide! {FFFFFF} Merci de signer ci-dessous!\n{FF0000} Vous devez signer pour entrer en ville!","Signer","Partir");
1492 return 0; //Bloquer le spawn
1493 }
1494 }
1495 return 1;
1496}
1497
1498public OnObjectMoved(objectid)
1499{
1500 return 1;
1501}
1502
1503/*public OnPlayerObjectMoved(playerid, objectid)
1504{
1505 return 1;
1506}*/
1507
1508public OnPlayerPickUpPickup(playerid, pickupid)
1509{
1510 if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
1511 {
1512 if(pickupid == entreesfpd){ SetPlayerInterior(playerid, 10); SetPlayerPos(playerid, 246.6894,109.8910,1003.2257);}
1513 else if(pickupid == sortiesfpd){ SetPlayerInterior(playerid, 0); SetPlayerPos(playerid, -1605.0695,716.5948,11.8980);}
1514 else if(pickupid == entreessol1 || pickupid == entreessol2){ SetPlayerInterior(playerid, 10); SetPlayerPos(playerid, 246.6894,109.8910,1003.2257);}
1515 else if(pickupid == servicep){ Pickup[playerid]=1;}
1516 else if(pickupid == edsfpd){
1517 if(Faction[playerid] == 1){
1518 SetTimerEx("ouvgsfpde", 2500, false, "d", playerid); //3secs
1519 SendClientMessage(playerid, COLOR_PURPLE, "Déverrouillage de la porte en cours...");
1520 DestroyPickup(fdsfpd);
1521 DestroyPickup(edsfpd);
1522 }
1523 else{
1524 SendClientMessage(playerid, COLOR_LIGHTRED, "Vous n'avez pas la clé de cette serrure.");
1525 DestroyPickup(fdsfpd);
1526 DestroyPickup(edsfpd);
1527 }
1528 }
1529 else if(pickupid == fdsfpd){
1530 if(Faction[playerid] == 1){
1531 SetTimerEx("ouvgsfpde", 2500, false, "d", playerid); //3secs
1532 SendClientMessage(playerid, COLOR_GREEN, "Déverrouillage de la porte en cours...");
1533 DestroyPickup(fdsfpd);
1534 DestroyPickup(edsfpd);
1535 }
1536 else if(Faction[playerid] != 1 && Prison[playerid] == 0){
1537 SetTimerEx("ouvgsfpde", 2500, false, "d", playerid); //3secs
1538 SendClientMessage(playerid, COLOR_GREEN, "Déverrouillage de la porte en cours...");
1539 DestroyPickup(fdsfpd);
1540 DestroyPickup(edsfpd);
1541 }
1542 else if(Faction[playerid] != 1 && Prison[playerid] == 1){
1543 SendClientMessage(playerid, COLOR_LIGHTRED, "Accès verrouillé aux détenus.");
1544 }
1545 }
1546 }
1547 if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
1548 {
1549 if(pickupid == ouvportaile){
1550 SetTimerEx("actionportailo", 2500, false, "d", playerid); //3secs
1551 if(Faction[playerid] == 1){
1552 SendClientMessage(playerid, COLOR_LIGHTBLUE, "Ouverture du parking en cours...");}
1553 if(Faction[playerid] != 1){
1554 SendClientMessage(playerid, COLOR_LIGHTBLUE, "Parking visiteurs : Autorisation en cours...");}
1555 DestroyPickup(ouvportaile);
1556 DestroyPickup(ouvportaili);
1557 }
1558 else if(pickupid == ouvportaili){
1559 DestroyPickup(ouvportaili);
1560 DestroyPickup(ouvportaile);
1561 SetTimerEx("actionportailo", 2500, false, "d", playerid); //3secs
1562 if(Faction[playerid] == 1){
1563 SendClientMessage(playerid, COLOR_LIGHTBLUE, "Ouverture du parking en cours...");}
1564 if(Faction[playerid] != 1){
1565 SendClientMessage(playerid, COLOR_LIGHTBLUE, "Parking visiteurs : Merci de votre visite...");}
1566 }
1567 else if(pickupid == ouvgi || pickupid == ouvge){
1568 DestroyPickup(ouvgi);
1569 DestroyPickup(ouvge);
1570 if(Faction[playerid] == 1){
1571 SendClientMessage(playerid, COLOR_LIGHTBLUE, "Ouverture du garage en cours...");
1572 SetTimerEx("ouvgaragesfpd", 2500, false, "d", playerid); //3secs
1573 }
1574 if(Faction[playerid] != 1){
1575 ouvgi = CreatePickup(1247, 2, -1631.5081,736.5239,-5.1444, -1);
1576 ouvge = CreatePickup(1247, 2, -1630.3855,685.8479,7.1875, -1);
1577 SendClientMessage(playerid, COLOR_LIGHTRED, "Vous n'avez pas accès au garage de la SFPD");}
1578 }
1579 }
1580 new string[128];
1581 for(new h; h < MAX_HOUSES; h++) {
1582 if(IsPlayerInRangeOfPoint(playerid, 3.5, HD[h][exteriorX], HD[h][exteriorY], HD[h][exteriorZ])) {
1583 if(IsPlayerAdmin(playerid)) {
1584 format(string, sizeof(string), "ID de la maison: %d", HD[h][ID]);
1585 SendClientMessage(playerid, COLOR_WHITE, string);
1586 }
1587 if(!breakingLock[playerid]) {
1588 if(strcmp(HD[h][owner], "A vendre", true) == 0) {
1589 if(HD[h][price] > -1) {
1590 if(GetPlayerMoney(playerid) >= HD[h][price]) {
1591 format(string, sizeof(string), "Maison à vendre~n~~g~/achatmaison~w~ Prix de vente %d$", HD[h][price]);
1592 } else {
1593 format(string, sizeof(string), "Maison à vendre~n~~R~/achatmaison~w~ Prix de vente %d$", HD[h][price]);
1594 }
1595 }
1596 else format(string, sizeof(string), "Maison sans propriétaire~n~~r~Pas à vendre");
1597 GameTextForPlayer(playerid, string, 1000, 5);
1598 } else {
1599 if(HD[h][locked] == 1) format(string, sizeof(string), "Maison de %s~n~~r~fermée", HD[h][owner]);
1600 else format(string, sizeof(string), "%s's House~n~~g~Unlocked", HD[h][owner]);
1601 GameTextForPlayer(playerid, string, 1000, 5);
1602 }
1603 }
1604 }
1605 }
1606 return 1;
1607}
1608public actionportailf(playerid)
1609{
1610SendClientMessage(playerid, COLOR_LIGHTRED, "Verrouillage en cours...");
1611MoveObject(portaile, -1572.19995117,656.09997559,3.50000000, 2.00);
1612ouvportaili = CreatePickup(1247, 2, -1575.0378,662.2130,7.1875, -1);
1613ouvportaile = CreatePickup(1247, 2, -1568.9683,662.2180,7.1875, -1);
1614}
1615public actionportailo(playerid)
1616{
1617MoveObject(portaile, -1572.19995117,656.09997559,0.00000000, 2.00);
1618SetTimerEx("actionportailf", 10500, false, "d", playerid); //10secs
1619}
1620public fergaragesfpd(playerid)
1621{
1622SendClientMessage(playerid, COLOR_GREY, "Fermeture garage en cours...");
1623MoveObject(portegsfpd, -1631.69995117,688.40002441,8.69999981, 1.00);
1624ouvgi = CreatePickup(1247, 2, -1631.5081,736.5239,-5.1444, -1);
1625ouvge = CreatePickup(1247, 2, -1630.3855,685.8479,7.1875, -1);
1626}
1627public ouvgaragesfpd(playerid)
1628{
1629MoveObject(portegsfpd, -1631.69995117,688.40002441,13.69999981, 1.00);
1630SetTimerEx("fergaragesfpd", 10500, false, "d", playerid); //10secs
1631}
1632public ouvgsfpde(playerid)
1633{
1634MoveObject(gdsfpdf1, 253.19999695,111.80000305,1004.90002441, 2.00);
1635MoveObject(gdsfpdf2, 253.19999695,108.09999847,1004.90002441, 2.00);
1636SetTimerEx("fergsfpde", 2500, false, "d", playerid); //3secs);
1637}
1638public fergsfpde(playerid)
1639{
1640SendClientMessage(playerid, COLOR_LIGHTRED, "Verrouillage en cours...");
1641edsfpd = CreatePickup(1239, 2, 252.3151,109.2000,1003.2188, -1);
1642fdsfpd = CreatePickup(1239, 2, 255.3196,111.3532,1003.2188, -1);
1643MoveObject(gdsfpdf1, 253.19999695,110.80000305,1004.90002441, 2.00);
1644MoveObject(gdsfpdf2, 253.19999695,109.08000183,1004.90002441, 2.00);
1645SendClientMessage(playerid, COLOR_GREEN, "Verrouillage réussi.");
1646}
1647
1648
1649public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
1650{
1651 if(OwnedVeh(vehicleid) != 0)
1652 {
1653 vInfo[OwnedVeh(vehicleid)][vPaintJ] = paintjobid;
1654
1655 SavePrivVeh(OwnedVeh(vehicleid));
1656
1657 printf("=- Vehicule id: %i a change sa peinture en: %i -=", OwnedVeh(vehicleid), paintjobid);
1658 }
1659 return 1;
1660}
1661
1662public OnVehicleMod(playerid, vehicleid, componentid)
1663{
1664 new
1665 Total_V_Mods = 0;
1666
1667 for(new i = 0; i < MAX_VEH_MODS; ++i)
1668 {
1669 if(vMods[OwnedVeh(vehicleid)][i] == 0)//Info[OwnedVeh(vehicleid)][vMods][i] == 0) If there's an empty mod slot
1670 {
1671 vMods[OwnedVeh(vehicleid)][i] = componentid;
1672
1673 SavePrivVeh(OwnedVeh(vehicleid));
1674
1675 printf("=- Vehicule id: %i a change les accessoires en: %i -=", OwnedVeh(vehicleid), componentid);
1676
1677 ++ Total_V_Mods;
1678 break;
1679 }
1680 }
1681 if(Total_V_Mods == 0) SendClientMessage(playerid, COLOR_RED, "Vous ne pouvez pas ajouter plus de modifications à votre véhicule!");
1682 return 1;
1683}
1684
1685public OnVehicleRespray(playerid, vehicleid, color1, color2)
1686{
1687 if(OwnedVeh(vehicleid) != 0)
1688 {
1689 vInfo[OwnedVeh(vehicleid)][vColor1] = color1;
1690 vInfo[OwnedVeh(vehicleid)][vColor2] = color2;
1691
1692 SavePrivVeh(OwnedVeh(vehicleid));
1693
1694 printf("=- Vehicule id: %i a change la couleur pour : %i - %i -=", OwnedVeh(vehicleid), color1, color2);
1695 }
1696 return 1;
1697}
1698/*public OnPlayerSelectedMenuRow(playerid, row)
1699{
1700 return 1;
1701}*/
1702
1703public OnPlayerExitedMenu(playerid)
1704{
1705 return 1;
1706}
1707
1708public SaveHouses() {
1709 new string[128];
1710 mysql_query("SELECT NULL FROM maisons");
1711 mysql_store_result();
1712 new rows = mysql_num_rows();
1713 mysql_free_result();
1714 for(new h; h < rows; h++) {
1715 format(string, sizeof(string), "UPDATE maisons SET prix='%d', verrou='%d', proprietaire='%s', arme1='%d', niveauverrou='%d', economies='%d' WHERE ID='%d'", HD[h][price], HD[h][locked], HD[h][owner], HD[h][gunslot1], HD[h][locklevel], HD[h][safeamount], h);
1716 mysql_query(string);
1717 printf("Maison %d sauvegardée.", h);
1718 }
1719}
1720
1721public BuildHouse(hprice, Float:hexteriorX, Float:hexteriorY, Float:hexteriorZ, Float:hinteriorX, Float:hinteriorY, Float:hinteriorZ, hinteriorInt, hlocked) {
1722 mysql_query("SELECT NULL FROM houses");
1723 mysql_store_result();
1724 new rows = mysql_num_rows();
1725 mysql_free_result();
1726 new houseID = rows++;
1727 if(houseID < MAX_HOUSES) {
1728 CheckMySQL();
1729 new string[128], string2[300];
1730 format(string, sizeof(string), "INSERT INTO houses (ID, owner, price, exteriorX, exteriorY, exteriorZ, interiorX, interiorY, interiorZ, interiorInt, locked, gu");
1731 format(string2, sizeof(string2), "%snslot1, locklevel, safeamount) VALUES ('%d', 'None', '%d', '%f', '%f', %f, %f, %f, %f, %d, '1', '0', '1', '0')", string, houseID, hprice, hexteriorX, hexteriorY, hexteriorZ, hinteriorX, hinteriorY, hinteriorZ, hinteriorInt);
1732 mysql_query(string2);
1733 print(string2);
1734 CreatePickup(1273, 1, hexteriorX, hexteriorY, hexteriorZ, -1);
1735 printf("House %d created", houseID);
1736 HD[houseID][ID] = houseID;
1737 HD[houseID][price] = hprice;
1738 HD[houseID][exteriorX] = hexteriorX;
1739 HD[houseID][exteriorY] = hexteriorY;
1740 HD[houseID][exteriorZ] = hexteriorZ;
1741 HD[houseID][interiorX] = hinteriorX;
1742 HD[houseID][interiorY] = hinteriorY;
1743 HD[houseID][interiorZ] = hinteriorZ;
1744 HD[houseID][interiorInt] = hinteriorInt;
1745 HD[houseID][locked] = hlocked;
1746 HD[houseID][locklevel] = 1;
1747 HD[houseID][safeamount] = 0;
1748 format(HD[houseID][owner], 24, "None");
1749 } else {
1750 print("Too many houses!");
1751 }
1752}
1753
1754public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
1755{
1756 return 1;
1757}
1758
1759public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
1760{
1761 if ((newkeys==KEY_ACTION)&&(IsPlayerInAnyVehicle(playerid))&&(GetPlayerState(playerid)==PLAYER_STATE_DRIVER))
1762 {
1763 if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 525 && Faction[playerid] == 2)
1764 {
1765 SendClientMessage(playerid,COLOR_YELLOW,"Remorquage en cours...");
1766 new Float:pX,Float:pY,Float:pZ;
1767 GetPlayerPos(playerid,pX,pY,pZ);
1768 new Float:vX,Float:vY,Float:vZ;
1769 new Found=0;
1770 new vid=0;
1771 while((vid<MAX_VEHICLES)&&(!Found))
1772 {
1773 vid++;
1774 GetVehiclePos(vid,vX,vY,vZ);
1775 if ((floatabs(pX-vX)<7.0)&&(floatabs(pY-vY)<7.0)&&(floatabs(pZ-vZ)<7.0)&&(vid!=GetPlayerVehicleID(playerid)))
1776 {
1777 Found=1;
1778 if (IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
1779 {
1780 DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
1781 }
1782 AttachTrailerToVehicle(vid,GetPlayerVehicleID(playerid));
1783 SendClientMessage(playerid,COLOR_YELLOW,"La voiture est désormais correctement attachée, prête pour le remorquage!");
1784 }
1785 }
1786 if (!Found)
1787 {
1788 SendClientMessage(playerid,COLOR_GREY,"Aucune voiture à portée.");
1789 }
1790 }
1791 }
1792 if((newkeys & KEY_SUBMISSION) && !(oldkeys & KEY_SUBMISSION))
1793 {
1794 VehicleLightSwitch(playerid);
1795 }
1796 new vehicleid = GetPlayerVehicleID(playerid);
1797
1798 if(IsPlayerInAnyVehicle(playerid))
1799 {
1800 if(vehEngine[vehicleid] == 0)
1801 {
1802 if(newkeys == KEY_JUMP && Demarrage[playerid] == 1 && Locatype[playerid] != 510 && Locatype[playerid] != 509)
1803 {
1804 vehEngine[vehicleid] = 2;
1805 SetTimerEx("StartEngine", 3000, 0, "i", playerid);
1806 SendClientMessage(playerid, COLOR_LIGHTRED, "Allumage du moteur en cours...");
1807 }
1808 }
1809 if(newkeys == KEY_SECONDARY_ATTACK)
1810 {
1811 RemovePlayerFromVehicle(playerid);
1812 TogglePlayerControllable(playerid, 1);
1813 }
1814 }
1815 if ((newkeys & KEY_CROUCH) && !(oldkeys & KEY_CROUCH))
1816 {
1817 // Verif si conducteur
1818 if (GetPlayerVehicleSeat(playerid) == 0)
1819 {
1820 //
1821 for (new i; i < sizeof(ARefuelPickups); i++)
1822 {
1823 // Verifier si pickupvalide
1824 if (IsValidDynamicPickup(ARefuelPickups[i][PickupID]))
1825 {
1826 // Verifier si assez pret
1827 if(IsPlayerInRangeOfPoint(playerid, 5.0, ARefuelPickups[i][pux], ARefuelPickups[i][puy], ARefuelPickups[i][puz]))
1828 {
1829 // Message
1830 GameTextForPlayer(playerid, "~g~Plein en cours...", 3000, 4);
1831 // Empecher de partir
1832 TogglePlayerControllable(playerid, 0);
1833 // Attente jusqu'au plein
1834 SetTimerEx("RefuelVehicle", 5000, false, "i", playerid);
1835 // Stop recherche
1836 break;
1837 }
1838 }
1839 else // arreter de chercher
1840 break;
1841 }
1842 }
1843 }
1844 return 1;
1845}
1846public StartEngine(playerid)
1847{
1848 new vehicleid = GetPlayerVehicleID(playerid);
1849 new Float:health;
1850 new rand = random(5);
1851
1852 GetVehicleHealth(vehicleid, health);
1853
1854 if(IsPlayerInAnyVehicle(playerid))
1855 {
1856 if(vehEngine[vehicleid] == 2)
1857 {
1858 if(health > 300)
1859 {
1860 if(rand == 0 || rand == 2 || rand == 3 || rand == 4 && Demarrage[playerid] == 1)
1861 {
1862 vehEngine[vehicleid] = 1;
1863 TogglePlayerControllable(playerid, 1);
1864 SetTimerEx("DamagedEngine", 1000, 1, "i", playerid);
1865 SendClientMessage(playerid, COLOR_GREEN, "Moteur démarré!");
1866 }
1867 if(rand == 1 || rand == 5)
1868 {
1869 vehEngine[vehicleid] = 0;
1870 TogglePlayerControllable(playerid, 0);
1871 SendClientMessage(playerid, COLOR_LIGHTRED, "Echec du démarrage");
1872 }
1873 }
1874 else
1875 {
1876 vehEngine[vehicleid] = 0;
1877 TogglePlayerControllable(playerid, 0);
1878 SendClientMessage(playerid, COLOR_LIGHTRED, "Echec du démarrage, panne suite aux dégats subis!");
1879 SendClientMessage(playerid,COLOR_GREY,"Appellez un mécanicien /remorquage");
1880 }
1881 }
1882 }
1883 return 1;
1884}
1885
1886public DamagedEngine(playerid)
1887{
1888 new vehicleid = GetPlayerVehicleID(playerid);
1889 new Float:health;
1890
1891 GetVehicleHealth(vehicleid, health);
1892
1893 if(IsPlayerInAnyVehicle(playerid))
1894 {
1895 if(vehEngine[vehicleid] == 1)
1896 {
1897 if(health < 300)
1898 {
1899 vehEngine[vehicleid] = 0;
1900 TogglePlayerControllable(playerid, 0);
1901 SendClientMessage(playerid, COLOR_LIGHTRED, "Moteur en panne suite aux dégats subis!");
1902 SendClientMessage(playerid,COLOR_GREY,"Appellez un mécanicien /remorquage");
1903 }
1904 }
1905 }
1906 return 1;
1907}
1908
1909
1910AddSPU(spuid, Float:x, Float:y, Float:z, Float:rotation, color1, color2, lightonoroff)
1911{
1912
1913 if(lightonoroff == 1)
1914 {
1915 for(new i=0; i<sizeof(Offsets); i++)
1916 {
1917 if(Offsets[i][SPU] == spuid)
1918 {
1919 new vehicleid = CreateVehicle(Offsets[i][VehicleID], x, y, z, rotation, color1, color2, -1);
1920 Lamp[vehicleid] = 1;
1921 IsSpu[vehicleid] = spuid;
1922 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
1923 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
1924 IsSpu[vehicleid] = 1;
1925 printf("AddSPU(%d), succesfully created.", spuid);
1926 return 1;
1927 }
1928 }
1929 }
1930 if(lightonoroff == 0)
1931 {
1932 for(new i=0; i<sizeof(Offsets); i++)
1933 {
1934 if(Offsets[i][SPU] == spuid)
1935 {
1936 new vehicleid = CreateVehicle(Offsets[i][VehicleID], x, y, z, rotation, color1, color2, -1);
1937 Lamp[vehicleid] = 0;
1938 IsSpu[vehicleid] = spuid;
1939 IsSpu[vehicleid] = 1;
1940 printf("AddSPU(%d), succesfully created.", spuid);
1941 return 1;
1942 }
1943 }
1944 }
1945 return 1;
1946}
1947
1948VehicleLightSwitch(playerid)
1949{
1950 new vid = GetPlayerVehicleID(playerid);
1951 if(vid == INVALID_VEHICLE_ID) return 1;
1952 if(IsSpu[vid] != 0)
1953 {
1954 if(Lamp[vid] == 1)
1955 {
1956 DestroyObject(light[vid]);
1957 Lamp[vid] = 0;
1958 return 1;
1959 }
1960 if(Lamp[vid] == 0)
1961 {
1962 for(new i=0; i<sizeof(Offsets); i++)
1963 {
1964 if(Offsets[i][SPU] == IsSpu[vid])
1965 {
1966 light[vid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
1967 AttachObjectToVehicle(light[vid], vid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
1968 Lamp[vid] = 1;
1969 }
1970 }
1971 return 1;
1972 }
1973 }
1974 return 1;
1975}
1976public OnRconLoginAttempt(ip[], password[], success)
1977{
1978 return 1;
1979}
1980
1981public OnPlayerUpdate(playerid)
1982{
1983 return 1;
1984}
1985
1986public OnPlayerStreamIn(playerid, forplayerid)
1987{
1988 return 1;
1989}
1990
1991public OnPlayerStreamOut(playerid, forplayerid)
1992{
1993 return 1;
1994}
1995
1996public OnVehicleStreamIn(vehicleid, forplayerid)
1997{
1998 return 1;
1999}
2000
2001public OnVehicleStreamOut(vehicleid, forplayerid)
2002{
2003 return 1;
2004}
2005
2006public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
2007{
2008 if(response == 1 && dialogid == 1123)
2009 {
2010 switch(listitem)
2011 {
2012 case 0:
2013 {
2014 new Float:x, Float:y, Float:z, Float:angle;
2015 GetPlayerPos(playerid, x, y, z);
2016 GetPlayerFacingAngle(playerid, angle);
2017 for(new i=0; i<sizeof(Offsets); i++)
2018 {
2019 if(Offsets[i][SPU] == 1)
2020 {
2021 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2022 PutPlayerInVehicle(playerid, vehicleid, 0);
2023 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2024 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2025 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2026 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2027 Lamp[vehicleid] = 1;
2028 IsSpu[vehicleid] = 1;
2029 }
2030 }
2031 }
2032 case 1:
2033 {
2034 new Float:x, Float:y, Float:z, Float:angle;
2035 GetPlayerPos(playerid, x, y, z);
2036 GetPlayerFacingAngle(playerid, angle);
2037 for(new i=0; i<sizeof(Offsets); i++)
2038 {
2039 if(Offsets[i][SPU] == 2)
2040 {
2041 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2042 PutPlayerInVehicle(playerid, vehicleid, 0);
2043 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2044 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2045 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2046 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2047 Lamp[vehicleid] = 1;
2048 IsSpu[vehicleid] = 2;
2049 }
2050 }
2051 }
2052 case 2:
2053 {
2054 new Float:x, Float:y, Float:z, Float:angle;
2055 GetPlayerPos(playerid, x, y, z);
2056 GetPlayerFacingAngle(playerid, angle);
2057 for(new i=0; i<sizeof(Offsets); i++)
2058 {
2059 if(Offsets[i][SPU] == 3)
2060 {
2061 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2062 PutPlayerInVehicle(playerid, vehicleid, 0);
2063 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2064 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2065 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2066 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2067 Lamp[vehicleid] = 1;
2068 IsSpu[vehicleid] = 3;
2069 }
2070 }
2071 }
2072 case 3:
2073 {
2074 new Float:x, Float:y, Float:z, Float:angle;
2075 GetPlayerPos(playerid, x, y, z);
2076 GetPlayerFacingAngle(playerid, angle);
2077 for(new i=0; i<sizeof(Offsets); i++)
2078 {
2079 if(Offsets[i][SPU] == 4)
2080 {
2081 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2082 PutPlayerInVehicle(playerid, vehicleid, 0);
2083 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2084 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2085 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2086 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2087 Lamp[vehicleid] = 1;
2088 IsSpu[vehicleid] = 4;
2089 }
2090 }
2091 }
2092 case 4:
2093 {
2094 new Float:x, Float:y, Float:z, Float:angle;
2095 GetPlayerPos(playerid, x, y, z);
2096 GetPlayerFacingAngle(playerid, angle);
2097 for(new i=0; i<sizeof(Offsets); i++)
2098 {
2099 if(Offsets[i][SPU] == 5)
2100 {
2101 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2102 PutPlayerInVehicle(playerid, vehicleid, 0);
2103 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2104 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2105 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2106 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2107 Lamp[vehicleid] = 1;
2108 IsSpu[vehicleid] = 5;
2109 }
2110 }
2111 }
2112 case 5:
2113 {
2114 new Float:x, Float:y, Float:z, Float:angle;
2115 GetPlayerPos(playerid, x, y, z);
2116 GetPlayerFacingAngle(playerid, angle);
2117 for(new i=0; i<sizeof(Offsets); i++)
2118 {
2119 if(Offsets[i][SPU] == 6)
2120 {
2121 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2122 PutPlayerInVehicle(playerid, vehicleid, 0);
2123 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2124 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2125 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2126 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2127 Lamp[vehicleid] = 1;
2128 IsSpu[vehicleid] = 6;
2129 }
2130 }
2131 }//done
2132 case 6:
2133 {
2134 new Float:x, Float:y, Float:z, Float:angle;
2135 GetPlayerPos(playerid, x, y, z);
2136 GetPlayerFacingAngle(playerid, angle);
2137 for(new i=0; i<sizeof(Offsets); i++)
2138 {
2139 if(Offsets[i][SPU] == 7)
2140 {
2141 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2142 PutPlayerInVehicle(playerid, vehicleid, 0);
2143 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2144 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2145 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2146 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2147 Lamp[vehicleid] = 1;
2148 IsSpu[vehicleid] = 7;
2149 }
2150 }
2151 }
2152 case 7:
2153 {
2154 new Float:x, Float:y, Float:z, Float:angle;
2155 GetPlayerPos(playerid, x, y, z);
2156 GetPlayerFacingAngle(playerid, angle);
2157 for(new i=0; i<sizeof(Offsets); i++)
2158 {
2159 if(Offsets[i][SPU] == 8)
2160 {
2161 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2162 PutPlayerInVehicle(playerid, vehicleid, 0);
2163 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2164 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2165 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2166 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2167 Lamp[vehicleid] = 1;
2168 IsSpu[vehicleid] = 8;
2169 }
2170 }
2171 }
2172 case 8:
2173 {
2174 new Float:x, Float:y, Float:z, Float:angle;
2175 GetPlayerPos(playerid, x, y, z);
2176 GetPlayerFacingAngle(playerid, angle);
2177 for(new i=0; i<sizeof(Offsets); i++)
2178 {
2179 if(Offsets[i][SPU] == 9)
2180 {
2181 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2182 PutPlayerInVehicle(playerid, vehicleid, 0);
2183 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2184 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2185 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2186 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2187 Lamp[vehicleid] = 1;
2188 IsSpu[vehicleid] = 9;
2189 }
2190 }
2191 }
2192 case 9:
2193 {
2194 new Float:x, Float:y, Float:z, Float:angle;
2195 GetPlayerPos(playerid, x, y, z);
2196 GetPlayerFacingAngle(playerid, angle);
2197 for(new i=0; i<sizeof(Offsets); i++)
2198 {
2199 if(Offsets[i][SPU] == 10)
2200 {
2201 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2202 PutPlayerInVehicle(playerid, vehicleid, 0);
2203 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2204 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2205 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2206 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2207 Lamp[vehicleid] = 1;
2208 IsSpu[vehicleid] = 10;
2209 }
2210 }
2211 }
2212 case 10:
2213 {//new dialog
2214 ShowPlayerDialog(playerid, 1133, DIALOG_STYLE_LIST, "So you want to have a SPU, what one do you want then?", DIALOG2_MSG, "Take it", "Leave it" );
2215 }
2216 }
2217 }
2218 if(response == 1 && dialogid == 1133)
2219 {
2220 switch(listitem)
2221 {
2222 case 0:
2223 {
2224 new Float:x, Float:y, Float:z, Float:angle;
2225 GetPlayerPos(playerid, x, y, z);
2226 GetPlayerFacingAngle(playerid, angle);
2227 for(new i=0; i<sizeof(Offsets); i++)
2228 {
2229 if(Offsets[i][SPU] == 11)
2230 {
2231 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2232 PutPlayerInVehicle(playerid, vehicleid, 0);
2233 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2234 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2235 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2236 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2237 Lamp[vehicleid] = 1;
2238 IsSpu[vehicleid] = 11;
2239 }
2240 }
2241 }
2242 case 1:
2243 {
2244 new Float:x, Float:y, Float:z, Float:angle;
2245 GetPlayerPos(playerid, x, y, z);
2246 GetPlayerFacingAngle(playerid, angle);
2247 for(new i=0; i<sizeof(Offsets); i++)
2248 {
2249 if(Offsets[i][SPU] == 12)
2250 {
2251 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2252 PutPlayerInVehicle(playerid, vehicleid, 0);
2253 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2254 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2255 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2256 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2257 Lamp[vehicleid] = 1;
2258 IsSpu[vehicleid] = 12;
2259 }
2260 }
2261 }
2262 case 2:
2263 {
2264 new Float:x, Float:y, Float:z, Float:angle;
2265 GetPlayerPos(playerid, x, y, z);
2266 GetPlayerFacingAngle(playerid, angle);
2267 for(new i=0; i<sizeof(Offsets); i++)
2268 {
2269 if(Offsets[i][SPU] == 13)
2270 {
2271 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2272 PutPlayerInVehicle(playerid, vehicleid, 0);
2273 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2274 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2275 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2276 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2277 Lamp[vehicleid] = 1;
2278 IsSpu[vehicleid] = 13;
2279 }
2280 }
2281 }
2282 case 3:
2283 {
2284 new Float:x, Float:y, Float:z, Float:angle;
2285 GetPlayerPos(playerid, x, y, z);
2286 GetPlayerFacingAngle(playerid, angle);
2287 for(new i=0; i<sizeof(Offsets); i++)
2288 {
2289 if(Offsets[i][SPU] == 14)
2290 {
2291 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2292 PutPlayerInVehicle(playerid, vehicleid, 0);
2293 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2294 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2295 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2296 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2297 Lamp[vehicleid] = 1;
2298 IsSpu[vehicleid] = 14;
2299 }
2300 }
2301 }
2302 case 4:
2303 {
2304 new Float:x, Float:y, Float:z, Float:angle;
2305 GetPlayerPos(playerid, x, y, z);
2306 GetPlayerFacingAngle(playerid, angle);
2307 for(new i=0; i<sizeof(Offsets); i++)
2308 {
2309 if(Offsets[i][SPU] == 15)
2310 {
2311 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2312 PutPlayerInVehicle(playerid, vehicleid, 0);
2313 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2314 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2315 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2316 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2317 Lamp[vehicleid] = 1;
2318 IsSpu[vehicleid] = 15;
2319 }
2320 }
2321 }
2322 case 5:
2323 {
2324 new Float:x, Float:y, Float:z, Float:angle;
2325 GetPlayerPos(playerid, x, y, z);
2326 GetPlayerFacingAngle(playerid, angle);
2327 for(new i=0; i<sizeof(Offsets); i++)
2328 {
2329 if(Offsets[i][SPU] == 16)
2330 {
2331 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2332 PutPlayerInVehicle(playerid, vehicleid, 0);
2333 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2334 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2335 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2336 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2337 Lamp[vehicleid] = 1;
2338 IsSpu[vehicleid] = 16;
2339 }
2340 }
2341 }
2342 case 6:
2343 {
2344 new Float:x, Float:y, Float:z, Float:angle;
2345 GetPlayerPos(playerid, x, y, z);
2346 GetPlayerFacingAngle(playerid, angle);
2347 for(new i=0; i<sizeof(Offsets); i++)
2348 {
2349 if(Offsets[i][SPU] == 17)
2350 {
2351 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2352 PutPlayerInVehicle(playerid, vehicleid, 0);
2353 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2354 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2355 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2356 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2357 Lamp[vehicleid] = 1;
2358 IsSpu[vehicleid] = 17;
2359 }
2360 }
2361 }
2362 case 7:
2363 {
2364 new Float:x, Float:y, Float:z, Float:angle;
2365 GetPlayerPos(playerid, x, y, z);
2366 GetPlayerFacingAngle(playerid, angle);
2367 for(new i=0; i<sizeof(Offsets); i++)
2368 {
2369 if(Offsets[i][SPU] == 18)
2370 {
2371 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2372 PutPlayerInVehicle(playerid, vehicleid, 0);
2373 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2374 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2375 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2376 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2377 Lamp[vehicleid] = 1;
2378 IsSpu[vehicleid] = 18;
2379 }
2380 }
2381 }
2382 case 8:
2383 {
2384 new Float:x, Float:y, Float:z, Float:angle;
2385 GetPlayerPos(playerid, x, y, z);
2386 GetPlayerFacingAngle(playerid, angle);
2387 for(new i=0; i<sizeof(Offsets); i++)
2388 {
2389 if(Offsets[i][SPU] == 19)
2390 {
2391 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2392 PutPlayerInVehicle(playerid, vehicleid, 0);
2393 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2394 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2395 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2396 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2397 Lamp[vehicleid] = 1;
2398 IsSpu[vehicleid] = 19;
2399 }
2400 }
2401 }
2402 case 9:
2403 {
2404 new Float:x, Float:y, Float:z, Float:angle;
2405 GetPlayerPos(playerid, x, y, z);
2406 GetPlayerFacingAngle(playerid, angle);
2407 for(new i=0; i<sizeof(Offsets); i++)
2408 {
2409 if(Offsets[i][SPU] == 20)
2410 {
2411 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2412 PutPlayerInVehicle(playerid, vehicleid, 0);
2413 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2414 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2415 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2416 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2417 Lamp[vehicleid] = 1;
2418 IsSpu[vehicleid] = 20;
2419 }
2420 }
2421 }
2422 case 10:
2423 {//new dialog
2424 ShowPlayerDialog(playerid, 1143, DIALOG_STYLE_LIST, "So you want to have a SPU, what one do you want then?", DIALOG3_MSG, "Take it", "Leave it" );
2425 }
2426 }
2427 }
2428 if(response == 1 && dialogid == 1143)
2429 {
2430 switch(listitem)
2431 {
2432 case 0:
2433 {
2434 new Float:x, Float:y, Float:z, Float:angle;
2435 GetPlayerPos(playerid, x, y, z);
2436 GetPlayerFacingAngle(playerid, angle);
2437 for(new i=0; i<sizeof(Offsets); i++)
2438 {
2439 if(Offsets[i][SPU] == 21)
2440 {
2441 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2442 PutPlayerInVehicle(playerid, vehicleid, 0);
2443 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2444 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2445 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2446 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2447 Lamp[vehicleid] = 1;
2448 IsSpu[vehicleid] = 21;
2449 }
2450 }
2451 }
2452 case 1:
2453 {
2454 new Float:x, Float:y, Float:z, Float:angle;
2455 GetPlayerPos(playerid, x, y, z);
2456 GetPlayerFacingAngle(playerid, angle);
2457 for(new i=0; i<sizeof(Offsets); i++)
2458 {
2459 if(Offsets[i][SPU] == 22)
2460 {
2461 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2462 PutPlayerInVehicle(playerid, vehicleid, 0);
2463 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2464 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2465 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2466 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2467 Lamp[vehicleid] = 1;
2468 IsSpu[vehicleid] = 22;
2469 }
2470 }
2471 }
2472 case 2:
2473 {
2474 new Float:x, Float:y, Float:z, Float:angle;
2475 GetPlayerPos(playerid, x, y, z);
2476 GetPlayerFacingAngle(playerid, angle);
2477 for(new i=0; i<sizeof(Offsets); i++)
2478 {
2479 if(Offsets[i][SPU] == 23)
2480 {
2481 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2482 PutPlayerInVehicle(playerid, vehicleid, 0);
2483 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2484 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2485 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2486 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2487 Lamp[vehicleid] = 1;
2488 IsSpu[vehicleid] = 23;
2489 }
2490 }
2491 }
2492 case 3:
2493 {
2494 new Float:x, Float:y, Float:z, Float:angle;
2495 GetPlayerPos(playerid, x, y, z);
2496 GetPlayerFacingAngle(playerid, angle);
2497 for(new i=0; i<sizeof(Offsets); i++)
2498 {
2499 if(Offsets[i][SPU] == 24)
2500 {
2501 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2502 PutPlayerInVehicle(playerid, vehicleid, 0);
2503 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2504 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2505 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2506 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2507 Lamp[vehicleid] = 1;
2508 IsSpu[vehicleid] = 24;
2509 }
2510 }
2511 }
2512 case 4:
2513 {
2514 new Float:x, Float:y, Float:z, Float:angle;
2515 GetPlayerPos(playerid, x, y, z);
2516 GetPlayerFacingAngle(playerid, angle);
2517 for(new i=0; i<sizeof(Offsets); i++)
2518 {
2519 if(Offsets[i][SPU] == 25)
2520 {
2521 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2522 PutPlayerInVehicle(playerid, vehicleid, 0);
2523 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2524 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2525 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2526 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2527 Lamp[vehicleid] = 1;
2528 IsSpu[vehicleid] = 25;
2529 }
2530 }
2531 }
2532 case 5:
2533 {
2534 new Float:x, Float:y, Float:z, Float:angle;
2535 GetPlayerPos(playerid, x, y, z);
2536 GetPlayerFacingAngle(playerid, angle);
2537 for(new i=0; i<sizeof(Offsets); i++)
2538 {
2539 if(Offsets[i][SPU] == 26)
2540 {
2541 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2542 PutPlayerInVehicle(playerid, vehicleid, 0);
2543 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2544 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2545 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2546 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2547 Lamp[vehicleid] = 1;
2548 IsSpu[vehicleid] = 26;
2549 }
2550 }
2551 }
2552 case 6:
2553 {
2554 new Float:x, Float:y, Float:z, Float:angle;
2555 GetPlayerPos(playerid, x, y, z);
2556 GetPlayerFacingAngle(playerid, angle);
2557 for(new i=0; i<sizeof(Offsets); i++)
2558 {
2559 if(Offsets[i][SPU] == 27)
2560 {
2561 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2562 PutPlayerInVehicle(playerid, vehicleid, 0);
2563 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2564 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2565 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2566 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2567 Lamp[vehicleid] = 1;
2568 IsSpu[vehicleid] = 27;
2569 }
2570 }
2571 }
2572 case 7:
2573 {
2574 new Float:x, Float:y, Float:z, Float:angle;
2575 GetPlayerPos(playerid, x, y, z);
2576 GetPlayerFacingAngle(playerid, angle);
2577 for(new i=0; i<sizeof(Offsets); i++)
2578 {
2579 if(Offsets[i][SPU] == 28)
2580 {
2581 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2582 PutPlayerInVehicle(playerid, vehicleid, 0);
2583 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2584 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2585 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2586 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2587 Lamp[vehicleid] = 1;
2588 IsSpu[vehicleid] = 28;
2589 }
2590 }
2591 }
2592 case 8:
2593 {
2594 new Float:x, Float:y, Float:z, Float:angle;
2595 GetPlayerPos(playerid, x, y, z);
2596 GetPlayerFacingAngle(playerid, angle);
2597 for(new i=0; i<sizeof(Offsets); i++)
2598 {
2599 if(Offsets[i][SPU] == 29)
2600 {
2601 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2602 PutPlayerInVehicle(playerid, vehicleid, 0);
2603 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2604 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2605 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2606 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2607 Lamp[vehicleid] = 1;
2608 IsSpu[vehicleid] = 29;
2609 }
2610 }
2611 }
2612 case 9:
2613 {
2614 new Float:x, Float:y, Float:z, Float:angle;
2615 GetPlayerPos(playerid, x, y, z);
2616 GetPlayerFacingAngle(playerid, angle);
2617 for(new i=0; i<sizeof(Offsets); i++)
2618 {
2619 if(Offsets[i][SPU] == 30)
2620 {
2621 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2622 PutPlayerInVehicle(playerid, vehicleid, 0);
2623 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2624 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2625 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2626 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2627 Lamp[vehicleid] = 1;
2628 IsSpu[vehicleid] = 30;
2629 }
2630 }
2631 }
2632 case 10:
2633 {
2634 new Float:x, Float:y, Float:z, Float:angle;
2635 GetPlayerPos(playerid, x, y, z);
2636 GetPlayerFacingAngle(playerid, angle);
2637 for(new i=0; i<sizeof(Offsets); i++)
2638 {
2639 if(Offsets[i][SPU] == 31)
2640 {
2641 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2642 PutPlayerInVehicle(playerid, vehicleid, 0);
2643 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2644 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2645 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2646 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2647 Lamp[vehicleid] = 1;
2648 IsSpu[vehicleid] = 31;
2649 }
2650 }
2651 }
2652 case 11:
2653 {
2654 new Float:x, Float:y, Float:z, Float:angle;
2655 GetPlayerPos(playerid, x, y, z);
2656 GetPlayerFacingAngle(playerid, angle);
2657 for(new i=0; i<sizeof(Offsets); i++)
2658 {
2659 if(Offsets[i][SPU] == 32)
2660 {
2661 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2662 PutPlayerInVehicle(playerid, vehicleid, 0);
2663 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2664 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2665 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2666 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2667 Lamp[vehicleid] = 1;
2668 IsSpu[vehicleid] = 32;
2669 }
2670 }
2671 }
2672 case 12:
2673 {
2674 new Float:x, Float:y, Float:z, Float:angle;
2675 GetPlayerPos(playerid, x, y, z);
2676 GetPlayerFacingAngle(playerid, angle);
2677 for(new i=0; i<sizeof(Offsets); i++)
2678 {
2679 if(Offsets[i][SPU] == 33)
2680 {
2681 new vehicleid=CreateVehicle(Offsets[i][VehicleID], x, y, z, angle, 0, 0, -1);
2682 PutPlayerInVehicle(playerid, vehicleid, 0);
2683 SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
2684 LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
2685 light[vehicleid] = CreateObject(18646,Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 96.0);
2686 AttachObjectToVehicle(light[vehicleid], vehicleid, Offsets[i][X], Offsets[i][Y], Offsets[i][Z], 0.0, 0.0, 0.0);
2687 Lamp[vehicleid] = 1;
2688 IsSpu[vehicleid] = 33;
2689 }
2690 }
2691 }
2692 }
2693 }
2694 if(dialogid == 15000) //Si le dialogue est celui d'enregistrement
2695 {
2696 if(response) //Si on clique sur le bouton d'enregistrement
2697 {
2698 if(!strlen(inputtext) || strlen(inputtext) > 25) //Mot de passe non compris entre 1 et 25 caracteres
2699 {
2700 SendClientMessage(playerid, 0xFF0000, "Votre signature doit comprendre entre 1 et 25 caracteres!"); //Envoi de l'erreur
2701 ShowPlayerDialog(playerid, 15000, DIALOG_STYLE_INPUT, "Passage de douane","Votre nom est {FF0000}inconnu{FFFFFF} de nos services! Merci de {0000FF}signer{FFFFFF} ci-dessous!\n {FF0000}ERREUR:Votre signature doit faire entre 1 et 25 caractères!","Signer","Partir"); //Boite de dialogue :).
2702 }
2703 else if(strlen(inputtext) > 0 && strlen(inputtext) < 25)
2704 {
2705 new escpass[100];
2706 mysql_real_escape_string(inputtext, escpass);
2707 MySQL_Register(playerid, escpass);
2708 }
2709 //Si le mdp est entre 1 et 25
2710 //Enregistrement du joueur
2711 }
2712 if(!response)
2713 {
2714 SendClientMessage(playerid, 0xFF6347AA, "Vous devez possèder des papiers avant d'entrer en ville!"); // Envoi du message
2715 ShowPlayerDialog(playerid, 15000, DIALOG_STYLE_INPUT, "Passage de douane","Votre nom est {FF0000}inconnu{FFFFFF} de nos services! Merci de {0000FF}signer{FFFFFF} ci-dessous!\n {FF0000}ERREUR:Merci de signer !","Signer","Partir"); //Boite de dialogue
2716 }
2717 }
2718 if(dialogid == 15500) //Boite de dialogue de login
2719 {
2720 if(!response) //Si on clique sur "Partir"
2721 {
2722 SendClientMessage(playerid, 0xFF6347AA, "Vous devez passer la douane avant d'entrer en ville!"); //Sends the client a error message
2723 ShowPlayerDialog(playerid, 15500, DIALOG_STYLE_INPUT, "Passage de douane","{00CC33} Vous disposez de papiers en règle{FFFFFF}! Merci de signer\n{FF0000} Vous devez signer avant de pouvoir passer la douane!","Signer","Partir"); //Boite de dialogue.
2724 }
2725 if(response) //Si on clique sur Signer
2726 {
2727 new query[200], pname[24], escapepass[100]; //
2728 GetPlayerName(playerid, pname, 24); //Recup du pseudo
2729 mysql_real_escape_string(inputtext, escapepass); // Pour éviter injection sql.
2730 format(query, sizeof(query), "SELECT `nom` FROM joueurs WHERE nom = '%s' AND pass = SHA1('%s')", pname, escapepass);
2731 mysql_query(query);
2732 mysql_store_result();
2733 new numrows = mysql_num_rows();
2734 if(numrows == 1)MySQL_Login(playerid);
2735 // Cela signifie qu'il ya un utilisateur dans la base de données avec le même
2736 // mot de passe que nous avons tapé, nous allons maintenant procéder à l'aide de la fonction de connexion.
2737 if(!numrows)
2738 {
2739 //Pass incorrect on renvoie le formulaire
2740 ShowPlayerDialog(playerid, 15500, DIALOG_STYLE_INPUT, "Passage de douane","{00CC33}Vous disposez de papiers en règle! Merci de signer\n{FF0000} Vous devez signer avant de pouvoir passer la douane!","Signer","Partir"); //Boite de dialogue.
2741 SendClientMessage(playerid, 0xFF6347AA, "Signature incorrecte!"); //Erreur
2742 }
2743 mysql_free_result(); //On efface contenu stocké bdd pour liberer mémoire
2744 }
2745 }
2746 switch(dialogid)
2747 {
2748 case 1000:
2749 {
2750 if(!response) return 1;
2751 ChatState{playerid} = listitem;
2752 CostumString(SCSString,"Vous changez votre voix en ");
2753 switch(listitem)
2754 {
2755 case 0: strcat(SCSString,"normale.",sizeof(SCSString));
2756 case 1: strcat(SCSString,"forte.",sizeof(SCSString));
2757 case 2: strcat(SCSString,"cri.",sizeof(SCSString));
2758 case 3: strcat(SCSString,"chuchotement.",sizeof(SCSString));
2759 }
2760 SendClientMessage(playerid,SGreen,SCSString);
2761 return 1;
2762 }
2763 }
2764 return 1;
2765}
2766Speedometer_Setup(playerid)
2767{
2768 // Installer compteur
2769 APlayerData[playerid][SpeedometerText] = TextDrawCreate(480.0, 115.0, " ");
2770 APlayerData[playerid][FuelGauge] = TextDrawCreate(480.0, 100.0, " ");
2771 // Desactiver les ombres
2772 if (DisableShadows == true)
2773 {
2774 TextDrawSetShadow(APlayerData[playerid][SpeedometerText], 0);
2775 TextDrawSetShadow(APlayerData[playerid][FuelGauge], 0);
2776 }
2777 // activer les textdraw
2778 TextDrawShowForPlayer(playerid, APlayerData[playerid][SpeedometerText]);
2779 TextDrawShowForPlayer(playerid, APlayerData[playerid][FuelGauge]);
2780
2781 // Activer le compteur
2782 APlayerData[playerid][SpeedometerTimer] = SetTimerEx("Speedometer_Update", 500, true, "i", playerid);
2783
2784 return 1;
2785}
2786
2787//
2788Speedometer_Cleanup(playerid)
2789{
2790
2791 TextDrawDestroy(APlayerData[playerid][SpeedometerText]);
2792 TextDrawDestroy(APlayerData[playerid][FuelGauge]);
2793
2794 KillTimer(APlayerData[playerid][SpeedometerTimer]);
2795
2796 APlayerData[playerid][PlayerSpeed] = 0;
2797
2798 return 1;
2799}
2800
2801
2802forward Speedometer_Update(playerid);
2803
2804public Speedometer_Update(playerid)
2805{
2806
2807 new vid, Float:speed_x, Float:speed_y, Float:speed_z, Float:final_speed, speed_string[50], final_speed_int, Float:vehiclehealth;
2808 new FuelString[50], FuelStatus[20];
2809
2810
2811 vid = GetPlayerVehicleID(playerid);
2812
2813 // Si dans un véhicule
2814 if(vid != 0)
2815 {
2816
2817 GetVehicleVelocity(vid, speed_x, speed_y, speed_z);
2818
2819 final_speed = floatsqroot(((speed_x * speed_x) + (speed_y * speed_y)) + (speed_z * speed_z)) * 158.179;
2820
2821 final_speed_int = floatround(final_speed, floatround_round);
2822
2823 APlayerData[playerid][PlayerSpeed] = final_speed_int;
2824
2825 format(speed_string, 50, "~w~VITESSE: ~b~%i~w~ KM/H", final_speed_int);
2826 TextDrawSetString(APlayerData[playerid][SpeedometerText], speed_string);
2827
2828 // Vie du véhicule par barre de vie du joueur
2829 GetVehicleHealth(vid, vehiclehealth);
2830 SetPlayerHealth(vid, vehiclehealth / 10.0);
2831
2832 //
2833 if (GetPlayerVehicleSeat(playerid) == 0)
2834 if ((final_speed_int > 10) && (AVehicleData[vid][Fuel] > 0)) // Vérifiez si la vitesse est au-dessus 10kph et si le véhicule n'a pas à court de carburant
2835 AVehicleData[vid][Fuel] = AVehicleData[vid][Fuel] - 1; // Diminution du carburant pour ce véhicule à chaque fois que le timer est exécuté
2836
2837 // JAuge
2838 if ((AVehicleData[vid][Fuel] > 0) && (AVehicleData[vid][Fuel] < 100000))
2839 format(FuelStatus, 20, "~g~%s~r~%s", "I", "IIIIIIIII"); // Essence entre 0% et 10%
2840 /*SendClientMessage(playerid, COLOR_LIGHTRED, "ATTENTION : VOTRE VEHICULE A ATTEINT LA RESERVE!"); //Erreur
2841 SendClientMessage(playerid, COLOR_YELLOW, "Allez faire le plein rapidement!"); //Erreur*/
2842 if ((AVehicleData[vid][Fuel] >= ((MaxFuel / 10) * 1)) && (AVehicleData[vid][Fuel] < ((MaxFuel / 10) * 2)))
2843 format(FuelStatus, 20, "~g~%s~r~%s", "II", "IIIIIIII"); // Essence entre 10% et 20%
2844
2845 if ((AVehicleData[vid][Fuel] >= ((MaxFuel / 10) * 2)) && (AVehicleData[vid][Fuel] < ((MaxFuel / 10) * 3)))
2846 format(FuelStatus, 20, "~g~%s~r~%s", "III", "IIIIIII"); // Essence entre 20% et 30%
2847
2848 if ((AVehicleData[vid][Fuel] >= ((MaxFuel / 10) * 3)) && (AVehicleData[vid][Fuel] < ((MaxFuel / 10) * 4)))
2849 format(FuelStatus, 20, "~g~%s~r~%s", "IIII", "IIIIII"); // Essence entre 30% et 40%
2850
2851 if ((AVehicleData[vid][Fuel] >= ((MaxFuel / 10) * 4)) && (AVehicleData[vid][Fuel] < ((MaxFuel / 10) * 5)))
2852 format(FuelStatus, 20, "~g~%s~r~%s", "IIIII", "IIIII"); // Essence entre 40% et 50%
2853
2854 if ((AVehicleData[vid][Fuel] >= ((MaxFuel / 10) * 5)) && (AVehicleData[vid][Fuel] < ((MaxFuel / 10) * 6)))
2855 format(FuelStatus, 20, "~g~%s~r~%s", "IIIIII", "IIII"); // Essence entre 50% et 60%
2856
2857 if ((AVehicleData[vid][Fuel] >= ((MaxFuel / 10) * 6)) && (AVehicleData[vid][Fuel] < ((MaxFuel / 10) * 7)))
2858 format(FuelStatus, 20, "~g~%s~r~%s", "IIIIIII", "III"); // Essence entre 60% et 70%
2859
2860 if ((AVehicleData[vid][Fuel] >= ((MaxFuel / 10) * 7)) && (AVehicleData[vid][Fuel] < ((MaxFuel / 10) * 8)))
2861 format(FuelStatus, 20, "~g~%s~r~%s", "IIIIIIII", "II"); // Essence entre 70% et 80%
2862
2863 if ((AVehicleData[vid][Fuel] >= ((MaxFuel / 10) * 8)) && (AVehicleData[vid][Fuel] < ((MaxFuel / 10) * 9)))
2864 format(FuelStatus, 20, "~g~%s~r~%s", "IIIIIIIII", "I"); // Essence entre 80% et 90%
2865
2866 if ((AVehicleData[vid][Fuel] >= ((MaxFuel / 10) * 9)) && (AVehicleData[vid][Fuel] <= MaxFuel))
2867 format(FuelStatus, 20, "~g~%s", "IIIIIIIIII"); // Essence entre 90% et 100%
2868
2869 if (AVehicleData[vid][Fuel] == 0)
2870 format(FuelStatus, 20, "~r~%s", "IIIIIIIIII"); // Plus d'essence
2871
2872 // Format the final fuel-gauge readout
2873 format(FuelString, 50, "~w~ESSENCE: %s", FuelStatus);
2874 // Display the fuel-gauge
2875 TextDrawSetString(APlayerData[playerid][FuelGauge], FuelString);
2876
2877 // Check if the vehicle is out of fuel
2878 if (AVehicleData[vid][Fuel] == 0)
2879 {
2880 // Stop the engine and turn off the lights so the player cannot drive anymore with this vehicle
2881 new engine,lights,alarm,doors,bonnet,boot,objective;
2882 GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
2883 SetVehicleParamsEx(vid, 0, 0, alarm, doors, bonnet, boot, objective);
2884 }
2885
2886 // Check if the player is not in any plane or helicopter (those cannot be caught by speedcamera's)
2887 if (IsVehicleAirVehicle(vid) == 0)
2888 CheckPlayerSpeeding(playerid);
2889 }
2890 else
2891 {
2892 // If the player is not inside a vehicle, display an empty string (looks like the speedometer is gone)
2893 TextDrawSetString(APlayerData[playerid][SpeedometerText], " ");
2894 TextDrawSetString(APlayerData[playerid][FuelGauge], " ");
2895 // Set the speed of the player to 0
2896 APlayerData[playerid][PlayerSpeed] = 0;
2897 }
2898}
2899
2900// This function checks if the player is speeding near a speedcamera
2901CheckPlayerSpeeding(playerid)
2902{
2903 // Check if the player hasn't been caught speeding recently
2904 if (APlayerData[playerid][PlayerCaughtSpeeding] == 0)
2905 {
2906 // Loop through all speedcameras
2907 for (new CamID; CamID < MAX_CAMERAS; CamID++)
2908 {
2909 // Check if this camera has been created
2910 if (ACameras[CamID][CamSpeed] != 0)
2911 {
2912 // Check if the player is the driver of the vehicle
2913 if (GetPlayerVehicleSeat(playerid) == 0)
2914 {
2915 // Check if the player's speed is greater than the speed allowed by this camera (no need to process a distance-check if not speeding)
2916 if (APlayerData[playerid][PlayerSpeed] > ACameras[CamID][CamSpeed])
2917 {
2918 // Check if the player is near the camera
2919 if (IsPlayerInRangeOfPoint(playerid, 50.0, ACameras[CamID][CamX], ACameras[CamID][CamY], ACameras[CamID][CamZ]))
2920 {
2921 // Prevent the player being caught multiple times by the same speed-camera
2922 APlayerData[playerid][PlayerCaughtSpeeding] = 20;
2923 // Increase the wanted-level of this player by 1 star
2924 //SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) + 1);
2925 // Let the player know he's been caught speeding
2926 if(Flash[playerid] == 0){
2927 SendClientMessage(playerid, COLOR_YELLOW, "Vous venez de vous faire flasher, merci de ralentir!");
2928 Flash[playerid] = Flash[playerid]+1;}
2929 else if(Flash[playerid] != 0){
2930 new flafla = Flash[playerid];
2931 new amende = flafla*-200;
2932 new string[128];
2933 if(Flash[playerid] == 1 && Service[playerid] == 0){
2934 format(string, 128, "Vous venez de vous faire flasher pour la %d ière fois! Amende %d$",flafla,amende);
2935 SendClientMessage(playerid, COLOR_LIGHTRED, string);
2936 GivePlayerMoney(playerid, amende);
2937 Flash[playerid] = Flash[playerid]+1;
2938 }
2939 else if(Flash[playerid] > 1 && Service[playerid] == 0){
2940 format(string, 128, "Vous venez de vous faire flasher pour la %d ième fois! Amende %d$",flafla,amende);
2941 SendClientMessage(playerid, COLOR_LIGHTRED, string);
2942 GivePlayerMoney(playerid, amende);
2943 Flash[playerid] = Flash[playerid]+1;
2944 }
2945 else if(Faction[playerid] == 1 && Service[playerid] == 1){
2946 format(string, 128, "Vous venez de vous faire flasher en service. L'état se porte garant de votre amende");
2947 SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
2948 Flash[playerid] = 0;
2949 }
2950
2951 }
2952 }
2953 }
2954 }
2955 }
2956 }
2957 }
2958 else // If the player has been caught before, reduce the value until it's 0 again, then he can be caught again
2959 APlayerData[playerid][PlayerCaughtSpeeding]--;
2960}
2961
2962// This function returns "1" if the given vehicle-id is a plane or helicopter
2963IsVehicleAirVehicle(vid)
2964{
2965 switch (GetVehicleModel(vid))
2966 {
2967 case 592, 577, 511, 512, 593, 520, 553, 476, 519, 460, 513, 548, 425, 417, 487, 488, 497, 563, 447, 469: return 1;
2968 default: return 0;
2969 }
2970
2971 return 0;
2972}
2973
2974// Forward the refueltimer
2975forward RefuelVehicle(playerid);
2976forward RemplirBidon(playerid);
2977// This timer-function is called when a player refuels near a refuelpickup
2978public RemplirBidon(playerid)
2979{
2980 new vid = GetPlayerVehicleID(playerid);
2981 if(AVehicleData[vid][Fuel] > 1200){
2982 SendClientMessage(playerid, COLOR_YELLOW, "Votre reservoir n'est pas assez vidé pour être rempli par un bidon!");
2983 GameTextForPlayer(playerid, "~r~Remplissage impossible...", 3000, 4);
2984 TogglePlayerControllable(playerid, 1);
2985 }
2986 if(AVehicleData[vid][Fuel] <= 1200){
2987 // Calculate the amount of fuel that needs to be refuelled
2988 // Refuel the vehicle
2989 new essence = AVehicleData[vid][Fuel];
2990 AVehicleData[vid][Fuel] = essence+1200;
2991 SendClientMessage(playerid, COLOR_YELLOW, "Vous avez désormais 1/2 plein d'autonomie en plus!");
2992 Bidon[playerid] = Bidon[playerid]-1;
2993 // Allow the player to move again
2994 TogglePlayerControllable(playerid, 1);
2995 }
2996 return 1;
2997}
2998public RefuelVehicle(playerid)
2999{
3000 new RefuelMsg[128];
3001 // Get the vehicle-id of the player's vehicle
3002 new vid = GetPlayerVehicleID(playerid);
3003 // Calculate the amount of fuel that needs to be refuelled
3004 new Amount = MaxFuel - AVehicleData[vid][Fuel];
3005 // Calculate the price to refuel
3006 new RefuelPrice = (Amount * RefuelMaxPrice) / MaxFuel;
3007
3008 // Check if the player has enough cash
3009 if (INT_GetPlayerMoney(playerid) >= RefuelPrice)
3010 {
3011 // Refuel the vehicle
3012 AVehicleData[vid][Fuel] = MaxFuel;
3013 // Withdraw the money from the player
3014 INT_GivePlayerMoney(playerid, -RefuelPrice);
3015 // Let the player know he refuelled his vehicle
3016 format(RefuelMsg, 128, "{00FF00}Le plein de votre véhicule vous a couté %i$", RefuelPrice);
3017 SendClientMessage(playerid, 0xFFFFFFFF, RefuelMsg);
3018 }
3019 else
3020 SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Vous n'avez pas assez d'argent pour effectuer le plein du véhicule");
3021
3022 // Allow the player to move again
3023 TogglePlayerControllable(playerid, 1);
3024
3025 return 1;
3026}
3027
3028forward bool:PlayerOwnsHouse(playerid);
3029public bool:PlayerOwnsHouse(playerid) {
3030 new string[128];
3031 format(string, sizeof(string), "SELECT * FROM maisons WHERE proprietaire='%s'", ReturnName(playerid));
3032 mysql_query(string);
3033 mysql_store_result();
3034 new rows = mysql_num_rows();
3035 mysql_free_result();
3036 if(rows > 0) return true;
3037 return false;
3038}
3039
3040// This function is used to add refuelling pickups to the map
3041AddRefuelPickup(Float:x, Float:y, Float:z)
3042{
3043 // Add the pickup-id to the ARefuelPickups array
3044 for (new i; i < sizeof(ARefuelPickups); i++)
3045 {
3046 // If an empty array-index is found (no valid pickup)
3047 if (!IsValidDynamicPickup(ARefuelPickups[i][PickupID]))
3048 {
3049 // Store the pickup-id in this empty slot
3050 ARefuelPickups[i][PickupID] = CreateDynamicPickup(1244, 1, x, y, z, 0); // Type 1, cannot be pickup up, exists all the time
3051 ARefuelPickups[i][pux] = x;
3052 ARefuelPickups[i][puy] = y;
3053 ARefuelPickups[i][puz] = z;
3054 // Count the total amount of refuelstations that have been created
3055 TotalRefuelStations++;
3056
3057 // Add a 3DText message above the refuel-pickup
3058 CreateDynamic3DTextLabel("Klaxonnez (H)\npour faire le plein!\n ou /achatbidon", 0x008080FF, x, y, z + 0.8, 30.0);
3059
3060 // Add an icon to the map for this refuel-spot
3061 CreateDynamicMapIcon(x, y, z, 56, 0, 0, 0, -1, 300.0);
3062
3063 // Stop browsing through the array
3064 break;
3065 }
3066 }
3067}
3068
3069// This function will load the speedcamera's datafile (used when the server is started to load all cameras)
3070CameraFile_Load()
3071{
3072 // Setup local variables
3073 new file[128], File:CFile, LineFromFile[100], ParameterName[50], ParameterValue[50];
3074 new CamID, Float:x, Float:y, Float:z, Float:rot, MaxSpeed;
3075
3076 // Construct the complete filename for this camera-file
3077 format(file, sizeof(file), CameraFile);
3078
3079 // Check if the camerafile exists
3080 if (fexist(file))
3081 {
3082 // Open the camerafile for reading
3083 CFile = fopen(file, io_read);
3084
3085 // Read the first line of the file
3086 fread(CFile, LineFromFile);
3087
3088 // Keep reading until the end of the file is found (no more data)
3089 // An empty line between data-segments still has the NewLine characters (\r\n) so it's not completely empty
3090 // Reading past the last line will read a completely empty line, therefore indicating the end of the file
3091 while (strlen(LineFromFile) > 0)
3092 {
3093 StripNewLine(LineFromFile); // Strip any newline characters from the LineFromFile
3094 sscanf(LineFromFile, "s[50]s[50]", ParameterName, ParameterValue); // Extract parametername and parametervalue
3095
3096 // Check if there is anything in the LineFromFile (skipping empty lines)
3097 if (strlen(LineFromFile) > 0)
3098 {
3099 // Check if a header for a camera has been found
3100 if (strcmp(ParameterName, "[Camera]", false) == 0)
3101 {
3102 // Clear all variables
3103 x = 0.0;
3104 y = 0.0;
3105 z = 0.0;
3106 rot = 0.0;
3107 MaxSpeed = 0;
3108 }
3109 // Store the proper value in the proper place
3110 if (strcmp(ParameterName, "CamX", false) == 0) // If the parametername is correct ("CamX")
3111 x = floatstr(ParameterValue); // Store the CamX
3112 if (strcmp(ParameterName, "CamY", false) == 0) // If the parametername is correct ("CamY")
3113 y = floatstr(ParameterValue); // Store the CamY
3114 if (strcmp(ParameterName, "CamZ", false) == 0) // If the parametername is correct ("CamZ")
3115 z = floatstr(ParameterValue); // Store the CamZ
3116 if (strcmp(ParameterName, "CamAngle", false) == 0) // If the parametername is correct ("CamAngle")
3117 rot = floatstr(ParameterValue); // Store the CamAngle
3118 if (strcmp(ParameterName, "CamSpeed", false) == 0) // If the parametername is correct ("CamSpeed")
3119 MaxSpeed = strval(ParameterValue); // Store the CamSpeed
3120
3121 // Check if a end of a camera has been found
3122 if (strcmp(ParameterName, "[/Camera]", false) == 0)
3123 {
3124 SetupSpeedCamera(CamID, x, y, z, rot, MaxSpeed); // Setup the camera
3125 TotalCameras++; // Count the total camera's loaded from the file
3126 CamID++; // Increase the CamID to select the next camera before data is loaded (in case more camera's are found in the file)
3127 }
3128 }
3129
3130 // Read the next line of the file
3131 fread(CFile, LineFromFile);
3132 }
3133
3134 // Close the file
3135 fclose(CFile);
3136 }
3137}
3138
3139// This function will save the speedcamera's datafile
3140CameraFile_Save()
3141{
3142 // Setup local variables
3143 new file[100], File:PFile, LineForFile[100];
3144
3145 // Save the file
3146 format(file, sizeof(file), CameraFile); // Construct the complete filename for the camera-file
3147
3148 PFile = fopen(file, io_write); // Open the camera-file for writing
3149
3150 // Loop through all camera's
3151 for (new CamID; CamID < MAX_CAMERAS; CamID++)
3152 {
3153 // Check if this index holds a camera
3154 if (ACameras[CamID][CamSpeed] != 0)
3155 {
3156 fwrite(PFile, "[Camera]\r\n"); // Save the header of the camera
3157
3158 format(LineForFile, 100, "CamX %f\r\n", ACameras[CamID][CamX]);
3159 fwrite(PFile, LineForFile); // And save it to the file
3160 format(LineForFile, 100, "CamY %f\r\n", ACameras[CamID][CamY]);
3161 fwrite(PFile, LineForFile); // And save it to the file
3162 format(LineForFile, 100, "CamZ %f\r\n", ACameras[CamID][CamZ]);
3163 fwrite(PFile, LineForFile); // And save it to the file
3164 format(LineForFile, 100, "CamAngle %f\r\n", ACameras[CamID][CamAngle]);
3165 fwrite(PFile, LineForFile); // And save it to the file
3166 format(LineForFile, 100, "CamSpeed %i\r\n", ACameras[CamID][CamSpeed]);
3167 fwrite(PFile, LineForFile); // And save it to the file
3168
3169 fwrite(PFile, "[/Camera]\r\n"); // Save the end of this camera
3170 fwrite(PFile, "\r\n"); // Save an empty line to split the camera's up a bit (for readability)
3171 }
3172 }
3173
3174 fclose(PFile); // Close the file
3175}
3176
3177
3178
3179// This function creates a speedcamera (store data and create the objects)
3180SetupSpeedCamera(CamID, Float:x, Float:y, Float:z, Float:rot, MaxSpeed)
3181{
3182 // Store all the given values
3183 ACameras[CamID][CamX] = x;
3184 ACameras[CamID][CamY] = y;
3185 ACameras[CamID][CamZ] = z;
3186 ACameras[CamID][CamAngle] = rot;
3187 ACameras[CamID][CamSpeed] = MaxSpeed;
3188 // Create both camera objects and store their reference
3189 ACameras[CamID][CamObj1] = CreateDynamicObject(18880, x, y, z, 0.0, 0.0, rot);
3190 ACameras[CamID][CamObj2] = CreateDynamicObject(18880, x, y, z, 0.0, 0.0, rot + 180.0);
3191
3192 // Update the draw distance of each camera to 300m, otherwise they could be invisible until you're standing right next to them
3193 // By default, dynamic objects have a draw distance of 0m, meaning they're only visible when you're very close to them
3194 Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ACameras[CamID][CamObj1], E_STREAMER_DRAW_DISTANCE, 300.0);
3195 Streamer_SetFloatData(STREAMER_TYPE_OBJECT, ACameras[CamID][CamObj2], E_STREAMER_DRAW_DISTANCE, 300.0);
3196}
3197
3198
3199
3200// ******************************************************************************************************************************
3201// Support functions
3202// ******************************************************************************************************************************
3203
3204// This function is copied from the include-file "dutils.inc"
3205stock StripNewLine(string[])
3206{
3207 new len = strlen(string); // Get the length of the given string
3208
3209 if (string[0] == 0) return ; // If the given string is empty, exit the function
3210 if ((string[len - 1] == '\n') || (string[len - 1] == '\r')) // If the string ends with \n or \r
3211 {
3212 string[len - 1] = 0; // Replace the \n or \r with a 0 character
3213 if (string[0]==0) return ; // If the string became empty, exit the function
3214 if ((string[len - 2] == '\n') || (string[len - 2] == '\r')) // Check again if the string ends with \n or \r
3215 string[len - 2] = 0; // Replace the \n or \r again with a 0 character
3216 }
3217}
3218
3219
3220
3221// ******************************************************************************************************************************
3222// Special functions that try to access external public functions to retreive data from another script
3223// ******************************************************************************************************************************
3224
3225// This function is used to get the player's money
3226INT_GetPlayerMoney(playerid)
3227{
3228 // Setup local variables
3229 new Money;
3230
3231 // Try to call the external function to get the player's money (used to get the serversided money for this player)
3232 Money = CallRemoteFunction("Admin_GetPlayerMoney", "i", playerid);
3233
3234 // The external function returned "0" (as the player doesn't have any money yet), or the function is not used in another script
3235 if (Money == 0)
3236 return GetPlayerMoney(playerid); // Return the normal money of the player
3237 else
3238 return Money; // Return the money that was returned by the external function
3239}
3240
3241// This function is used to set the player's money
3242INT_GivePlayerMoney(playerid, Money)
3243{
3244 // Setup local variables
3245 new Success;
3246
3247 // Try to call the external function to get the player's money (used to get the serversided money for this player)
3248 Success = CallRemoteFunction("Admin_GivePlayerMoney", "ii", playerid, Money);
3249
3250 // The external function returned "0" as the function is not used in another script
3251 if (Success == 0)
3252 GivePlayerMoney(playerid, Money); // Use the normal money (client-sided money)
3253}
3254
3255// This function checks if the admin-level of a player is sufficient
3256INT_CheckPlayerAdminLevel(playerid, AdminLevel)
3257{
3258 // Setup local variables
3259 new Level;
3260
3261 // Check if the player is an RCON admin
3262 if (IsPlayerAdmin(playerid))
3263 return 1; // Return 1 to indicate this player has a sufficient admin-level to use a command
3264
3265 // If the player is not an RCON admin, try to get his admin-level from an external script using a remote function
3266 Level = CallRemoteFunction("Admin_GetPlayerAdminLevel", "i", playerid);
3267 // Check if the player has a sufficient admin-level
3268 if (Level >= AdminLevel)
3269 return 1; // Return 1 to indicate this player has a sufficient admin-level
3270 else
3271 return 0; // Return 0 to indicate this player has an insufficient admin-level
3272}
3273
3274// This function checks if the player has logged in properly by entering his password
3275INT_IsPlayerLoggedIn(playerid)
3276{
3277 // Setup local variables
3278 new LoggedIn;
3279
3280 // Try to determine if the player logged in properly by entering his password in another script
3281 LoggedIn = CallRemoteFunction("Admin_IsPlayerLoggedIn", "i", playerid);
3282
3283 // Check if the player has logged in properly
3284 switch (LoggedIn)
3285 {
3286 case 0: return 1; // No admin script present that holds the LoggedIn status of a player, so allow a command to be used
3287 case 1: return 1; // The player logged in properly by entering his password, allow commands to be used
3288 case -1: return 0; // There is an admin script present, but the player hasn't entered his password yet, so block all commands
3289 // This prevents executing the commands using F6 during login with an admin-account before entering a password
3290 }
3291
3292 // In any other case, block all commands
3293 return 0;
3294}
3295
3296
3297
3298// ******************************************************************************************************************************
3299// External functions to be used from within other filterscripts or gamemode (these aren't called anywhere inside this script)
3300// These functions can be called from other filterscripts or the gamemode to get data from the speedometer filterscript
3301// ******************************************************************************************************************************
3302
3303// This function can be used to get the fuel-status from the given vehicle
3304forward Speedo_GetVehicleFuel(vehicleid);
3305public Speedo_GetVehicleFuel(vehicleid)
3306{
3307 return AVehicleData[vehicleid][Fuel];
3308}
3309
3310// This function can be used to set the fuel-status for the given vehicle
3311forward Speedo_SetVehicleFuel(vehicleid, fuel);
3312public Speedo_SetVehicleFuel(vehicleid, fuel)
3313{
3314 // If a fuel-value of -1 is used, this will refuel the vehicle to maximum fuel
3315 if (fuel == -1)
3316 {
3317 AVehicleData[vehicleid][Fuel] = MaxFuel; // Set fuel to maximum
3318 return 1; // Return 1 (this can be used in the other script to check if the function was called successfully)
3319 }
3320
3321 // Fuel cannot be negative (other negative values are ignored)
3322 if (fuel >= 0)
3323 {
3324 // Check if the fuel is within normal limits
3325 if (fuel > MaxFuel)
3326 AVehicleData[vehicleid][Fuel] = MaxFuel; // If a higher value was given than allowed (higher than MaxFuel), set fuel to maximum
3327 else
3328 AVehicleData[vehicleid][Fuel] = fuel; // Set the fuel to the given value
3329 }
3330 else
3331 return -1; // Return -1 (this can be used in the other script to check if the function was called successfully,
3332 // but the fuel-value was not acceptable)
3333
3334 // Return 1 (this can be used in the other script to check if the function was called successfully)
3335 return 1;
3336}
3337
3338// This function can be used to get the player's speed (returns 0 if the player is not inside a vehicle)
3339forward Speedo_GetPlayerSpeed(playerid);
3340public Speedo_GetPlayerSpeed(playerid)
3341{
3342 return APlayerData[playerid][PlayerSpeed];
3343}
3344
3345// DEBUT DES COMMANDES
3346CMD:credits(playerid, params[]) {
3347SendClientMessage(playerid, COLOR_LIGHTBLUE, "Innovation Rôleplay - Version SQL - Tim Speedle - 2012");
3348return 1;
3349}
3350CMD:supprimerobjets(playerid, params[]) {
3351if(IsPlayerAdmin(playerid))
3352 {
3353 DeleteAllLoadObjects();
3354 SendClientMessage(playerid, COLOR_YELLOW, "Objets supprimés");
3355 return 1;
3356 }
3357else if(!IsPlayerAdmin(playerid))
3358 {
3359 SendClientMessage(playerid, COLOR_LIGHTRED, "Vous n'êtes pas un admin");
3360 return 1;
3361 }
3362return 1;
3363}
3364CMD:rechargerobjets(playerid, params[]) {
3365if(IsPlayerAdmin(playerid))
3366 {
3367 ReloadAllLoadObjects();
3368 SendClientMessage(playerid, COLOR_YELLOW, "Objets rechargés");
3369 return 1;
3370 }
3371else if(!IsPlayerAdmin(playerid))
3372 {
3373 SendClientMessage(playerid, COLOR_LIGHTRED, "Vous n'êtes pas un admin");
3374 return 1;
3375 }
3376return 1;
3377}
3378CMD:chargerobjets(playerid, params[]) {
3379if(IsPlayerAdmin(playerid))
3380 {
3381 StartLoadingObjects();
3382 SendClientMessage(playerid, COLOR_YELLOW, "Objets chargés");
3383 return 1;
3384 }
3385else if(!IsPlayerAdmin(playerid))
3386 {
3387 SendClientMessage(playerid, COLOR_LIGHTRED, "Vous n'êtes pas un admin");
3388 return 1;
3389 }
3390return 1;
3391}
3392CMD:arreterobjets(playerid, params[]) {
3393if(IsPlayerAdmin(playerid))
3394 {
3395 StopLoadingObjects();
3396 SendClientMessage(playerid, COLOR_YELLOW, "Chargement annulé");
3397 return 1;
3398 }
3399else if(!IsPlayerAdmin(playerid))
3400 {
3401 SendClientMessage(playerid, COLOR_LIGHTRED, "Vous n'êtes pas un admin");
3402 return 1;
3403 }
3404return 1;
3405}
3406CMD:vcreer(playerid, params[])
3407{
3408 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous devez être admin!");
3409
3410 new
3411 Float:Pos[4],
3412 ivModel,
3413 ivPrice,
3414 ivColors[2],
3415 Query[256],
3416 iMsg[148];
3417
3418 if(sscanf(params, "iiii", ivModel, ivPrice, ivColors[0], ivColors[1])) return SendClientMessage(playerid, -1, ""#CRED"Usage: "#CORANGE"/VCreer < Modèle > < Prix > < Couleur 1 > < Couleur 2 >");
3419
3420 GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
3421 GetPlayerFacingAngle(playerid, Pos[3]);
3422
3423 ++ Total_Veh_Created;
3424
3425 vInfo[Total_Veh_Created][vModel] = ivModel;
3426 vInfo[Total_Veh_Created][vColor1] = ivColors[0];
3427 vInfo[Total_Veh_Created][vColor2] = ivColors[1];
3428 vInfo[Total_Veh_Created][vPrice] = ivPrice;
3429 vInfo[Total_Veh_Created][vPosX] = Pos[0];
3430 vInfo[Total_Veh_Created][vPosY] = Pos[1];
3431 vInfo[Total_Veh_Created][vPosZ] = Pos[2];
3432 vInfo[Total_Veh_Created][vPosA] = Pos[3];
3433 strmid(vInfo[Total_Veh_Created][vOwner], "Personne", 0, 20, 20);
3434 strmid(vInfo[Total_Veh_Created][vPlate], "A Vendre", 0, 32, 32);
3435 vInfo[Total_Veh_Created][vPaintJ] = 0;
3436 vInfo[Total_Veh_Created][vLocked] = 1;
3437
3438 for(new i = 0; i < MAX_VEH_MODS; ++i) vMods[Total_Veh_Created][i] = 0;
3439
3440 format(Query, sizeof(Query), "INSERT INTO `privateveh` (`vID`, `vModel`, `vColor1`, `vColor2`, `vPrice`, `vOwner`, `vPosX`, `vPosY`, `vPosZ`, `vPosA`, `vPlate`, `vPaintJ`) VALUES (%d, %d, %d, %d, %d, 'Personne', %f, %f, %f, %f, 'A Vendre', 0)",
3441 Total_Veh_Created,
3442 ivModel,
3443 ivColors[0],
3444 ivColors[1],
3445 ivPrice,
3446 Pos[0],
3447 Pos[1],
3448 Pos[2],
3449 Pos[3]);
3450 mysql_query(Query);
3451
3452 new
3453 cCar = CreateVehicle(ivModel, Pos[0], Pos[1], Pos[2], Pos[3], ivColors[0], ivColors[1], 500000);
3454 SetVehicleNumberPlate(cCar, "A Vendre");
3455
3456 OwnedVeh(cCar) = Total_Veh_Created;
3457
3458 SavePrivVeh(Total_Veh_Created);
3459
3460 format(iMsg, sizeof(iMsg), ""#CYELLOW"Vehicule: "#CBLUE"%i (VID: %i) "#CYELLOW"a été crée. Prix: "#CBLUE"$%i "#CYELLOW"Plaque: "#CBLUE"A Vendre", ivModel, Total_Veh_Created, ivPrice);
3461 SendClientMessage(playerid, -1, iMsg);
3462 return 1;
3463}
3464
3465CMD:vsuppr(playerid, params[])
3466{
3467 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous devez être dans un véhicule!");
3468 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous devez être admin!");
3469
3470 new
3471 ivID = GetPlayerVehicleID(playerid);
3472
3473 if(OwnedVeh(ivID) != 0)
3474 {
3475 new
3476 Query[80];
3477
3478 format(Query, sizeof(Query), "DELETE FROM `privateveh` WHERE `vID` = %i LIMIT 1", OwnedVeh(ivID));
3479 mysql_query(Query);
3480
3481 vInfo[OwnedVeh(ivID)][vModel] = 0;
3482 vInfo[OwnedVeh(ivID)][vPosX] = 0.0;
3483 vInfo[OwnedVeh(ivID)][vPosY] = 0.0;
3484 vInfo[OwnedVeh(ivID)][vPosZ] = 0.0;
3485 vInfo[OwnedVeh(ivID)][vPosA] = 0.0;
3486 vInfo[OwnedVeh(ivID)][vColor1] = 0;
3487 vInfo[OwnedVeh(ivID)][vColor2] = 0;
3488 vInfo[OwnedVeh(ivID)][vPrice] = 0;
3489 strmid(vInfo[OwnedVeh(ivID)][vOwner], " ", 0, 5, 5);
3490 strmid(vInfo[OwnedVeh(ivID)][vPlate], " ", 0, 5, 5);
3491 vInfo[OwnedVeh(ivID)][vPaintJ] = 0;
3492 vInfo[OwnedVeh(ivID)][vLocked] = 0;
3493
3494 DestroyVehicle(ivID);
3495 OwnedVeh(OwnedVeh(ivID)) = 0;
3496
3497 -- Total_Veh_Created;
3498 TogglePlayerControllable(playerid, true);
3499
3500 SendClientMessage(playerid, COLOR_GREY, "Ce véhicule a été supprimé!");
3501 return 1;
3502 }
3503 else return SendClientMessage(playerid, COLOR_RED, "Ce véhicule n'est pas achetable!");
3504}
3505CMD:vachat(playerid, params[])
3506{
3507 for(new i = 0; i < MAX_BUYABLE_VEH; ++i)
3508 {
3509 if(strmatch(vInfo[i][vOwner], pName(playerid)))
3510 {
3511 Total_Player_Vehicles[playerid] = Total_Player_Vehicles[playerid] + 1;
3512 }
3513 }
3514
3515 if(Total_Player_Vehicles[playerid] >= MAX_OWNABLE_VEH) return SendClientMessage(playerid, -1, ""#CRED"Vous avez atteint la limite de "#CBLUE""#MAX_OWNABLE_VEH" "#CRED"véhicules!!");
3516
3517 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous devez être dans un véhicule à vendre!");
3518
3519 new
3520 ivID = GetPlayerVehicleID(playerid);
3521
3522 if(OwnedVeh(ivID) != 0)
3523 {
3524 if(strmatch(vInfo[OwnedVeh(ivID)][vOwner], pName(playerid)))
3525 {
3526 SendClientMessage(playerid, COLOR_RED, "Ce véhicule à déjà un propriétaire!");
3527 return 1;
3528 }
3529 if(strmatch(vInfo[OwnedVeh(ivID)][vOwner], "Personne"))
3530 {
3531 if(vInfo[OwnedVeh(ivID)][vPrice] < GetPlayerMoney(playerid))
3532 {
3533 strmid(vInfo[OwnedVeh(ivID)][vOwner], pName(playerid), 0, 128, 128);
3534
3535 new
3536 Float:vPos[4];
3537
3538 GetVehiclePos(ivID, vPos[0], vPos[1], vPos[2]);
3539 GetVehicleZAngle(ivID, vPos[3]);
3540
3541 strmid(vInfo[OwnedVeh(ivID)][vPlate], pName(playerid), 0, 32, 32);
3542 vInfo[OwnedVeh(ivID)][vLocked] = 1;
3543
3544 SetVehicleNumberPlate(ivID, pName(playerid));
3545 SetVehicleToRespawn(ivID);
3546 SetVehiclePos(ivID, vPos[0], vPos[1], vPos[2]);
3547 SetVehicleZAngle(ivID, vPos[3]);
3548 PutPlayerInVehicle(playerid, ivID, 0);
3549
3550 GivePlayerMoney(playerid, - vInfo[OwnedVeh(ivID)][vPrice]);
3551
3552 SendClientMessage(playerid, -1, ""#CYELLOW"Félicitations pour votre achat!");
3553 Demarrage[playerid] = 1;
3554 SendClientMessage(playerid, -1, ""#CBLUE"Votre véhicule est "#CDGREEN"verrouillé.");
3555
3556 TogglePlayerControllable(playerid, true);
3557
3558 SavePrivVeh(OwnedVeh(ivID));
3559
3560 printf("=- Vehicule id: %i a ete achete par: %s -=", OwnedVeh(ivID), pName(playerid));
3561 return 1;
3562 }
3563 else return SendClientMessage(playerid, COLOR_RED, "Vous n'avez pas assez de liquide pour acheter ce véhicule!");
3564 }
3565 else return SendClientMessage(playerid, COLOR_RED, "Ce véhicule n'est pas à vendre!");
3566 }
3567 else return SendClientMessage(playerid, COLOR_RED, "Impossible d'acheter ce véhicule!");
3568}
3569
3570CMD:remplir(playerid, params[])
3571{
3572new siege;
3573if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Vous devez être dans un véhicule!");
3574if(Bidon[playerid] > 0){
3575siege = GetPlayerVehicleSeat(playerid);
3576if (siege == 0)
3577 {
3578 // Message
3579 GameTextForPlayer(playerid, "~g~Remplissage du reservoir en cours...", 3000, 4);
3580 // Empecher de partir
3581 TogglePlayerControllable(playerid, 0);
3582 // Attente jusqu'au plein
3583 SetTimerEx("RemplirBidon", 5000, false, "i", playerid);
3584 }
3585}
3586else if(Bidon[playerid] == 0){SendClientMessage(playerid, COLOR_LIGHTRED, "Vous n'avez pas de bidon d'essence!");}
3587return 1;
3588}
3589
3590CMD:achatbidon(playerid, params[])
3591{
3592 for (new i; i < sizeof(ARefuelPickups); i++)
3593 {
3594 // Verifier si pickupvalide
3595 if (IsValidDynamicPickup(ARefuelPickups[i][PickupID]))
3596 {
3597 // Verifier si assez pret
3598 if(IsPlayerInRangeOfPoint(playerid, 5.0, ARefuelPickups[i][pux], ARefuelPickups[i][puy], ARefuelPickups[i][puz]))
3599 {
3600 if(Faction[playerid] != 2 && Bidon[playerid] >= 2){
3601 SendClientMessage(playerid, COLOR_LIGHTRED, "Vous possèdez déjà 2 bidons!");
3602 }
3603 if(Faction[playerid] != 2 && Bidon[playerid] < 2){
3604 SendClientMessage(playerid, COLOR_GREEN, "Vous venez d'acquérir un bidon pour 500$!");
3605 GivePlayerMoney(playerid, -500);
3606 Bidon[playerid] = Bidon[playerid]+1;
3607 }
3608 else if(Faction[playerid] == 2 && Bidon[playerid] < 4){
3609 SendClientMessage(playerid, COLOR_GREEN, "Vous venez d'acquérir un bidon pour 200$ (Tarif mécanicien)!");
3610 GivePlayerMoney(playerid, -200);
3611 Bidon[playerid] = Bidon[playerid]+1;
3612 if(Faction[playerid] != 2 && Bidon[playerid] >= 4){
3613 SendClientMessage(playerid, COLOR_LIGHTRED, "Vous possèdez déjà 4 bidons!");
3614 }
3615 }
3616 }
3617 }
3618 }
3619 return 1;
3620}
3621
3622CMD:vvente(playerid, params[])
3623{
3624 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous devez être dans un véhicule!");
3625
3626 new
3627 ivID = GetPlayerVehicleID(playerid),
3628 Float:Pos[4];
3629
3630 GetVehiclePos(ivID, Pos[0], Pos[1], Pos[2]);
3631 GetVehicleZAngle(ivID, Pos[3]);
3632
3633 if(OwnedVeh(ivID) != 0)
3634 {
3635 if(strmatch(vInfo[OwnedVeh(ivID)][vOwner], pName(playerid)))
3636 {
3637 vInfo[OwnedVeh(ivID)][vPosX] = Pos[0];
3638 vInfo[OwnedVeh(ivID)][vPosY] = Pos[1];
3639 vInfo[OwnedVeh(ivID)][vPosZ] = Pos[2];
3640 vInfo[OwnedVeh(ivID)][vPosA] = Pos[3];
3641 vInfo[OwnedVeh(ivID)][vPrice] = vInfo[OwnedVeh(ivID)][vPrice];
3642 strmid(vInfo[OwnedVeh(ivID)][vOwner], "Personne", 0, 20, 20);
3643 strmid(vInfo[OwnedVeh(ivID)][vPlate], "A Vendre", 0, 32, 32);
3644 vInfo[OwnedVeh(ivID)][vLocked] = 1;
3645
3646 new perte = vInfo[OwnedVeh(ivID)][vPrice] * 80/100;
3647 GivePlayerMoney(playerid, vInfo[OwnedVeh(ivID)][vPrice] - perte);
3648 new string[128];
3649 format(string, 128, "Vous avez vendu votre véhicule pour %d$", perte);
3650 SendClientMessage(playerid, COLOR_GREEN, string);
3651 Total_Player_Vehicles[playerid] = Total_Player_Vehicles[playerid] - 1;
3652
3653
3654 SetVehicleNumberPlate(ivID, "A Vendre");
3655 SetVehicleToRespawn(ivID);
3656 SetVehiclePos(ivID, Pos[0], Pos[1], Pos[2]);
3657 SetVehicleZAngle(ivID, Pos[3]);
3658
3659 SavePrivVeh(OwnedVeh(ivID));
3660 printf("=- Vehicule id: %i a été vendu par: %s -=", OwnedVeh(ivID), pName(playerid));
3661 return 1;
3662 }
3663 else return SendClientMessage(playerid, COLOR_RED, "Ce véhicule ne vous appartient pas!");
3664 }
3665 else return SendClientMessage(playerid, COLOR_RED, "Impossible d'effectuer cette action!");
3666}
3667
3668CMD:garer(playerid, params[])
3669{
3670 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous devez être dans un véhicule!");
3671
3672 new
3673 ivID = GetPlayerVehicleID(playerid),
3674 Float:Pos[4];
3675
3676 if(OwnedVeh(ivID) != 0)
3677 {
3678 if(strmatch(vInfo[OwnedVeh(ivID)][vOwner], pName(playerid)))
3679 {
3680 GetVehiclePos(ivID, Pos[0], Pos[1], Pos[2]);
3681 GetVehicleZAngle(ivID, Pos[3]);
3682
3683 vInfo[OwnedVeh(ivID)][vPosX] = Pos[0];
3684 vInfo[OwnedVeh(ivID)][vPosY] = Pos[1];
3685 vInfo[OwnedVeh(ivID)][vPosZ] = Pos[2];
3686 vInfo[OwnedVeh(ivID)][vPosA] = Pos[3];
3687
3688 SendClientMessage(playerid, COLOR_GREY, "Votre véhicule est garé à cet emplacement!");
3689
3690 SavePrivVeh(OwnedVeh(ivID));
3691
3692 printf("=- Vehicule id: %i a ete gare par: %s au point: x: %.2f .. y: %.2f .. z: %.2f .. a: %.2f -=", OwnedVeh(ivID), pName(playerid), Pos[0], Pos[1], Pos[2], Pos[3]);
3693 return 1;
3694 }
3695 else return SendClientMessage(playerid, COLOR_RED, "Ce véhicule ne vous appartient pas!");
3696 }
3697 else return SendClientMessage(playerid, COLOR_RED, "Impossible d'effectuer cette action!");
3698}
3699
3700CMD:retraittuning(playerid, params[])
3701{
3702 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous devez être dans un véhicule!");
3703
3704 new
3705 ivID = GetPlayerVehicleID(playerid);
3706
3707 if(OwnedVeh(ivID) != 0)
3708 {
3709 if(strmatch(vInfo[OwnedVeh(ivID)][vOwner], pName(playerid)))
3710 {
3711 for(new i = 0; i < MAX_VEH_MODS; ++i) vMods[OwnedVeh(ivID)][i] = 0;
3712
3713 SendClientMessage(playerid, COLOR_GREY, "Le tuning de ce véhicule a été retiré avec succès!");
3714
3715 SavePrivVeh(OwnedVeh(ivID));
3716
3717 printf("=- Vehicule id: %i a retire son tunning -=", OwnedVeh(ivID));
3718 return 1;
3719 }
3720 else return SendClientMessage(playerid, COLOR_RED, "Ce vehicule ne vous appartient pas!");
3721 }
3722 else return SendClientMessage(playerid, COLOR_RED, "Impossible d'effectuer cette action!");
3723}
3724
3725CMD:plaque(playerid, params[])
3726{
3727 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous devez être dans un véhicule!");
3728
3729 new
3730 ivID = GetPlayerVehicleID(playerid),
3731 iMsg[120];
3732
3733 if(isnull(params)) return SendClientMessage(playerid, -1, ""#CRED"Utilisation: "#CORANGE"/plaque < Plate Numéro / Nom >");
3734
3735 if(strlen(params) < 0 || strlen(params) > 32) return SendClientMessage(playerid, COLOR_RED, "La plaque doit comprendre entre 0 et 32 caractères!");
3736
3737 if(OwnedVeh(ivID) != 0)
3738 {
3739 if(strmatch(vInfo[OwnedVeh(ivID)][vOwner], pName(playerid)))
3740 {
3741 new
3742 Float:vPos[4];
3743
3744 GetVehiclePos(ivID, vPos[0], vPos[1], vPos[2]);
3745 GetVehicleZAngle(ivID, vPos[3]);
3746
3747 strmid(vInfo[OwnedVeh(ivID)][vPlate], params, 0, 32, 32);
3748
3749 SetVehicleNumberPlate(ivID, params);
3750 SetVehicleToRespawn(ivID);
3751 SetVehiclePos(ivID, vPos[0], vPos[1], vPos[2]);
3752 SetVehicleZAngle(ivID, vPos[3]);
3753 PutPlayerInVehicle(playerid, ivID, 0);
3754
3755 format(iMsg, sizeof(iMsg), ""#CBLUE"Votre plaque est désormais: "#CDGREEN"%s", params);
3756 SendClientMessage(playerid, -1, iMsg);
3757
3758 SavePrivVeh(ivID);
3759 return 1;
3760 }
3761 else return SendClientMessage(playerid, COLOR_RED, "Ce véhicule ne vous appartient pas!");
3762 }
3763 else return SendClientMessage(playerid, COLOR_RED, "Impossible d'effectuer cette action!");
3764}
3765
3766CMD:changerplaque(playerid, params[])
3767{
3768 new
3769 var1[32],
3770 var2[32];
3771
3772 if(sscanf(params, "s[32]s[32]", var1, var2)){ printf("Var 1 : %s Var 2 %s", var1, var2);}
3773 //return SendClientMessage(playerid, -1, "Syntax Error");
3774 return printf("Var 1 : %s Var 2 %s", var1, var2);
3775 //return 1;
3776}
3777
3778CMD:verrou(playerid, params[])
3779{
3780 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous devez être dans un véhicule!");
3781
3782 new
3783 ivID = GetPlayerVehicleID(playerid);
3784
3785 if(OwnedVeh(ivID) != 0)
3786 {
3787 if(strmatch(vInfo[OwnedVeh(ivID)][vOwner], pName(playerid)))
3788 {
3789 vInfo[OwnedVeh(ivID)][vLocked] = 1;
3790
3791 SendClientMessage(playerid, -1, ""#CBLUE"Votre véhicule a été "#CDGREEN"verrouillé "#CBLUE"avec succès!");
3792
3793 SavePrivVeh(OwnedVeh(ivID));
3794 return 1;
3795 }
3796 else return SendClientMessage(playerid, COLOR_RED, "Ce véhicule ne vous appartient pas!");
3797 }
3798 else return SendClientMessage(playerid, COLOR_RED, "Impossible d'effectuer cette action!!");
3799}
3800
3801CMD:deverrou(playerid, params[])
3802{
3803 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous devez être dans un véhicule!");
3804
3805 new
3806 ivID = GetPlayerVehicleID(playerid);
3807
3808 if(OwnedVeh(ivID) != 0)
3809 {
3810 if(strmatch(vInfo[OwnedVeh(ivID)][vOwner], pName(playerid)))
3811 {
3812 vInfo[OwnedVeh(ivID)][vLocked] = 0;
3813
3814 SendClientMessage(playerid, -1, ""#CBLUE"Vous avez "#CRED"déverouillé "#CBLUE"votre véhicule!");
3815
3816 SavePrivVeh(OwnedVeh(ivID));
3817 return 1;
3818 }
3819 else return SendClientMessage(playerid, COLOR_RED, "Ce véhicule ne vous appartient pas!");
3820 }
3821 else return SendClientMessage(playerid, COLOR_RED, "Impossible d'effectuer cette action!");
3822}
3823
3824CMD:prixveh(playerid, params[])
3825{
3826 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous devez être admin!");
3827 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "Ce véhicule doit être achetable pour régler le prix!");
3828
3829 new
3830 ivPrice = strval(params),
3831 ivID = GetPlayerVehicleID(playerid),
3832 iMsg[75];
3833
3834 if(isnull(params)) return SendClientMessage(playerid, -1, ""#CRED"Utilisation: "#CORANGE"/prixveh < Prix >");
3835
3836 if(OwnedVeh(ivID) != 0)
3837 {
3838 vInfo[OwnedVeh(ivID)][vPrice] = ivPrice;
3839
3840 format(iMsg, sizeof(iMsg), ""#CDGREEN"Le prix pour ce véhicule est passé à : "#CBLUE"%i$", ivPrice);
3841 SendClientMessage(playerid, -1, iMsg);
3842
3843 SavePrivVeh(OwnedVeh(ivID));
3844
3845 printf("=- Vehicule id: %i a maintenant son prix a: %i$ par: %s -=", OwnedVeh(ivID), ivPrice, pName(playerid));
3846 return 1;
3847 }
3848 else return SendClientMessage(playerid, COLOR_RED, "Impossible d'effectuer cette action!");
3849}
3850
3851CMD:proprioveh(playerid, params[])
3852{
3853 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous devez être admin!");
3854 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous devez être dans un véhicule!");
3855
3856 new
3857 nvOwner,
3858 iMsg[95],
3859 Float:aPos[3],
3860 ivID = GetPlayerVehicleID(playerid);
3861
3862 if(sscanf(params, "u", nvOwner)) return SendClientMessage(playerid, -1, ""#CRED"Utilisation: "#CORANGE"/proprioveh < Nouveau propriétaire >");
3863
3864 if(!IsPlayerConnected(nvOwner)) return SendClientMessage(playerid, COLOR_RED, "Utilisateur pas en ligne!");
3865
3866 if(OwnedVeh(ivID) != 0)
3867 {
3868 strmid(vInfo[OwnedVeh(ivID)][vOwner], pName(nvOwner), 0, 24, 24);
3869 strmid(vInfo[OwnedVeh(ivID)][vPlate], pName(nvOwner), 0, 32, 32);
3870
3871 format(iMsg, sizeof(iMsg), ""#CDGREEN"Vous avez rendu: "#CBLUE"%s(%d) "#CDGREEN"propriétaire de ce véhicule!", pName(nvOwner), nvOwner);
3872 SendClientMessage(playerid, -1, iMsg);
3873 TogglePlayerControllable(playerid, 0);
3874
3875 GetPlayerPos(playerid, aPos[0], aPos[1], aPos[2]);
3876
3877 format(iMsg, sizeof(iMsg), ""#CDGREEN"Admin: "#CBLUE"%s(%d) "#CDGREEN"vous a rendu propriétaire du véhicule suivant : "#CBLUE"%i", pName(playerid), playerid, OwnedVeh(ivID));
3878 SendClientMessage(nvOwner, -1, iMsg);
3879
3880 SetPlayerPos(nvOwner, aPos[0], aPos[1], aPos[2]);
3881
3882 SavePrivVeh(OwnedVeh(ivID));
3883 return 1;
3884 }
3885 else return SendClientMessage(playerid, COLOR_RED, "Impossible d'effectuer cette action!");
3886}
3887
3888CMD:moteur(playerid, params[])
3889{
3890 new vehicleid = GetPlayerVehicleID(playerid);
3891
3892 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Vous devez être dans un véhicule");
3893
3894 if(vehEngine[vehicleid] == 0 && Demarrage[playerid] == 1 && Locatype[playerid] != 510 && Locatype[playerid] != 509)
3895 {
3896 vehEngine[vehicleid] = 2;
3897 SetTimerEx("StartEngine", 3000, 0, "i", playerid);
3898 SendClientMessage(playerid, COLOR_LIGHTRED, "Allumage du moteur en cours...");
3899 }
3900 else if(vehEngine[vehicleid] == 1)
3901 {
3902 vehEngine[vehicleid] = 0;
3903 TogglePlayerControllable(playerid, 0);
3904 SendClientMessage(playerid, COLOR_GREY, "Moteur coupé");
3905 SendClientMessage(playerid, COLOR_YELLOW, "Pour redémarrer, pressez SHIFT ou faites /moteur");
3906 }
3907 else if(Demarrage[playerid] == 0){
3908 SendClientMessage(playerid, COLOR_GREY, "Vous n'avez pas les clés");
3909 TogglePlayerControllable(playerid, 0);
3910 }
3911 return 1;
3912}
3913
3914CMD:couleurveh(playerid, params[])
3915{
3916 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous devez être admin!");
3917 if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous devez être dans un véhicule!");
3918
3919 new
3920 vColors[2],
3921 iMsg[65],
3922 ivID = GetPlayerVehicleID(playerid);
3923
3924 if(sscanf(params, "ii", vColors[0], vColors[1])) return SendClientMessage(playerid, -1, ""#CRED"Utilisation: "#CORANGE"/couleurveh < Couleur1 > < Couleur2 >");
3925
3926 if(OwnedVeh(ivID) != 0)
3927 {
3928 ChangeVehicleColor(OwnedVeh(ivID), vColors[0], vColors[1]);
3929
3930 vInfo[OwnedVeh(ivID)][vColor1] = vColors[0];
3931 vInfo[OwnedVeh(ivID)][vColor2] = vColors[1];
3932
3933 format(iMsg, sizeof(iMsg), ""#CDGREEN"Vous avez réglé la couleur de ce véhicule à : "#CBLUE"%i - %i", vColors[0], vColors[1]);
3934 SendClientMessage(playerid, -1, iMsg);
3935
3936 SavePrivVeh(OwnedVeh(ivID));
3937 return 1;
3938 }
3939 else return SendClientMessage(playerid, COLOR_RED, "Impossible d'effectuer cette action!");
3940}
3941
3942CMD:sortir(playerid, params[])
3943{
3944 if(ivCreated[GetPlayerVehicleID(playerid)] != 0)
3945 {
3946 RemovePlayerFromVehicle(playerid);
3947 TogglePlayerControllable(playerid, true);
3948 }
3949 return 1;
3950}
3951CMD:moto(playerid, params[])
3952{
3953 if(Service[playerid] == 0){SendClientMessage(playerid, COLOR_GREY, "Vous devez être en service!");}
3954 if(Motard[playerid] == 1 && Service[playerid] == 1)
3955 {
3956 SendClientMessage(playerid, COLOR_GREY, "Vous retrouvez vos habits!");
3957 if(Rang[playerid] == 1){SetPlayerSkin(playerid, 71); }
3958 else if(Rang[playerid] == 2){SetPlayerSkin(playerid, 280);}
3959 else if(Rang[playerid] == 3){SetPlayerSkin(playerid, 282);}
3960 else if(Rang[playerid] == 4){SetPlayerSkin(playerid, 285);}
3961 else if(Rang[playerid] == 5){SetPlayerSkin(playerid, 283);}
3962 else if(Rang[playerid] == 6){SetPlayerSkin(playerid, 286);}
3963 else if(Rang[playerid] == 7){SetPlayerSkin(playerid, 165);}
3964 else if(Rang[playerid] == 8){SetPlayerSkin(playerid, 287);}
3965 }
3966 else if(Motard[playerid] == 0){SendClientMessage(playerid, COLOR_GREY, "Vous disposez déjà de vos habits normaux!");}
3967 return 1;
3968}
3969CMD:service(playerid, params[])
3970{
3971 if(Faction[playerid] == 0)
3972 {
3973 SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous n'avez pas de métier!");
3974 }
3975 else if(Faction[playerid] == 1){
3976 if(Service[playerid] == 0 && Pickup[playerid] == 1){SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous êtes désormais en service!"); Service[playerid] = 1; Pickup[playerid] = 0; servicep = CreatePickup(1239, 2, 234.1651,111.4078,1003.2257, -1);
3977 if(Rang[playerid] == 1){SetPlayerSkin(playerid, 71); GivePlayerWeapon(playerid, 3, 1); GivePlayerWeapon(playerid, 41, 500); }
3978 else if(Rang[playerid] == 2){SetPlayerSkin(playerid, 280); GivePlayerWeapon(playerid, 3, 1); GivePlayerWeapon(playerid, 41, 500); GivePlayerWeapon(playerid, 24, 500);}
3979 else if(Rang[playerid] == 3){SetPlayerSkin(playerid, 282); GivePlayerWeapon(playerid, 3, 1); GivePlayerWeapon(playerid, 41, 500); GivePlayerWeapon(playerid, 24, 500); GivePlayerWeapon(playerid, 25, 200);}
3980 else if(Rang[playerid] == 4){SetPlayerSkin(playerid, 285); GivePlayerWeapon(playerid, 3, 1); GivePlayerWeapon(playerid, 17, 10); GivePlayerWeapon(playerid, 23, 150); GivePlayerWeapon(playerid, 29, 500); GivePlayerWeapon(playerid, 34, 20);}
3981 else if(Rang[playerid] == 5){SetPlayerSkin(playerid, 283); GivePlayerWeapon(playerid, 3, 1); GivePlayerWeapon(playerid, 41, 500); GivePlayerWeapon(playerid, 24, 500); GivePlayerWeapon(playerid, 25, 500); GivePlayerWeapon(playerid, 29, 500);}
3982 else if(Rang[playerid] == 6){SetPlayerSkin(playerid, 286); GivePlayerWeapon(playerid, 24, 100); GivePlayerWeapon(playerid, 25, 200); GivePlayerWeapon(playerid, 31, 500);}
3983 else if(Rang[playerid] == 7){SetPlayerSkin(playerid, 165); GivePlayerWeapon(playerid, 23, 200); GivePlayerWeapon(playerid, 31, 500);}
3984 else if(Rang[playerid] == 8){SetPlayerSkin(playerid, 287); GivePlayerWeapon(playerid, 24, 100); GivePlayerWeapon(playerid, 31, 500); GivePlayerWeapon(playerid, 16, 20); GivePlayerWeapon(playerid, 4, 1);}
3985 }
3986 else if(Service[playerid] == 1 && Pickup[playerid] == 1){SendClientMessage(playerid, COLOR_LIGHTRED, "Vous n'êtes plus en service!"); Service[playerid] = 0; SetPlayerSkin(playerid, Skin[playerid]); Pickup[playerid] = 0; servicep = CreatePickup(1239, 2, 234.1651,111.4078,1003.2257, -1);}
3987 else if(Pickup[playerid] != 1){ SendClientMessage(playerid, COLOR_LIGHTRED, "Vous n'êtes pas à l'endroit de mise en service!");}
3988 }
3989 else if(Faction[playerid] == 2)
3990 {
3991 if(Service[playerid] == 0 && Modeleveh[playerid] == 525){SendClientMessage(playerid, COLOR_LIGHTBLUE, "Vous êtes désormais en service!"); Service[playerid] = 1; SetPlayerSkin(playerid, 42);}
3992 else if(Service[playerid] == 1){SendClientMessage(playerid, COLOR_LIGHTRED, "Vous n'êtes plus en service!"); Service[playerid] = 0; SetPlayerSkin(playerid, Skin[playerid]); }
3993 else if(Modeleveh[playerid] != 525){SendClientMessage(playerid, COLOR_GREY, "Vous devez être dans un véhicule de remorquage!");}
3994 }
3995 return 1;
3996}
3997
3998CMD:bug(playerid, params[])
3999{
4000if(Logged[playerid] == 1)
4001 {
4002 new score = GetPlayerScore(playerid); //Recupère le score
4003 new argent = GetPlayerMoney(playerid); //Recupère l'argent
4004 new skin = Skin[playerid]; //Recupère le skin
4005 new actif = Tuto[playerid]; //Recupère le skin
4006 new ebidon = Bidon[playerid];
4007 new query[200], query2[200], pname[24]; //Créé la variable
4008 GetPlayerName(playerid, pname, 24); //Recupération du nom du joueur.
4009 format(query, sizeof(query), "UPDATE joueurs SET score=%d, argent=%d, skin=%d, actif=%d, bidon=%d WHERE nom='%s'", score, argent, skin, actif, ebidon, pname);
4010 mysql_query(query);
4011 new Float:x, Float:y, Float:z;
4012 new XPOSV = GetPlayerPos(playerid, x, y, z);
4013 format(query2, sizeof(query2), "UPDATE joueurs SET XPOS=%d WHERE nom='%s'", XPOSV, pname);
4014 mysql_query(query2);
4015 SendClientMessage(playerid, COLOR_YELLOW, "[SERVEUR] Vous pouvez maintenant vous déconnecter en toute sécurité.");
4016 //Pas besoin de stocker pour mà j
4017 }
4018return 1;
4019}
4020
4021CMD:aideloca(playerid, params[])
4022{
4023 SendClientMessage(playerid, COLOR_YELLOW, "-----AIDE A LA LOCATION-----");
4024 SendClientMessage(playerid, COLOR_YELLOW, "Pour louer faites /louer | Pour sortir faites /rsortir");
4025 SendClientMessage(playerid, COLOR_YELLOW, "Pour rendre le véhicule faites /rendre");
4026 SendClientMessage(playerid, COLOR_YELLOW, "-----------------------------");
4027 return 1;
4028}
4029
4030CMD:ajoutloca(playerid, params[])
4031{
4032 new iVeh, iModel, Float:X1, Float:Y2, Float:Z3, Float:Angle, szString[128];
4033 if (!IsPlayerAdmin(playerid) && !IsPlayerInAnyVehicle(playerid))
4034 return SendClientMessage(playerid, -1, "{3399CC}Serveur:{FFFFFF} Vous n'êtes pas admin");
4035
4036 iVeh = GetPlayerVehicleID(playerid);
4037 iModel = GetVehicleModel(iVeh);
4038 GetVehiclePos(iVeh, X1, Y2, Z3);
4039 GetVehicleZAngle(iVeh, Angle);
4040
4041 format(szString, 128, "CreateRentalVehicle(%d, %f, %f, %f, %f, %d, %d);", iModel, X1, Y2, Z3, Angle, -1, -1);
4042 printf(szString);
4043 SendClientMessage(playerid, -1, szString);
4044 return 1;
4045}
4046
4047CMD:rsortir(playerid, params[])
4048{
4049 new
4050 vID = GetPlayerVehicleID(playerid);
4051 if (!vID)
4052 {
4053 SendClientMessage(playerid, COLOR_LIGHTRED, "Vous n'êtes pas dans un véhicule de location");
4054 return 1;
4055 }
4056 RemovePlayerFromVehicle(playerid);
4057 TogglePlayerControllable(playerid, 1);
4058 GameTextForPlayer(playerid, " ", 500, 4);
4059 return 1;
4060}
4061CMD:supprsup(playerid, params[])
4062{
4063 #if defined ADMIN_USE
4064 if(!IsPlayerAdmin(playerid)) return 1;
4065 #endif
4066 #if defined POLICE_USE
4067 if(GetPlayerSkin(playerid) != 280 && GetPlayerSkin(playerid) != 281 && GetPlayerSkin(playerid) != 282 && GetPlayerSkin(playerid) != 283 && GetPlayerSkin(playerid) != 284 && GetPlayerSkin(playerid) != 285 && GetPlayerSkin(playerid) != 286 && GetPlayerSkin(playerid) != 287 && GetPlayerSkin(playerid) != 288) return 1;
4068 #endif
4069 if(IsPlayerConnected(playerid))
4070 {
4071
4072 new vid = GetPlayerVehicleID(playerid);
4073 if(IsSpu[vid] > 0)
4074 {
4075 IsSpu[vid] = 0;
4076 if(Lamp[vid] == 1)
4077 {
4078 DestroyObject(light[vid]);
4079 Lamp[vid] = 0;
4080 }
4081 DestroyVehicle(vid);
4082 return 1;
4083 }
4084 else
4085 {
4086 SendClientMessage(playerid, COLOR_RED, "This is not a SPU vehicle.");
4087 }
4088 }
4089 return 1;
4090}
4091CMD:ajoutsup(playerid, params[])
4092{
4093 #if defined ADMIN_USE
4094 if(!IsPlayerAdmin(playerid)) return 1;
4095 #endif
4096 #if defined POLICE_USE
4097 if(GetPlayerSkin(playerid) != 280 && GetPlayerSkin(playerid) != 281 && GetPlayerSkin(playerid) != 282 && GetPlayerSkin(playerid) != 283 && GetPlayerSkin(playerid) != 284 && GetPlayerSkin(playerid) != 285 && GetPlayerSkin(playerid) != 286 && GetPlayerSkin(playerid) != 287 && GetPlayerSkin(playerid) != 288) return 1;
4098 #endif
4099 ShowPlayerDialog(playerid, 1123, DIALOG_STYLE_LIST, "Quel véhicule?", DIALOG1_MSG, "Prendre", "Quitter" );
4100 return 1;
4101}
4102
4103CMD:remorquage(playerid, params[])
4104{
4105 if (TowTruckers==0)
4106 {
4107 SendClientMessage(playerid,COLOR_GREY,"Désolé aucun mécanicien n'est disponible pour le moment!");
4108 return 1;
4109 }
4110
4111 new pppName[MAX_PLAYER_NAME];
4112 new Float:x, Float:y, Float:z;
4113 GetPlayerName(playerid,pppName,sizeof(pppName));
4114 GetPlayerPos(playerid, x, y, z);
4115 SendClientMessage(playerid,COLOR_LIGHTBLUE,"Un mécanicien a été prévenu de votre position, merci de patienter.");
4116 SendClientMessage(playerid,COLOR_YELLOW,"RAPPEL : La voiture ne peut pas être remorquée si vous êtes au volant");
4117 for(new i=0; i<MAX_PLAYERS; i++)
4118 {
4119 new msg[256];
4120 new Float: fDistance = GetPlayerDistanceFromPoint(playerid, x, y, z), szMessage[44];
4121 format(msg,sizeof(msg),"*** %s (id:%d) a besoin d'être remorqué ***", pppName, i);
4122 printf("Faction %d", Faction[i]);
4123 printf("Service %d", Service[i]);
4124 if (Faction[i] == 2 && Service[i] == 1)
4125 {
4126 SendClientMessage(i,COLOR_YELLOW,msg);
4127 format(szMessage, sizeof(szMessage), "Le client se situe à %f mètres.", fDistance);
4128 SendClientMessage(i,COLOR_PURPLE,szMessage);
4129 SetPlayerCheckpoint(i, x, y, z, 3.0);
4130 }
4131 return 1;
4132 }
4133 return 1;
4134}
4135
4136CMD:sauvegarde(playerid, params[])
4137{
4138if(Logged[playerid] == 1)
4139 {
4140 new score = GetPlayerScore(playerid); //Recupère le score
4141 new argent = GetPlayerMoney(playerid); //Recupère l'argent
4142 new skin = Skin[playerid]; //Recupère le skin
4143 new actif = Tuto[playerid]; //Recupère le skin
4144 new ebidon = Bidon[playerid];
4145 new query[200], query2[200], pname[24]; //Créé la variable
4146 GetPlayerName(playerid, pname, 24); //Recupération du nom du joueur.
4147 format(query, sizeof(query), "UPDATE joueurs SET score=%d, argent=%d, skin=%d, actif=%d, bidon=%d WHERE nom='%s'", score, argent, skin, actif, ebidon, pname);
4148 mysql_query(query);
4149 new Float:x, Float:y, Float:z;
4150 new XPOSV = GetPlayerPos(playerid, x, y, z);
4151 format(query2, sizeof(query2), "UPDATE joueurs SET XPOS=%d WHERE nom='%s'", XPOSV, pname);
4152 mysql_query(query2);
4153 SendClientMessage(playerid, COLOR_YELLOW, "SAUVEGARDE REUSSIE.");
4154 //Pas besoin de stocker pour mà j
4155 }
4156return 1;
4157}
4158
4159CMD:rendre(playerid, params[])
4160{
4161 GameTextForPlayer(playerid, " ", 500, 4);
4162 if (GetPVarInt(playerid, "Renting") == 0)
4163 {
4164 SendClientMessage(playerid, COLOR_LIGHTRED, "Vous n'avez loué aucun véhicule");
4165 return 1;
4166 }
4167 new
4168 vID = GetPVarInt(playerid, "CarRentID");
4169 IsRented[vID] = 0;
4170 SetPVarInt(playerid, "CarRentID", 0);
4171 SetPVarInt(playerid, "Renting", 0);
4172 new
4173 Float:X1,
4174 Float:Y2,
4175 Float:Z3;
4176 GetPlayerPos(playerid, X1, Y2, Z3);
4177 SetPlayerPos(playerid, X1, Y2, Z3+1);
4178 TogglePlayerControllable(playerid, 1);
4179 SetVehicleToRespawn(vID);
4180 RentedBy[vID] = "personne";
4181 Locatype[playerid] = 0;
4182 return 1;
4183}
4184
4185CMD:louer(playerid, params[])
4186{
4187 GameTextForPlayer(playerid, " ", 500, 4);
4188 new
4189 vID = GetPlayerVehicleID(playerid);
4190 if (!vID)
4191 {
4192 SendClientMessage(playerid, COLOR_GREY, "Vous n'êtes pas dans un véhicule de location");
4193 return 1;
4194 }
4195 if (!IsRentableCar(vID))
4196 {
4197 SendClientMessage(playerid, COLOR_GREY, "Ce véhicule n'est pas un véhicule de location");
4198 return 1;
4199 }
4200 if (IsRentedCar(vID))
4201 {
4202 SendClientMessage(playerid, COLOR_LIGHTRED, "La location est déjà effectuée au nom de quelqu'un d'autre");
4203 return 1;
4204 }
4205 if (GetPVarInt(playerid, "Renting") == 1)
4206 {
4207 SendClientMessage(playerid, COLOR_LIGHTRED, "Vous avez déjà une location en cours");
4208 return 1;
4209 }
4210 if (!CanAffordRental(playerid))
4211 {
4212 new string[128];
4213 format(string, sizeof(string), "Vous n'avez pas les %d$ nécessaires à la location", Prixloca[playerid]);
4214 SendClientMessage(playerid, COLOR_LIGHTRED, string);
4215 return 1;
4216 }
4217 IsRented[vID] = 1;
4218 TogglePlayerControllable(playerid, 1);
4219 SetPVarInt(playerid, "CarRentID", vID);
4220 SetPVarInt(playerid, "Renting", 1);
4221 new string[128];
4222 format(string, sizeof(string), "Cette location vous coute : %d$", Prixloca[playerid]);
4223 SendClientMessage(playerid, COLOR_GREEN, string);
4224 RentedBy[vID] = GetName(playerid);
4225 GivePlayerMoney(playerid, -Prixloca[playerid]);
4226 SendClientMessage(playerid, COLOR_PURPLE, "Véhicule loué, vous pouvez l'utiliser librement.");
4227 Demarrage[playerid] = 1;
4228 Locatype[playerid] = vID;
4229 return 1;
4230}
4231
4232COMMAND:creerradar(playerid, params[])
4233{
4234 new Float:x, Float:y, Float:z, Float:rot, MaxSpeed, Msg[128];
4235
4236 /*// Si joueur pas loggé
4237 if (INT_IsPlayerLoggedIn(playerid) == 0) return 0;
4238 // Si admin level pas suffisant server unknow command
4239 if (INT_CheckPlayerAdminLevel(playerid, 5) == 0) return 0;*/
4240
4241 // Decoupe des parametres
4242 if (sscanf(params, "i", MaxSpeed)) SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Usage: \"/creerradar <vitesse max>\"");
4243 else
4244 {
4245 // Si a pied
4246 if (GetPlayerVehicleSeat(playerid) == -1)
4247 {
4248 // Recup position
4249 GetPlayerPos(playerid, x, y, z);
4250 GetPlayerFacingAngle(playerid, rot);
4251 z = z - 1.0; // Ajuster la position en Z
4252
4253 // bouger le joueur
4254 SetPlayerPos(playerid, x, y + 1.0, z + 1.0);
4255
4256 // Enregistrer la camera
4257 for (new CamID; CamID < MAX_CAMERAS; CamID++)
4258 {
4259 // Verifier si slot libre
4260 if (ACameras[CamID][CamSpeed] == 0)
4261 {
4262 // Installation
4263 SetupSpeedCamera(CamID, x, y, z, rot, MaxSpeed);
4264
4265 // Sauvegarde
4266 CameraFile_Save();
4267
4268 // Message
4269 format(Msg, 128, "{00FF00}Vous avez crée un radar ID: {FFFF00}%i", CamID);
4270 SendClientMessage(playerid, 0xFFFFFFFF, Msg);
4271
4272 return 1;
4273 }
4274 }
4275
4276 // Si max radar
4277 format(Msg, 128, "{FF0000}Impossible de créer plus de %i radars", MAX_CAMERAS);
4278 SendClientMessage(playerid, 0xFFFFFFFF, Msg);
4279 }
4280 else
4281 SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Vous devez être à pied");
4282 }
4283
4284 // Let the server know that this was a valid command
4285 return 1;
4286}
4287
4288// This command allows you to delete a speedcamera
4289COMMAND:delcamera(playerid, params[])
4290{
4291 // Setup local variables
4292 new Msg[128];
4293
4294 // If a player hasn't logged in properly, he cannot use this command
4295 if (INT_IsPlayerLoggedIn(playerid) == 0) return 0;
4296 // If the player has an insufficient admin-level (he needs level 5 or RCON admin), exit the command
4297 // returning "SERVER: Unknown command" to the player
4298 if (INT_CheckPlayerAdminLevel(playerid, 5) == 0) return 0;
4299
4300 // Check if the player is on foot
4301 if (GetPlayerVehicleSeat(playerid) == -1)
4302 {
4303 // Loop through all camera's
4304 for (new CamID; CamID < MAX_CAMERAS; CamID++)
4305 {
4306 // Check if this index is used
4307 if (ACameras[CamID][CamSpeed] != 0)
4308 {
4309 // Check if the player is in range of the camera
4310 if (IsPlayerInRangeOfPoint(playerid, 5.0, ACameras[CamID][CamX], ACameras[CamID][CamY], ACameras[CamID][CamZ]))
4311 {
4312 // Delete both camera objects
4313 DestroyDynamicObject(ACameras[CamID][CamObj1]);
4314 DestroyDynamicObject(ACameras[CamID][CamObj2]);
4315 // Also clear the data from memory
4316 ACameras[CamID][CamX] = 0.0;
4317 ACameras[CamID][CamY] = 0.0;
4318 ACameras[CamID][CamZ] = 0.0;
4319 ACameras[CamID][CamAngle] = 0.0;
4320 ACameras[CamID][CamSpeed] = 0;
4321 ACameras[CamID][CamObj1] = 0;
4322 ACameras[CamID][CamObj2] = 0;
4323
4324 // Also save the entire camerafile again to remove this camera from the file
4325 CameraFile_Save();
4326
4327 // Let the player know he deleted a camera
4328 format(Msg, 128, "{00FF00}Vous avez effacé le radar {FFFF00}%i", CamID);
4329 SendClientMessage(playerid, 0xFFFFFFFF, Msg);
4330
4331 // Exit the function
4332 return 1;
4333 }
4334 }
4335 }
4336
4337 // In case the player wasn't near a speedcamera, inform him about it
4338 SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Vous devez être à proximité d'un radar");
4339 }
4340 else
4341 SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Vous devez être à pied pour effectuer cette commande");
4342
4343 // Let the server know that this was a valid command
4344 return 1;
4345}
4346
4347// This command allows you to refuel your vehicle for free (admins only)
4348COMMAND:fuel(playerid, params[])
4349{
4350 // Setup local variables
4351 new vid, engine, lights, alarm, doors, bonnet, boot, objective;
4352
4353 // If a player hasn't logged in properly, he cannot use this command
4354 if (INT_IsPlayerLoggedIn(playerid) == 0) return 0;
4355 // If the player has an insufficient admin-level (he needs level 1 or RCON admin), exit the command
4356 // returning "SERVER: Unknown command" to the player
4357 if (INT_CheckPlayerAdminLevel(playerid, 1) == 0) return 0;
4358
4359 // Check if the player is the driver of a vehicle
4360 if (GetPlayerVehicleSeat(playerid) == 0)
4361 {
4362 // Get the vehicleid
4363 vid = GetPlayerVehicleID(playerid);
4364 // Refuel the vehicle
4365 AVehicleData[vid][Fuel] = MaxFuel;
4366 // Also (re-)start the engine and turn on the lights in case the vehicle is completely out of fuel
4367 GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
4368 SetVehicleParamsEx(vid, 1, 1, alarm, doors, bonnet, boot, objective);
4369 // Let the player know about it
4370 SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Your vehicle is refuelled");
4371 }
4372 else
4373 SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}You're not driving a vehicle");
4374
4375 // Let the server know that this was a valid command
4376 return 1;
4377}
4378
4379CMD:b(playerid,params[])
4380{
4381 if(isnull(params)) return SendClientMessage(playerid,SYellow,"Usage: /b <TEXTE> ~Pour parler en hors rôleplay local.");
4382 CostumFormat(SCSString,"(([%d]%s: %s))",playerid,GetPlayerNameEx(playerid),params);
4383 SCGeneral(playerid,SCSString,20,0,0,0,0,SWhite,0,0,0,0);
4384 return 1;
4385}
4386
4387CMD:o(playerid,params[])
4388{
4389 if(isnull(params)) return SendClientMessage(playerid,SYellow,"Usage: /o(oc) <TEXTE> ~Pour parler en hors rôleplay global.");
4390 CostumFormat(SCSString,"(([OOC]%s: %s))",GetPlayerNameEx(playerid),params);
4391 SCGeneral(playerid,SCSString,20,0,0,0,0,SWhite,0,0,0,0);
4392 return 1;
4393}
4394
4395CMD:ooc(playerid,params[]) return cmd_o(playerid,params);
4396
4397CMD:PPpm(playerid,params[])
4398{
4399 if(sscanf(params,"us[129]",SCSInt,params)) return SendClientMessage(playerid,SYellow,"Usage: /pm <playerid> <text> ~To send pm.");
4400 if(!IsPlayerConnected(SCSInt) || playerid == SCSInt) return SendClientMessage(playerid,SRed,"Erreur.");
4401 CostumFormat(SCSString,"(([SMS]%s: %s))",GetPlayerNameEx(playerid),params);
4402 SCMessage(playerid,SCSInt,SCSString,SWhite);
4403 return 1;
4404}
4405
4406CMD:v(playerid,params[])
4407{
4408 if(isnull(params)) return SendClientMessage(playerid,SYellow,"Usage: /v(oixbasse) <TEXTE> ~Pour parler tout bas.");
4409 CostumFormat(SCSString,"[Voix basse]%s: %s",GetPlayerNameEx(playerid),params);
4410 SCGeneral(playerid,SCSString,2,4,6,8,10,SWhite,SChat1,SChat2,SChat3,SChat4);
4411 SCAnim(playerid,params,at);
4412 return 1;
4413}
4414
4415CMD:voixbasse(playerid,params[]) return cmd_v(playerid,params);
4416
4417CMD:c(playerid,params[])
4418{
4419 if(isnull(params)) return SendClientMessage(playerid,SYellow,"Usage: /c(rier) <TEXTE> ~Pour crier.");
4420 CostumFormat(SCSString,"[Crie]%s: %s",GetPlayerNameEx(playerid),params);
4421 SCGeneral(playerid,SCSString,15,20,25,30,35,SWhite,SChat1,SChat2,SChat3,SChat4);
4422 SCAnim(playerid,params,at);
4423 return 1;
4424}
4425
4426CMD:crier(playerid,params[]) return cmd_c(playerid,params);
4427
4428CMD:j(playerid,params[])
4429{
4430 if(sscanf(params,"us[129]",SCSInt,params)) return SendClientMessage(playerid,SYellow,"Usage: /j(joueur) <id> <texte> ~pour envoyer un message.");
4431 if(!IsPlayerConnected(SCSInt) || playerid == SCSInt) return SendClientMessage(playerid,SRed,"Erreur.");
4432 GetPlayerPos(playerid,SCSPos[0],SCSPos[1],SCSPos[2]);
4433 if(IsPlayerInRangeOfPoint(SCSInt,3,SCSPos[0],SCSPos[1],SCSPos[2]))
4434 {
4435 CostumFormat(SCSString,"[Joueur]%s: %s",GetPlayerNameEx(playerid),params);
4436 SCMessage(playerid,SCSInt,params,SWhite);
4437 }
4438 else SendClientMessage(playerid,SRed,"Joueur trop loin.");
4439 return 1;
4440}
4441
4442CMD:joueur(playerid,params[]) return cmd_j(playerid,params);
4443
4444CMD:me(playerid,params[])
4445{
4446 if(isnull(params)) return SendClientMessage(playerid,SYellow,"Usage: /me <TEXTE> ~Pour dire ce que vous faites.");
4447 CostumFormat(SCSString,"*%s %s*",GetPlayerNameEx(playerid),params);
4448 SCGeneral(playerid,SCSString,15,0,0,0,0,SPurple,0,0,0,0);
4449 return 1;
4450}
4451
4452CMD:sme(playerid,params[])
4453{
4454 if(isnull(params)) return SendClientMessage(playerid,SYellow,"Usage: /sme <TEXTE> ~Pour dire ce que vous faites (Au dessus de votre tête).");
4455 CostumFormat(SCSString,"*%s %s*",GetPlayerNameEx(playerid),params);
4456 SCBubble(playerid,SCSString,true,SPurple,10,5000);
4457 return 1;
4458}
4459
4460CMD:faire(playerid,params[])
4461{
4462 if(isnull(params)) return SendClientMessage(playerid,SYellow,"Usage: /faire <TEXTE> ~Pour décrire quelque chose.");
4463 CostumFormat(SCSString,"*%s ((%s))*",params,GetPlayerNameEx(playerid));
4464 SCGeneral(playerid,SCSString,15,0,0,0,0,SPurple,0,0,0,0);
4465 return 1;
4466}
4467
4468CMD:etatchat(playerid,params[])
4469{
4470 ShowPlayerDialog(playerid,1000,2,"Etat du chat","Normal\nChuchotement\nCrier","Selectioner","Annuler");
4471 return 1;
4472}
4473
4474CMD:et(playerid,params[]) return cmd_etatchat(playerid,params);
4475
4476CMD:mute(playerid,params[])
4477{
4478 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,SRed,"Seuls les admins sont autorisés à utiliser cette commande.");
4479 if(sscanf(params,"u",SCSInt)) return SendClientMessage(playerid,SYellow,"Usage: /mute <id> ~ pour muter/unmute un joueur.");
4480 if(!IsPlayerConnected(SCSInt)) return SendClientMessage(playerid,SRed,"Joueur non connecté");
4481 if(Muted{SCSInt} == true)
4482 {
4483 Muted{SCSInt} = false;
4484 format(params,128,"%s s'est vu redonner la parole par %s",SUName(SCSInt),SUName(playerid));
4485 SendClientMessageToAll(SOrange,params);
4486 }
4487 else
4488 {
4489 Muted{SCSInt} = true;
4490 format(params,128,"%s s'est vu perdre la parole par %s",SUName(SCSInt),SUName(playerid));
4491 SendClientMessageToAll(SOrange,params);
4492 }
4493 return 1;
4494}
4495
4496CMD:aidechat(playerid,params[])
4497{
4498 SendClientMessage(playerid,SYellow,"----------------------AIDE DU CHAT----------------------");
4499 SendClientMessage(playerid,SYellow,"Usage: /b <TEXTE> ~Pour parler en hors rôleplay local.");
4500 SendClientMessage(playerid,SYellow,"Usage: /o(oc) <TEXTE> ~Pour parler en hors rôleplay général.");
4501 //SendClientMessage(playerid,SYellow,"Usage: /pm <playerid> <text> ~To send pm.");
4502 SendClientMessage(playerid,SYellow,"Usage: /v(oixbasse) <TEXTE> ~Pour parler à voix basse.");
4503 SendClientMessage(playerid,SYellow,"Usage: /j(oueur) <id> <TEXTE> ~Pour envoyer un message à un joueur.");
4504 SendClientMessage(playerid,SYellow,"Usage: /me <TEXTE> ~Pour dire ce que vous faites.");
4505 SendClientMessage(playerid,SYellow,"Usage: /sme <TEXTE> ~Pour dire ce que vous faites. (Au dessus de vous).");
4506 SendClientMessage(playerid,SYellow,"Usage: /faire <TEXTE> ~Pour décrire quelque chose.");
4507 //SendClientMessage(playerid,SYellow,"Usage: /a(dminchat) <text> ~To talk in admin chat.");
4508 SendClientMessage(playerid,SYellow,"Usage: /et(atchat) ~Pour ouvrir la fenetre de sélection de mode de chat.");
4509 //SendClientMessage(playerid,SYellow,"Usage: /mute ~To mute/unmute player.");
4510 return 1;
4511}
4512
4513CMD:admin(playerid,params[])
4514{
4515 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,SRed,"Seuls les admins peuvent utiliser cette commande.");
4516 if(isnull(params)) return SendClientMessage(playerid,SYellow,"Usage: /a <TEXTE> ~Pour parler dans le chat admin.");
4517 format(params,160,"(([Admin]%s: %s))",GetPlayerNameEx(playerid),params);
4518 SLog(STimeDate(),params,"Admin Chat.ini");
4519 AdminChat(params);
4520 return 1;
4521}
4522
4523CMD:a(playerid,params[]) return cmd_admin(playerid,params);
4524
4525command(coffre, playerid, params[])
4526{
4527 new option[8], string[128], amount;
4528 if(sscanf(params, "sd", option, amount))
4529 {
4530 SendClientMessage(playerid, COLOR_WHITE, "/coffre option montant - options: Retrait | Depot");
4531 } else {
4532 if(strcmp(option, "retrait", true) == 0) {
4533 if(HD[InsideHouse[playerid]][safeamount] >= amount) {
4534 GivePlayerMoney(playerid, amount);
4535 format(string, sizeof(string), "Vous avez pris %d$ de votre coffre fort.", amount);
4536 SendClientMessage(playerid, COLOR_WHITE, string);
4537 HD[InsideHouse[playerid]][safeamount] -= amount;
4538 } else {
4539 SendClientMessage(playerid, COLOR_WHITE, "Votre coffre est vide.");
4540 }
4541 } else if(strcmp(option, "depot", true) == 0) {
4542 if(GetPlayerMoney(playerid) >= amount) {
4543 GivePlayerMoney(playerid, -amount);
4544 HD[InsideHouse[playerid]][safeamount] += amount;
4545 format(string, sizeof(string), "Vous avez déposé %d$ dans votre coffre fort", amount);
4546 SendClientMessage(playerid, COLOR_WHITE, string);
4547 } else {
4548 SendClientMessage(playerid, COLOR_WHITE, "Vous n'avez pas assez en liquide.");
4549 }
4550 } else {
4551 SendClientMessage(playerid, COLOR_WHITE, "/coffre option montant - options: Retrait | Depot");
4552 }
4553 }
4554 return 1;
4555}
4556
4557command(armurerie, playerid, params[])
4558{
4559 new option[8], string[128];
4560 if(strcmp(HD[InsideHouse[playerid]][owner], ReturnName(playerid), true) == 0) {
4561 if(sscanf(params, "s", option))
4562 {
4563 SendClientMessage(playerid, COLOR_WHITE, "/armurerie option - options: Retrait | Depot");
4564 } else {
4565 if(strcmp(option, "retrait", true) == 0) {
4566 if(HD[InsideHouse[playerid]][gunslot1] > 0) {
4567 GivePlayerWeapon(playerid, HD[InsideHouse[playerid]][gunslot1], 99999);
4568 format(string, sizeof(string), "Vous avez recupéré un %s de votre armurerie.", WeaponNames[HD[InsideHouse[playerid]][gunslot1]]);
4569 SendClientMessage(playerid, COLOR_WHITE, string);
4570 HD[InsideHouse[playerid]][gunslot1] = 0;
4571 } else {
4572 SendClientMessage(playerid, COLOR_WHITE, "Vous n'avez pas d'armes chez vous.");
4573 }
4574 } else if(strcmp(option, "depot", true) == 0) {
4575 if(HD[InsideHouse[playerid]][gunslot1] == 0) {
4576 if(GetPlayerWeapon(playerid) != 0) {
4577 HD[InsideHouse[playerid]][gunslot1] = GetPlayerWeapon(playerid);
4578 RemovePlayerWeapon(playerid, GetPlayerWeapon(playerid));
4579 format(string, sizeof(string), "Vous avez mit votre %s dans votre armurerie.", WeaponNames[HD[InsideHouse[playerid]][gunslot1]]);
4580 SendClientMessage(playerid, COLOR_WHITE, string);
4581 } else {
4582 SendClientMessage(playerid, COLOR_WHITE, "Vous devez avoir l'arme en main pour la mettre dans votre armurerie!");
4583 }
4584 } else {
4585 SendClientMessage(playerid, COLOR_WHITE, "Votre armurerie est pleine.");
4586 }
4587 } else {
4588 SendClientMessage(playerid, COLOR_WHITE, "/armurerie option - options: Retrait | Depot");
4589 }
4590 }
4591 } else {
4592 SendClientMessage(playerid, COLOR_WHITE, "Ce n'est pas votre maison!");
4593 }
4594 return 1;
4595}
4596command(mvente, playerid, params[])
4597{
4598 #pragma unused params
4599 new string[128];
4600 if(!PlayerOwnsHouse(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous ne possédez aucune maison!");
4601 for(new h; h < MAX_HOUSES; h++)
4602 {
4603 if(IsPlayerInRangeOfPoint(playerid, 3.5, HD[h][exteriorX], HD[h][exteriorY], HD[h][exteriorZ]))
4604 {
4605 if(strcmp(HD[h][owner], ReturnName(playerid), true, strlen(ReturnName(playerid))) == 0)
4606 {
4607 GivePlayerMoney(playerid,HD[h][price]);
4608 HD[h][locked] = 1;
4609 format(HD[h][owner], 24, "A vendre");
4610 format(string, sizeof(string), "Vous avez vendu votre maison pour %d$", HD[h][price]);
4611 SendClientMessage(playerid, COLOR_WHITE, string);
4612 SaveHouses();
4613 return 1;
4614 }
4615 return SendClientMessage(playerid, COLOR_RED, "Cette maison n'est pas à vous.");
4616 }
4617 }
4618 return SendClientMessage(playerid, COLOR_RED, "Vous devez être à l'exterieur de votre maison.");
4619}
4620
4621command(ameliorerverrou, playerid, params[])
4622{
4623 for(new h; h < MAX_HOUSES; h++) {
4624 if(IsPlayerInRangeOfPoint(playerid, 3.5, HD[h][exteriorX], HD[h][exteriorY], HD[h][exteriorZ])) {
4625 if(HD[h][locklevel] == 0) { return SendClientMessage(playerid, COLOR_WHITE, "Cette maison n'a pas de verrou!"); }
4626 if(HD[h][locklevel] < 5) {
4627 if(HD[h][locked] == 0) {
4628 if(GetPlayerMoney(playerid) >= 5000 * (HD[h][locklevel]/3)) {
4629 GivePlayerMoney(playerid, -5000 * (HD[h][locklevel]/3));
4630 SendClientMessage(playerid, COLOR_WHITE, "Vous avez payé le serrurier pour améliorer votre verrou.");
4631 HD[h][locklevel]++;
4632 }
4633 }
4634 } else { SendClientMessage(playerid, COLOR_WHITE, "Cette maison a déjà le meilleur verrou du marché."); }
4635 }
4636 if(IsPlayerInRangeOfPoint(playerid, 3.5, HD[h][interiorX], HD[h][interiorY], HD[h][interiorZ]) && GetPlayerInterior(playerid) == HD[h][interiorInt]) {
4637 if(GetPlayerVirtualWorld(playerid) == h) {
4638 if(HD[h][locklevel] == 0) { return SendClientMessage(playerid, COLOR_WHITE, "Cette maison n'a pas de verrou!"); }
4639 if(HD[h][locklevel] < 5) {
4640 if(HD[h][locked] == 0) {
4641 if(GetPlayerMoney(playerid) >= 5000 * (HD[h][locklevel]/3)) {
4642 GivePlayerMoney(playerid, -5000 * (HD[h][locklevel]/3));
4643 SendClientMessage(playerid, COLOR_WHITE, "Vous avez payé le serrurier pour améliorer votre verrou.");
4644 HD[h][locklevel]++;
4645 }
4646 }
4647 } else { SendClientMessage(playerid, COLOR_WHITE, "Cette maison a déjà le meilleur verrou du marché."); }
4648 }
4649 }
4650 }
4651 return 1;
4652}
4653
4654command(reparerverrou, playerid, params[])
4655{
4656 for(new h; h < MAX_HOUSES; h++) {
4657 if(IsPlayerInRangeOfPoint(playerid, 3.5, HD[h][exteriorX], HD[h][exteriorY], HD[h][exteriorZ])) {
4658 if(HD[h][locklevel] == 0) {
4659 if(GetPlayerMoney(playerid) >= 5000) {
4660 GivePlayerMoney(playerid, -5000);
4661 SendClientMessage(playerid, COLOR_WHITE, "Vous avez payé le serrurier pour réparer votre serrure.");
4662 HD[h][locklevel] = 1;
4663 }
4664 }
4665 }
4666 if(IsPlayerInRangeOfPoint(playerid, 3.5, HD[h][interiorX], HD[h][interiorY], HD[h][interiorZ]) && GetPlayerInterior(playerid) == HD[h][interiorInt]) {
4667 if(GetPlayerVirtualWorld(playerid) == h) {
4668 if(HD[h][locklevel] == 0) {
4669 if(GetPlayerMoney(playerid) >= 5000) {
4670 GivePlayerMoney(playerid, -5000);
4671 SendClientMessage(playerid, COLOR_WHITE, "Vous avez payé le serrurier pour réparer votre serrure.");
4672 HD[h][locklevel] = 1;
4673 }
4674 }
4675 }
4676 }
4677 }
4678 return 1;
4679}
4680
4681command(crochetage, playerid, params[])
4682{
4683 new lockBreakTime;
4684 for(new h; h < MAX_HOUSES; h++) {
4685 if(IsPlayerInRangeOfPoint(playerid, 3.5, HD[h][exteriorX], HD[h][exteriorY], HD[h][exteriorZ])) {
4686 if(HD[h][locklevel] == 0) return SendClientMessage(playerid, COLOR_WHITE, "Cette maison n'a pas de verrou!");
4687 if(HD[h][locked] == 0) {
4688 lockBreakTime = HD[h][locklevel] * 40 + random(20);
4689 } else {
4690 lockBreakTime = HD[h][locklevel] * 35 + random(20);
4691 }
4692 TogglePlayerControllable(playerid, 0);
4693 housetimer = SetTimerEx("BreakHouseLock", 1000, false, "did", h, playerid, lockBreakTime);
4694 ApplyAnimation(playerid,"GANGS","DEALER_DEAL",1,1,0,0,0,0);
4695 }
4696 if(IsPlayerInRangeOfPoint(playerid, 3.5, HD[h][interiorX], HD[h][interiorY], HD[h][interiorZ]) && GetPlayerInterior(playerid) == HD[h][interiorInt]) {
4697 if(GetPlayerVirtualWorld(playerid) == h) {
4698 if(HD[h][locklevel] == 0) return SendClientMessage(playerid, COLOR_WHITE, "Cette maison n'a pas de verrou!");
4699 if(HD[h][locked] == 0) {
4700 lockBreakTime = HD[h][locklevel] * 45 + random(20);
4701 } else {
4702 lockBreakTime = HD[h][locklevel] * 40 + random(20);
4703 }
4704 TogglePlayerControllable(playerid, 0);
4705 housetimer = SetTimerEx("BreakHouseLock", 1000, false, "did", h, playerid, lockBreakTime);
4706 ApplyAnimation(playerid,"GANGS","DEALER_DEAL",1,1,0,0,0,0);
4707 }
4708 }
4709 }
4710 return 1;
4711}
4712
4713command(abandon, playerid, params[])
4714{
4715 if(breakingLock[playerid]) {
4716 breakingLock[playerid] = false;
4717 TogglePlayerControllable(playerid, 1);
4718 SendClientMessage(playerid, COLOR_WHITE, "Vous avez abandonné le crochetage.");
4719 KillTimer(housetimer);
4720 ClearAnimations(playerid);
4721 return 1;
4722 }
4723 return 1;
4724}
4725
4726command(cle, playerid, params[])
4727{
4728 #pragma unused params
4729 for(new h; h < MAX_HOUSES; h++) {
4730 if(IsPlayerInRangeOfPoint(playerid, 3.5, HD[h][exteriorX], HD[h][exteriorY], HD[h][exteriorZ])) {
4731 if(strcmp(HD[h][owner], ReturnName(playerid), true, strlen(ReturnName(playerid))) == 0) {
4732 if(HD[h][locked] == 0) {
4733 if(HD[h][locklevel] == 0) return SendClientMessage(playerid, COLOR_WHITE, "Votre serrure est cassée!");
4734 GameTextForPlayer(playerid, "Habitation ~r~fermée à clé", 3000, 5);
4735 HD[h][locked] = 1;
4736 } else {
4737 GameTextForPlayer(playerid, "Habitation ~g~non fermée", 3000, 5);
4738 HD[h][locked] = 0;
4739 }
4740 }
4741 }
4742 if(IsPlayerInRangeOfPoint(playerid, 3.5, HD[h][interiorX], HD[h][interiorY], HD[h][interiorZ]) && GetPlayerInterior(playerid) == HD[h][interiorInt]) {
4743 if(GetPlayerVirtualWorld(playerid) == h) {
4744 if(strcmp(HD[h][owner], ReturnName(playerid), true, strlen(ReturnName(playerid))) == 0) {
4745 if(HD[h][locked] == 0) {
4746 if(HD[h][locklevel] == 0) return SendClientMessage(playerid, COLOR_WHITE, "Votre serrure est cassée!");
4747 GameTextForPlayer(playerid, "Habitation ~r~fermée à clé", 3000, 5);
4748 HD[h][locked] = 1;
4749 } else {
4750 GameTextForPlayer(playerid, "Habitation ~g~non fermée", 3000, 5);
4751 HD[h][locked] = 0;
4752 }
4753 }
4754 }
4755 }
4756 }
4757 return 1;
4758}
4759
4760command(prixmais, playerid, params[])
4761{
4762 new HID, HP, string[128];
4763 if(IsPlayerAdmin(playerid)) {
4764 if(sscanf(params, "dd", HID, HP)) {
4765 SendClientMessage(playerid, COLOR_WHITE, "/prixmais [ID MAISON] [PRIX]");
4766 } else {
4767 HD[HID][price] = HP;
4768 format(string, sizeof(string), "Vous avez réglé le prix de la maison de %d à %d$.", HID, HP);
4769 SendClientMessage(playerid, COLOR_WHITE, string);
4770 }
4771 }
4772 return 1;
4773}
4774
4775command(achatmaison, playerid, params[])
4776{
4777 #pragma unused params
4778 if(PlayerOwnsHouse(playerid)) return SendClientMessage(playerid, COLOR_RED, "Vous possédez déjà une maison!");
4779 for(new h; h < MAX_HOUSES; h++) {
4780 if(IsPlayerInRangeOfPoint(playerid, 3.5, HD[h][exteriorX], HD[h][exteriorY], HD[h][exteriorZ])) {
4781 if(strcmp(HD[h][owner], "A vendre", true)) return SendClientMessage(playerid, COLOR_RED, "Cette maison à déjà un propriétaire!");
4782 if(HD[h][price] > -1) {
4783 if(GetPlayerMoney(playerid) >= HD[h][price]) {
4784 format(HD[h][owner], 24, ReturnName(playerid));
4785 SendClientMessage(playerid, COLOR_GREEN, "Vous venez d'acquérir cette propriété!");
4786 GivePlayerMoney(playerid, -HD[h][price]);
4787 } else {
4788 SendClientMessage(playerid, COLOR_LIGHTRED, "Vous n'avez pas assez d'argent!");
4789 }
4790 } else {
4791 GameTextForPlayer(playerid, "Maison ~r~indisponible", 3000, 5);
4792 }
4793 }
4794 }
4795 return 1;
4796}
4797
4798command(msortir, playerid, params[])
4799{
4800 #pragma unused params
4801 for(new h; h < MAX_HOUSES; h++) {
4802 if(IsPlayerInRangeOfPoint(playerid, 3.5, HD[InsideHouse[playerid]][interiorX], HD[InsideHouse[playerid]][interiorY], HD[InsideHouse[playerid]][interiorZ])) {
4803 if(GetPlayerVirtualWorld(playerid) == h) {
4804 if(HD[h][locked] == 0) {
4805 SetPlayerVirtualWorld(playerid, 0);
4806 SetPlayerInterior(playerid, 0);
4807 SetPlayerPos(playerid, HD[InsideHouse[playerid]][exteriorX], HD[InsideHouse[playerid]][exteriorY], HD[InsideHouse[playerid]][exteriorZ]);
4808 } else {
4809 GameTextForPlayer(playerid, "Maison ~r~verrouillée", 3000, 5);
4810 }
4811 }
4812 }
4813 }
4814 return 1;
4815}
4816
4817command(mentrer, playerid, params[])
4818{
4819 #pragma unused params
4820 for(new h; h < MAX_HOUSES; h++) {
4821 if(IsPlayerInRangeOfPoint(playerid, 3.5, HD[h][exteriorX], HD[h][exteriorY], HD[h][exteriorZ])) {
4822 if(HD[h][locked] == 0) {
4823 SetPlayerVirtualWorld(playerid, h);
4824 InsideHouse[playerid] = h;
4825 SetPlayerInterior(playerid, HD[h][interiorInt]);
4826 SetPlayerPos(playerid, HD[h][interiorX], HD[h][interiorY], HD[h][interiorZ]);
4827 } else {
4828 GameTextForPlayer(playerid, "Maison ~r~verrouillée", 3000, 5);
4829 }
4830 }
4831 }
4832 return 1;
4833}
4834
4835explode(const sSource[], aExplode[][], const sDelimiter[] = " ", iVertices = sizeof aExplode, iLength = sizeof aExplode[]) // Created by Westie
4836{
4837 new
4838 iNode,
4839 iPointer,
4840 iPrevious = -1,
4841 iDelimiter = strlen(sDelimiter);
4842
4843 while(iNode < iVertices)
4844 {
4845 iPointer = strfind(sSource, sDelimiter, false, iPointer);
4846
4847 if(iPointer == -1)
4848 {
4849 strmid(aExplode[iNode], sSource, iPrevious, strlen(sSource), iLength);
4850 break;
4851 }
4852 else
4853 {
4854 strmid(aExplode[iNode], sSource, iPrevious, iPointer, iLength);
4855 }
4856
4857 iPrevious = (iPointer += iDelimiter);
4858 ++iNode;
4859 }
4860 return iPrevious;
4861}
4862
4863LoadHouses()
4864{
4865 print("Chargement des maisons...");
4866 mysql_query("SELECT NULL FROM maisons");
4867 mysql_store_result();
4868 new rows = mysql_num_rows();
4869 mysql_free_result();
4870
4871 CheckMySQL();
4872
4873 for(new i; i < rows; i++) {
4874 new string[128];
4875 format(string, sizeof(string), "SELECT * FROM maisons WHERE ID = '%d'", i);
4876 mysql_query(string);
4877 mysql_store_result();
4878
4879 new row[128]; // The length of 1 'row' total.
4880 new field[14][24];
4881 mysql_fetch_row_format(row, "|");
4882 explode(row, field, "|");
4883 mysql_free_result();
4884 HD[i][ID] = strval(field[0]);
4885 format(HD[i][owner], 32, "%s", field[1]);
4886 HD[i][price] = strval(field[2]);
4887 HD[i][exteriorX] = floatstr(field[3]);
4888 HD[i][exteriorY] = floatstr(field[4]);
4889 HD[i][exteriorZ] = floatstr(field[5]);
4890 HD[i][interiorX] = floatstr(field[6]);
4891 HD[i][interiorY] = floatstr(field[7]);
4892 HD[i][interiorZ] = floatstr(field[8]);
4893 HD[i][interiorInt] = strval(field[9]);
4894 HD[i][locked] = strval(field[10]);
4895 HD[i][gunslot1] = strval(field[11]);
4896 HD[i][locklevel] = strval(field[12]);
4897 HD[i][safeamount] = strval(field[13]);
4898 if(strlen(HD[i][owner]) > 0) CreatePickup(1273, 1, HD[i][exteriorX], HD[i][exteriorY], HD[i][exteriorZ], -1);
4899 else CreatePickup(1272, 1, HD[i][exteriorX], HD[i][exteriorY], HD[i][exteriorZ], -1);
4900 printf("Maison %d crée x: %f, y: %f, z: %f, verrou niveau: %d", i, HD[i][exteriorX], HD[i][exteriorY], HD[i][exteriorZ], HD[i][locklevel]);
4901 }
4902 print("Chargement terminé.");
4903}
4904
4905command(creermaison, playerid, params[])
4906{
4907 new type[128];
4908 if(IsPlayerAdmin(playerid)) {
4909 if(sscanf(params, "s", type))
4910 {
4911 SendClientMessage(playerid, COLOR_WHITE, "/creermaison option - options: Aide|Interieur|Exterieur|Fin");
4912 } else {
4913 if(strcmp(type, "aide", true) == 0) {
4914 SendClientMessage(playerid, COLOR_WHITE, "--------------------------AIDE----------------------------");
4915 SendClientMessage(playerid, COLOR_WHITE, "Allez ou on veut l'entrée et faire /creermaison exterieur");
4916 SendClientMessage(playerid, COLOR_WHITE, "Ensuite aller ou on veut faire l'intérieur et faire /creermaison interieur");
4917 SendClientMessage(playerid, COLOR_WHITE, "Ensuite /creermaison fin. La maison sera non achetable, réglez le prix pour la mettre en vente");
4918 }
4919 if(strcmp("exterieur", type, true) == 0) {
4920 GetPlayerPos(playerid, HC[playerid][exteriorX], HC[playerid][exteriorY],HC[playerid][exteriorZ]);
4921 SendClientMessage(playerid, COLOR_WHITE, "Extérieur validé.");
4922 }
4923 if(strcmp("interieur", type, true) == 0) {
4924 GetPlayerPos(playerid, HC[playerid][interiorX], HC[playerid][interiorY],HC[playerid][interiorZ]);
4925 HC[playerid][interiorInt] = GetPlayerInterior(playerid);
4926 SendClientMessage(playerid, COLOR_WHITE, "Intérieur validé.");
4927 }
4928 if(strcmp("fin", type, true) == 0) {
4929 SetPlayerPos(playerid, HC[playerid][exteriorX], HC[playerid][exteriorY],HC[playerid][exteriorZ]);
4930 SetPlayerInterior(playerid, 0);
4931 BuildHouse(-1, HC[playerid][exteriorX], HC[playerid][exteriorY],HC[playerid][exteriorZ], HC[playerid][interiorX], HC[playerid][interiorY],HC[playerid][interiorZ], HC[playerid][interiorInt], 1);
4932 SendClientMessage(playerid, COLOR_WHITE, "Maison crée!");
4933 }
4934 }
4935 } else {
4936 SendClientMessage(playerid, COLOR_WHITE, "Vous n'avez pas le niveau pour utiliser cette commande.");
4937 return 1;
4938 }
4939 return 1;
4940}
4941// STOCK POUR SQL
4942
4943stock SavePrivVeh(iVehicleID)
4944{
4945 new
4946 Query[512],
4947 SQL_vOwner[MAX_PLAYER_NAME],
4948 SQL_vPlate[32];
4949
4950 mysql_real_escape_string(vInfo[iVehicleID][vOwner], SQL_vOwner);
4951 mysql_real_escape_string(vInfo[iVehicleID][vPlate], SQL_vPlate);
4952
4953 format(Query, sizeof(Query), "UPDATE `privateveh` SET `vModel` = %i, `vColor1` = %i, `vColor2` = %i, `vPrice` = %i, `vOwner` = '%s', `vPosX` = %f, `vPosY` = %f, `vPosZ` = %f, `vPosA` = %f, `vPlate` = '%s', `vPaintJ` = %i,\
4954 `vMod1` = %i, `vMod2` = %i, `vMod3` = %i, `vMod4` = %i, `vMod5` = %i, `vMod6` = %i, `vMod7` = %i, `vMod8` = %i, `vMod9` = %i, `vMod10` = %i, `vMod11` = %i, `vMod12` = %i, `Locked` = %i WHERE `vID` = %i LIMIT 1",
4955
4956 vInfo[iVehicleID][vModel],
4957 vInfo[iVehicleID][vColor1],
4958 vInfo[iVehicleID][vColor2],
4959 vInfo[iVehicleID][vPrice],
4960 SQL_vOwner,
4961 vInfo[iVehicleID][vPosX],
4962 vInfo[iVehicleID][vPosY],
4963 vInfo[iVehicleID][vPosZ],
4964 vInfo[iVehicleID][vPosA],
4965 SQL_vPlate,
4966 vInfo[iVehicleID][vPaintJ],
4967 vMods[iVehicleID][0],
4968 vMods[iVehicleID][1],
4969 vMods[iVehicleID][2],
4970 vMods[iVehicleID][3],
4971 vMods[iVehicleID][4],
4972 vMods[iVehicleID][5],
4973 vMods[iVehicleID][6],
4974 vMods[iVehicleID][7],
4975 vMods[iVehicleID][8],
4976 vMods[iVehicleID][9],
4977 vMods[iVehicleID][10],
4978 vMods[iVehicleID][11],
4979 vInfo[iVehicleID][vLocked],
4980 iVehicleID);
4981
4982 mysql_query(Query);
4983 return 1;
4984}
4985
4986stock LoadPVehicles()
4987{
4988 new
4989 Query[1024],
4990 vModel2,
4991 vC[2],
4992 vPrice2,
4993 vOwner2[MAX_PLAYER_NAME],
4994 Float:Pos[4],
4995 vID,
4996 PlateNum[32],
4997 vPaint_Job,
4998 vModsToLoad[12],
4999 vLock;
5000
5001 mysql_query("SELECT * FROM `privateveh` WHERE `vID` < "#MAX_BUYABLE_VEH" ORDER BY vID");
5002 mysql_store_result();
5003
5004 if(mysql_num_rows() > 0)
5005 {
5006 while(mysql_fetch_row(Query))
5007 {
5008 print("\n==============================================================\n");
5009 sscanf(Query, "p<|>iiiiis[24]ffffs[32]iiiiiiiiiiiiii",
5010 vID, vModel2, vC[0], vC[1], vPrice2, vOwner2, Pos[0], Pos[1], Pos[2], Pos[3], PlateNum, vPaint_Job,
5011
5012 vModsToLoad[0], vModsToLoad[1], vModsToLoad[2], vModsToLoad[3], vModsToLoad[4], vModsToLoad[5],
5013 vModsToLoad[6], vModsToLoad[7], vModsToLoad[8], vModsToLoad[9], vModsToLoad[10], vModsToLoad[11], vLock);
5014
5015 printf("VID:\t\t%i", vID);
5016 vInfo[vID][vModel] = vModel2; printf("Modele:\t\t%i", vModel2);
5017 vInfo[vID][vColor1] = vC[0]; printf("Couleur 1:\t%i", vC[0]);
5018 vInfo[vID][vColor2] = vC[1]; printf("Couleur 2:\t%i", vC[1]);
5019 vInfo[vID][vPrice] = vPrice2; printf("Prix:\t\t$%i", vPrice2);
5020 strmid(vInfo[vID][vOwner], vOwner2, 0, 24, 24); printf("Proprietaire:\t\t%s", vOwner2);
5021 vInfo[vID][vPosX] = Pos[0]; printf("Spawn X:\t%f", Pos[0]);
5022 vInfo[vID][vPosY] = Pos[1]; printf("Spawn Y:\t%f", Pos[1]);
5023 vInfo[vID][vPosZ] = Pos[2]; printf("Spawn Z:\t%f", Pos[2]);
5024 vInfo[vID][vPosA] = Pos[3]; printf("Spawn A:\t%f", Pos[3]);
5025 strmid(vInfo[vID][vPlate], PlateNum, 0, 32, 32); printf("Plaque:\t\t%s", PlateNum);
5026 vInfo[vID][vPaintJ] = vPaint_Job; printf("Peinture:\t\t%i", vPaint_Job);
5027 vInfo[vID][vLocked] = vLock; printf("Verrou:\t\t%i", vLock);
5028
5029 vMods[vID][0] = vModsToLoad[0]; printf("Mod 1:\t\t%i", vModsToLoad[0]);
5030 vMods[vID][1] = vModsToLoad[1]; printf("Mod 2:\t\t%i", vModsToLoad[1]);
5031 vMods[vID][2] = vModsToLoad[2]; printf("Mod 3:\t\t%i", vModsToLoad[2]);
5032 vMods[vID][3] = vModsToLoad[3]; printf("Mod 4:\t\t%i", vModsToLoad[3]);
5033 vMods[vID][4] = vModsToLoad[4]; printf("Mod 5:\t\t%i", vModsToLoad[4]);
5034 vMods[vID][5] = vModsToLoad[5]; printf("Mod 6:\t\t%i", vModsToLoad[5]);
5035 vMods[vID][6] = vModsToLoad[6]; printf("Mod 7:\t\t%i", vModsToLoad[6]);
5036 vMods[vID][7] = vModsToLoad[7]; printf("Mod 8:\t\t%i", vModsToLoad[7]);
5037 vMods[vID][8] = vModsToLoad[8]; printf("Mod 9:\t\t%i", vModsToLoad[8]);
5038 vMods[vID][9] = vModsToLoad[9]; printf("Mod 10:\t\t%i", vModsToLoad[9]);
5039 vMods[vID][10] = vModsToLoad[10]; printf("Mod 11:\t\t%i", vModsToLoad[10]);
5040 vMods[vID][11] = vModsToLoad[11]; printf("Mod 12:\t\t%i", vModsToLoad[11]);
5041 print("\n==============================================================\n");
5042
5043 new
5044 vCarID = CreateVehicle(vInfo[vID][vModel], vInfo[vID][vPosX], vInfo[vID][vPosY], vInfo[vID][vPosZ], vInfo[vID][vPosA], vInfo[vID][vColor1], vInfo[vID][vColor2], 500000);
5045 SetVehicleNumberPlate(vCarID, vInfo[vID][vPlate]);
5046 ChangeVehiclePaintjob(vCarID, vInfo[vID][vPaintJ]);
5047
5048 for(new iMod = 0; iMod < MAX_VEH_MODS; ++iMod)
5049 {
5050 if(vMods[vCarID][iMod] > 0)
5051 {
5052 AddVehicleComponent(vCarID, vMods[vCarID][iMod]);
5053 }
5054 }
5055
5056 OwnedVeh(vCarID) = vID;
5057
5058 ++ Total_Veh_Created;
5059 }
5060 }
5061 mysql_free_result();
5062 printf("** Un total de: \"%i\" vehicule ont ete charges!", Total_Veh_Created);
5063
5064 print("\n==============================================================");
5065 print("Systeme de vehicule SQL - CHARGEMENT...");
5066 print("==============================================================\n");
5067 return Total_Veh_Created;
5068}
5069stock strmatch(const String1[], const String2[])
5070{
5071 if ((strcmp(String1, String2, true, strlen(String2)) == 0) && (strlen(String2) == strlen(String1)))
5072 {
5073 return true;
5074 }
5075 else
5076 {
5077 return false;
5078 }
5079}
5080
5081stock pName(iPlayer)
5082{
5083 new
5084 iName[MAX_PLAYER_NAME];
5085
5086 GetPlayerName(iPlayer, iName, sizeof(iName));
5087 return iName;
5088}
5089
5090stock MySQL_Register(playerid, passwordstring[])
5091{
5092 AntiDeAMX();
5093 new query[200], pname[24], IP[16];
5094 GetPlayerName(playerid, pname, 24);
5095 GetPlayerIp(playerid, IP, 16);
5096 format(query, sizeof(query), "INSERT INTO joueurs (nom, pass, score, argent, IP, XPOS, skin, faction) VALUES('%s', SHA1('%s'), 0, 0, '%s', 0.0, 0, 0)", pname, passwordstring, IP);
5097 mysql_query(query);
5098 //Succès de l'enregistrement
5099 //On met la variable de log à 1.
5100 SendClientMessage(playerid, -1, "Vous venez de recevoir votre titre de séjour!");
5101 Logged[playerid] = 1; //On active la variable loggé
5102 IsRegistered[playerid] = 1;
5103 MySQL_Login(playerid);
5104 return 1;
5105}
5106
5107stock MySQL_Login(playerid)
5108{
5109 AntiDeAMX();
5110 new query[300], pname[24], savingstring[20];
5111 GetPlayerName(playerid, pname, 24);
5112 format(query, sizeof(query), "SELECT * FROM joueurs WHERE nom = '%s'", pname);
5113 //On sélectionne uniquement la variable qu'on veut utiliser.
5114 mysql_query(query); //
5115 mysql_store_result(); //Garder le résultat car il est selctionné.
5116 while(mysql_fetch_row_format(query,"|"))
5117 {
5118 //We use while so that it does a single query, not multiple
5119 //Especially when we have more variables. If there is more
5120 //Variables, you should just split the line with sscanf. To
5121 //Make it easier.
5122 mysql_fetch_field_row(savingstring, "score"); SetPlayerScore(playerid, strval(savingstring));
5123 mysql_fetch_field_row(savingstring, "argent"); MoneyGiven[playerid] = strval(savingstring);
5124 mysql_fetch_field_row(savingstring, "faction"); Faction[playerid] = strval(savingstring);
5125 mysql_fetch_field_row(savingstring, "rang"); Rang[playerid] = strval(savingstring);
5126 mysql_fetch_field_row(savingstring, "actif"); Tuto[playerid] = strval(savingstring);
5127 mysql_fetch_field_row(savingstring, "skin"); Skin[playerid] = strval(savingstring);
5128 mysql_fetch_field_row(savingstring, "prison"); Prison[playerid] = strval(savingstring);
5129 mysql_fetch_field_row(savingstring, "bidon"); Bidon[playerid] = strval(savingstring);
5130 //If you are wondering why I'm using savingstring instead
5131 //Of a variable like using MoneyGiven right away, it's because
5132 //mysql_fetch_field_row requires a string.
5133 }
5134 mysql_free_result(); //Libération du résultat stocké
5135 if(Tuto[playerid] == 1){
5136 SendClientMessage(playerid, COLOR_GREEN, "Vous avez passé la douane avec succès!");}
5137 Logged[playerid] = 1; //On active la variable loggé
5138 IsRegistered[playerid] = 1;
5139 //RECUPINFO VEHICULES
5140 new queryp[300], savingstring2[20];
5141 format(queryp, sizeof(queryp), "SELECT * FROM privateveh WHERE vOwner = '%s'", pname);
5142 mysql_query(queryp); //
5143 mysql_store_result();
5144 while(mysql_fetch_row_format(queryp,"|"))
5145 {
5146 mysql_fetch_field_row(savingstring2, "vPlate"); Plaque[playerid] = strval(savingstring2);
5147 mysql_free_result(); //Libération du résultat stocké
5148 }
5149 return 1;
5150}
5151
5152stock DeleteAllLoadObjects()
5153{
5154 for(new i; i<MAX_LOAD_OBJECTS; i++)
5155 {
5156 if(OBID[i] != 0) DestroyObject(OBID[i]);
5157 }
5158}
5159
5160stock ReloadAllLoadObjects()
5161{
5162 for(new i; i<MAX_LOAD_OBJECTS; i++)
5163 {
5164 if(OBID[i] != 0) DestroyObject(OBID[i]);
5165 }
5166 new query[75];
5167 format(query, sizeof(query), "SELECT * FROM `%s`", FORMAT);
5168 mysql_query(query);
5169 mysql_store_result();
5170 if(Stopload) return 1;
5171 while(mysql_fetch_row(row2))
5172 {
5173 #if defined COB
5174 Obcount = FindFirstFreeSlot();
5175 sscanf(row2, "p<|>dfffffffds[100]dd", Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5], Floats[6], Var[1], refstr, AID[Obcount], Var[2]);
5176 OBID[Obcount] = CreateObject(Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5], Floats[6]);
5177 #endif
5178 #if defined CDO // This is so if you don't have the include it won't chuck errors at you.
5179 Obcount = FindFirstFreeSlot();
5180 sscanf(row2, "p<|>dffffffdddfds[100]dd", Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5], Var[1], Var[2], Var[3], Floats[6], Var[4], refstr, AID[Obcount], Var[5]);
5181 OBID[Obcount] = CreateDynamicObject(Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5], Var[1], Var[2], Var[3], Floats[6]);
5182 #endif
5183 #if defined FCO // This is so if you don't have the include it won't chuck errors at you.
5184 Obcount = FindFirstFreeSlot();
5185 sscanf(row2, "p<|>dffffffds[100]dd", Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5], Var[1], refstr, AID[Obcount], Var[2]);
5186 OBID[Obcount] = F_CreateObject(Var[0], Floats[0], Floats[1], Floats[2], Floats[3], Floats[4], Floats[5]);
5187 #endif
5188 }
5189 format(query, sizeof(query), "UPDATE `%s` SET `immediate` = 0 WHERE `immediate` = 1", FORMAT);
5190 mysql_query(query);
5191 mysql_free_result();
5192 return 1;
5193}
5194
5195stock StopLoadingObjects() return Stopload = 1;
5196stock StartLoadingObjects() return Stopload = 0;
5197
5198stock FindFirstFreeSlot()
5199{
5200 for(new i; i<MAX_LOAD_OBJECTS; i++)
5201 {
5202 if(AID[i] == 0) return i;
5203 }
5204 return -1;
5205}
5206stock CreateRentalVehicle(iModel, Float:fX, Float:fY, Float:fZ, Float:fAngle, iCol1, iCol2)
5207{
5208 new
5209 TMP;
5210
5211 TMP = AddStaticVehicle(iModel, Float:fX, Float:fY, Float:fZ, Float:fAngle, iCol1, iCol2);
5212
5213 SetVehicleNumberPlate(TMP, "Location");
5214 SetVehicleToRespawn(TMP);
5215
5216 IsRentable[TMP] = 1;
5217 IsRented[TMP] = 0;
5218 RentedBy[TMP] = "personne";
5219 return TMP;
5220}
5221
5222stock GetName(playerid)
5223{
5224 new
5225 Name[24];
5226 GetPlayerName(playerid, Name, 24);
5227 return Name;
5228}
5229
5230stock IsRentableCar(vehicleid)
5231{
5232 if (IsRentable[vehicleid])
5233 return 1;
5234 return 0;
5235}
5236
5237stock CanAffordRental(playerid)
5238{
5239 new
5240 Money;
5241 Money = GetPlayerMoney(playerid);
5242 if (Money >= Prixloca[playerid])
5243 return 1;
5244 return 0;
5245}
5246
5247stock IsRentedCar(vehicleid)
5248{
5249 if (IsRented[vehicleid])
5250 return 1;
5251 return 0;
5252}
5253stock AdminChat(SCSStringtext[])
5254{
5255 foreach(Player,i)
5256 {
5257 if(IsPlayerAdmin(i)) SendClientMessage(i,SOrange,SCSStringtext);
5258 }
5259 return 1;
5260}
5261
5262stock GetPlayerNameEx(playerid)
5263{
5264 new pname[MAX_PLAYER_NAME];
5265 GetPlayerName(playerid,pname,sizeof(pname));
5266 return pname;
5267}
5268stock sscanf(string[], format[], {Float,_}:...)
5269{
5270 #if defined isnull
5271 if (isnull(string))
5272 #else
5273 if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
5274 #endif
5275 {
5276 return format[0];
5277 }
5278 #pragma tabsize 4
5279 new
5280 formatPos = 0,
5281 stringPos = 0,
5282 paramPos = 2,
5283 paramCount = numargs(),
5284 delim = ' ';
5285 while (string[stringPos] && string[stringPos] <= ' ')
5286 {
5287 stringPos++;
5288 }
5289 while (paramPos < paramCount && string[stringPos])
5290 {
5291 switch (format[formatPos++])
5292 {
5293 case '\0':
5294 {
5295 return 0;
5296 }
5297 case 'i', 'd':
5298 {
5299 new
5300 neg = 1,
5301 num = 0,
5302 ch = string[stringPos];
5303 if (ch == '-')
5304 {
5305 neg = -1;
5306 ch = string[++stringPos];
5307 }
5308 do
5309 {
5310 stringPos++;
5311 if ('0' <= ch <= '9')
5312 {
5313 num = (num * 10) + (ch - '0');
5314 }
5315 else
5316 {
5317 return -1;
5318 }
5319 }
5320 while ((ch = string[stringPos]) > ' ' && ch != delim);
5321 setarg(paramPos, 0, num * neg);
5322 }
5323 case 'h', 'x':
5324 {
5325 new
5326 num = 0,
5327 ch = string[stringPos];
5328 do
5329 {
5330 stringPos++;
5331 switch (ch)
5332 {
5333 case 'x', 'X':
5334 {
5335 num = 0;
5336 continue;
5337 }
5338 case '0' .. '9':
5339 {
5340 num = (num << 4) | (ch - '0');
5341 }
5342 case 'a' .. 'f':
5343 {
5344 num = (num << 4) | (ch - ('a' - 10));
5345 }
5346 case 'A' .. 'F':
5347 {
5348 num = (num << 4) | (ch - ('A' - 10));
5349 }
5350 default:
5351 {
5352 return -1;
5353 }
5354 }
5355 }
5356 while ((ch = string[stringPos]) > ' ' && ch != delim);
5357 setarg(paramPos, 0, num);
5358 }
5359 case 'c':
5360 {
5361 setarg(paramPos, 0, string[stringPos++]);
5362 }
5363 case 'f':
5364 {
5365 setarg(paramPos, 0, _:floatstr(string[stringPos]));
5366 }
5367 case 'p':
5368 {
5369 delim = format[formatPos++];
5370 continue;
5371 }
5372 case '\'':
5373 {
5374 new
5375 end = formatPos - 1,
5376 ch;
5377 while ((ch = format[++end]) && ch != '\'') {}
5378 if (!ch)
5379 {
5380 return -1;
5381 }
5382 format[end] = '\0';
5383 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
5384 {
5385 if (format[end + 1])
5386 {
5387 return -1;
5388 }
5389 return 0;
5390 }
5391 format[end] = '\'';
5392 stringPos = ch + (end - formatPos);
5393 formatPos = end + 1;
5394 }
5395 case 'u':
5396 {
5397 new
5398 end = stringPos - 1,
5399 id = 0,
5400 bool:num = true,
5401 ch;
5402 while ((ch = string[++end]) && ch != delim)
5403 {
5404 if (num)
5405 {
5406 if ('0' <= ch <= '9')
5407 {
5408 id = (id * 10) + (ch - '0');
5409 }
5410 else
5411 {
5412 num = false;
5413 }
5414 }
5415 }
5416 if (num && IsPlayerConnected(id))
5417 {
5418 setarg(paramPos, 0, id);
5419 }
5420 else
5421 {
5422 #if !defined foreach
5423 #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
5424 #define __SSCANF_FOREACH__
5425 #endif
5426 string[end] = '\0';
5427 num = false;
5428 new
5429 name[MAX_PLAYER_NAME];
5430 id = end - stringPos;
5431 foreach(Player, playerid)
5432 {
5433 GetPlayerName(playerid, name, sizeof (name));
5434 if (!strcmp(name, string[stringPos], true, id))
5435 {
5436 setarg(paramPos, 0, playerid);
5437 num = true;
5438 break;
5439 }
5440 }
5441 if (!num)
5442 {
5443 setarg(paramPos, 0, INVALID_PLAYER_ID);
5444 }
5445 string[end] = ch;
5446 #if defined __SSCANF_FOREACH__
5447 #undef foreach
5448 #undef __SSCANF_FOREACH__
5449 #endif
5450 }
5451 stringPos = end;
5452 }
5453 case 's', 'z':
5454 {
5455 new
5456 i = 0,
5457 ch;
5458 if (format[formatPos])
5459 {
5460 while ((ch = string[stringPos++]) && ch != delim)
5461 {
5462 setarg(paramPos, i++, ch);
5463 }
5464 if (!i)
5465 {
5466 return -1;
5467 }
5468 }
5469 else
5470 {
5471 while ((ch = string[stringPos++]))
5472 {
5473 setarg(paramPos, i++, ch);
5474 }
5475 }
5476 stringPos--;
5477 setarg(paramPos, i, '\0');
5478 }
5479 default:
5480 {
5481 continue;
5482 }
5483 }
5484 while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
5485 {
5486 stringPos++;
5487 }
5488 while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
5489 {
5490 stringPos++;
5491 }
5492 paramPos++;
5493 }
5494 do
5495 {
5496 if ((delim = format[formatPos++]) > ' ')
5497 {
5498 if (delim == '\'')
5499 {
5500 while ((delim = format[formatPos++]) && delim != '\'') {}
5501 }
5502 else if (delim != 'z')
5503 {
5504 return delim;
5505 }
5506 }
5507 }
5508 while (delim > ' ');
5509 return 0;
5510}
5511
5512stock ReturnName(playerid) {
5513 new name[24];
5514 GetPlayerName(playerid, name, 24);
5515 return name;
5516}
5517command(gotopoint, playerid, params[])
5518{
5519 new Interior, Float: Xx, Float: Yx, Float: Zx;
5520 if(sscanf(params, "dfff", Interior, Xx, Yx, Zx))
5521 {
5522 if(IsPlayerAdmin(playerid))
5523 {
5524 SendClientMessage(playerid, COLOR_WHITE, "SYNTAX: /gotopoint [Interior ID] [x point] [y point] [z point]");
5525 }
5526 }
5527 else
5528 {
5529 if(IsPlayerAdmin(playerid))
5530 {
5531 SetPlayerPos(playerid, Xx, Yx, Zx);
5532 SetPlayerInterior(playerid, Interior);
5533 SendClientMessage(playerid, COLOR_WHITE, "You have been teleported to the defined position.");
5534 }
5535 }
5536 return 1;
5537}
5538CheckMySQL()
5539{
5540 if(mysql_ping() == -1)
5541 mysql_connect(mysql_host, mysql_user, mysql_database, mysql_password);
5542}
5543
5544stock RemovePlayerWeapon(playerid, weaponid)
5545{
5546 new plyWeapons[12];
5547 new plyAmmo[12];
5548
5549 for(new slot = 0; slot != 12; slot++)
5550 {
5551 new wep, ammo;
5552 GetPlayerWeaponData(playerid, slot, wep, ammo);
5553
5554 if(wep != weaponid)
5555 {
5556 GetPlayerWeaponData(playerid, slot, plyWeapons[slot], plyAmmo[slot]);
5557 }
5558 }
5559
5560 ResetPlayerWeapons(playerid);
5561 for(new slot = 0; slot != 12; slot++)
5562 {
5563 GivePlayerWeapon(playerid, plyWeapons[slot], 99999);
5564 }
5565}