· 7 years ago · Jan 14, 2019, 08:04 PM
1//**************************** TO-DO LISTE ********************************
2// Zivi Job
3// Polizei Commands
4// Adminsystem
5
6
7/*
8 Changelog
9
10* angefangenes adminsystem (/aduty, /setadmin, getPlayerName, getUserAdminRang, isUserAdmin, getServerName)
11* /d Befehl für die Polizei
12* Übersetzung angefangen muss lösung suchen für fehler meldungen
13* angefangenes OfflinePlayerEditor (getPlayerDBId, DIALOG_PlayerEditOffline, Befehl: /playeredit)
14
15** /fferstellen verbessert
16
17*/
18//-[ Includes ]-//
19#include <a_samp>
20#include <streamer>
21#include <a_mysql>
22#include <zcmd>
23#include <sscanf2>
24#include <OPSP>
25#include <a_zones>
26
27//-[ Gang ]-//
28#define MAX_GANGS 50
29#define MAX_GANG_NAME 20
30#undef MAX_GANG_ZONES
31#define MAX_GANG_ZONES 9
32
33static const gSAZones[][SAZONE_MAIN] = { // Majority of names and area coordinates adopted from Mabako's 'Zones Script' v0.2
34 // NAME AREA (Xmin,Ymin,Zmin,Xmax,Ymax,Zmax)
35 {"The Big Ear", {-410.00,1403.30,-3.00,-137.90,1681.20,200.00}},
36 {"Aldea Malvada", {-1372.10,2498.50,0.00,-1277.50,2615.30,200.00}},
37 {"Angel Pine", {-2324.90,-2584.20,-6.10,-1964.20,-2212.10,200.00}},
38 {"Arco del Oeste", {-901.10,2221.80,0.00,-592.00,2571.90,200.00}},
39 {"Avispa Country Club", {-2646.40,-355.40,0.00,-2270.00,-222.50,200.00}},
40 {"Avispa Country Club", {-2831.80,-430.20,-6.10,-2646.40,-222.50,200.00}},
41 {"Avispa Country Club", {-2361.50,-417.10,0.00,-2270.00,-355.40,200.00}},
42 {"Avispa Country Club", {-2667.80,-302.10,-28.80,-2646.40,-262.30,71.10}},
43 {"Avispa Country Club", {-2470.00,-355.40,0.00,-2270.00,-318.40,46.10}},
44 {"Avispa Country Club", {-2550.00,-355.40,0.00,-2470.00,-318.40,39.70}},
45 {"Back o Beyond", {-1166.90,-2641.10,0.00,-321.70,-1856.00,200.00}},
46 {"Battery Point", {-2741.00,1268.40,-4.50,-2533.00,1490.40,200.00}},
47 {"Bayside", {-2741.00,2175.10,0.00,-2353.10,2722.70,200.00}},
48 {"Bayside Marina", {-2353.10,2275.70,0.00,-2153.10,2475.70,200.00}},
49 {"Beacon Hill", {-399.60,-1075.50,-1.40,-319.00,-977.50,198.50}},
50 {"Blackfield", {964.30,1203.20,-89.00,1197.30,1403.20,110.90}},
51 {"Blackfield", {964.30,1403.20,-89.00,1197.30,1726.20,110.90}},
52 {"Blackfield Chapel", {1375.60,596.30,-89.00,1558.00,823.20,110.90}},
53 {"Blackfield Chapel", {1325.60,596.30,-89.00,1375.60,795.00,110.90}},
54 {"Blackfield Intersection", {1197.30,1044.60,-89.00,1277.00,1163.30,110.90}},
55 {"Blackfield Intersection", {1166.50,795.00,-89.00,1375.60,1044.60,110.90}},
56 {"Blackfield Intersection", {1277.00,1044.60,-89.00,1315.30,1087.60,110.90}},
57 {"Blackfield Intersection", {1375.60,823.20,-89.00,1457.30,919.40,110.90}},
58 {"Blueberry", {104.50,-220.10,2.30,349.60,152.20,200.00}},
59 {"Blueberry", {19.60,-404.10,3.80,349.60,-220.10,200.00}},
60 {"Blueberry Acres", {-319.60,-220.10,0.00,104.50,293.30,200.00}},
61 {"Caligula's Palace", {2087.30,1543.20,-89.00,2437.30,1703.20,110.90}},
62 {"Caligula's Palace", {2137.40,1703.20,-89.00,2437.30,1783.20,110.90}},
63 {"Calton Heights", {-2274.10,744.10,-6.10,-1982.30,1358.90,200.00}},
64 {"Chinatown", {-2274.10,578.30,-7.60,-2078.60,744.10,200.00}},
65 {"City Hall", {-2867.80,277.40,-9.10,-2593.40,458.40,200.00}},
66 {"Come-A-Lot", {2087.30,943.20,-89.00,2623.10,1203.20,110.90}},
67 {"Commerce", {1323.90,-1842.20,-89.00,1701.90,-1722.20,110.90}},
68 {"Commerce", {1323.90,-1722.20,-89.00,1440.90,-1577.50,110.90}},
69 {"Commerce", {1370.80,-1577.50,-89.00,1463.90,-1384.90,110.90}},
70 {"Commerce", {1463.90,-1577.50,-89.00,1667.90,-1430.80,110.90}},
71 {"Commerce", {1583.50,-1722.20,-89.00,1758.90,-1577.50,110.90}},
72 {"Commerce", {1667.90,-1577.50,-89.00,1812.60,-1430.80,110.90}},
73 {"Conference Center", {1046.10,-1804.20,-89.00,1323.90,-1722.20,110.90}},
74 {"Conference Center", {1073.20,-1842.20,-89.00,1323.90,-1804.20,110.90}},
75 {"Cranberry Station", {-2007.80,56.30,0.00,-1922.00,224.70,100.00}},
76 {"Creek", {2749.90,1937.20,-89.00,2921.60,2669.70,110.90}},
77 {"Dillimore", {580.70,-674.80,-9.50,861.00,-404.70,200.00}},
78 {"Doherty", {-2270.00,-324.10,-0.00,-1794.90,-222.50,200.00}},
79 {"Doherty", {-2173.00,-222.50,-0.00,-1794.90,265.20,200.00}},
80 {"Downtown", {-1982.30,744.10,-6.10,-1871.70,1274.20,200.00}},
81 {"Downtown", {-1871.70,1176.40,-4.50,-1620.30,1274.20,200.00}},
82 {"Downtown", {-1700.00,744.20,-6.10,-1580.00,1176.50,200.00}},
83 {"Downtown", {-1580.00,744.20,-6.10,-1499.80,1025.90,200.00}},
84 {"Downtown", {-2078.60,578.30,-7.60,-1499.80,744.20,200.00}},
85 {"Downtown", {-1993.20,265.20,-9.10,-1794.90,578.30,200.00}},
86 {"Downtown Los Santos", {1463.90,-1430.80,-89.00,1724.70,-1290.80,110.90}},
87 {"Downtown Los Santos", {1724.70,-1430.80,-89.00,1812.60,-1250.90,110.90}},
88 {"Downtown Los Santos", {1463.90,-1290.80,-89.00,1724.70,-1150.80,110.90}},
89 {"Downtown Los Santos", {1370.80,-1384.90,-89.00,1463.90,-1170.80,110.90}},
90 {"Downtown Los Santos", {1724.70,-1250.90,-89.00,1812.60,-1150.80,110.90}},
91 {"Downtown Los Santos", {1370.80,-1170.80,-89.00,1463.90,-1130.80,110.90}},
92 {"Downtown Los Santos", {1378.30,-1130.80,-89.00,1463.90,-1026.30,110.90}},
93 {"Downtown Los Santos", {1391.00,-1026.30,-89.00,1463.90,-926.90,110.90}},
94 {"Downtown Los Santos", {1507.50,-1385.20,110.90,1582.50,-1325.30,335.90}},
95 {"East Beach", {2632.80,-1852.80,-89.00,2959.30,-1668.10,110.90}},
96 {"East Beach", {2632.80,-1668.10,-89.00,2747.70,-1393.40,110.90}},
97 {"East Beach", {2747.70,-1668.10,-89.00,2959.30,-1498.60,110.90}},
98 {"East Beach", {2747.70,-1498.60,-89.00,2959.30,-1120.00,110.90}},
99 {"East Los Santos", {2421.00,-1628.50,-89.00,2632.80,-1454.30,110.90}},
100 {"East Los Santos", {2222.50,-1628.50,-89.00,2421.00,-1494.00,110.90}},
101 {"East Los Santos", {2266.20,-1494.00,-89.00,2381.60,-1372.00,110.90}},
102 {"East Los Santos", {2381.60,-1494.00,-89.00,2421.00,-1454.30,110.90}},
103 {"East Los Santos", {2281.40,-1372.00,-89.00,2381.60,-1135.00,110.90}},
104 {"East Los Santos", {2381.60,-1454.30,-89.00,2462.10,-1135.00,110.90}},
105 {"East Los Santos", {2462.10,-1454.30,-89.00,2581.70,-1135.00,110.90}},
106 {"Easter Basin", {-1794.90,249.90,-9.10,-1242.90,578.30,200.00}},
107 {"Easter Basin", {-1794.90,-50.00,-0.00,-1499.80,249.90,200.00}},
108 {"Easter Bay Airport", {-1499.80,-50.00,-0.00,-1242.90,249.90,200.00}},
109 {"Easter Bay Airport", {-1794.90,-730.10,-3.00,-1213.90,-50.00,200.00}},
110 {"Easter Bay Airport", {-1213.90,-730.10,0.00,-1132.80,-50.00,200.00}},
111 {"Easter Bay Airport", {-1242.90,-50.00,0.00,-1213.90,578.30,200.00}},
112 {"Easter Bay Airport", {-1213.90,-50.00,-4.50,-947.90,578.30,200.00}},
113 {"Easter Bay Airport", {-1315.40,-405.30,15.40,-1264.40,-209.50,25.40}},
114 {"Easter Bay Airport", {-1354.30,-287.30,15.40,-1315.40,-209.50,25.40}},
115 {"Easter Bay Airport", {-1490.30,-209.50,15.40,-1264.40,-148.30,25.40}},
116 {"Easter Bay Chemicals", {-1132.80,-768.00,0.00,-956.40,-578.10,200.00}},
117 {"Easter Bay Chemicals", {-1132.80,-787.30,0.00,-956.40,-768.00,200.00}},
118 {"El Castillo del Diablo", {-464.50,2217.60,0.00,-208.50,2580.30,200.00}},
119 {"El Castillo del Diablo", {-208.50,2123.00,-7.60,114.00,2337.10,200.00}},
120 {"El Castillo del Diablo", {-208.50,2337.10,0.00,8.40,2487.10,200.00}},
121 {"El Corona", {1812.60,-2179.20,-89.00,1970.60,-1852.80,110.90}},
122 {"El Corona", {1692.60,-2179.20,-89.00,1812.60,-1842.20,110.90}},
123 {"El Quebrados", {-1645.20,2498.50,0.00,-1372.10,2777.80,200.00}},
124 {"Esplanade East", {-1620.30,1176.50,-4.50,-1580.00,1274.20,200.00}},
125 {"Esplanade East", {-1580.00,1025.90,-6.10,-1499.80,1274.20,200.00}},
126 {"Esplanade East", {-1499.80,578.30,-79.60,-1339.80,1274.20,20.30}},
127 {"Esplanade North", {-2533.00,1358.90,-4.50,-1996.60,1501.20,200.00}},
128 {"Esplanade North", {-1996.60,1358.90,-4.50,-1524.20,1592.50,200.00}},
129 {"Esplanade North", {-1982.30,1274.20,-4.50,-1524.20,1358.90,200.00}},
130 {"Fallen Tree", {-792.20,-698.50,-5.30,-452.40,-380.00,200.00}},
131 {"Fallow Bridge", {434.30,366.50,0.00,603.00,555.60,200.00}},
132 {"Fern Ridge", {508.10,-139.20,0.00,1306.60,119.50,200.00}},
133 {"Financial", {-1871.70,744.10,-6.10,-1701.30,1176.40,300.00}},
134 {"Fisher's Lagoon", {1916.90,-233.30,-100.00,2131.70,13.80,200.00}},
135 {"Flint Intersection", {-187.70,-1596.70,-89.00,17.00,-1276.60,110.90}},
136 {"Flint Range", {-594.10,-1648.50,0.00,-187.70,-1276.60,200.00}},
137 {"Fort Carson", {-376.20,826.30,-3.00,123.70,1220.40,200.00}},
138 {"Foster Valley", {-2270.00,-430.20,-0.00,-2178.60,-324.10,200.00}},
139 {"Foster Valley", {-2178.60,-599.80,-0.00,-1794.90,-324.10,200.00}},
140 {"Foster Valley", {-2178.60,-1115.50,0.00,-1794.90,-599.80,200.00}},
141 {"Foster Valley", {-2178.60,-1250.90,0.00,-1794.90,-1115.50,200.00}},
142 {"Frederick Bridge", {2759.20,296.50,0.00,2774.20,594.70,200.00}},
143 {"Gant Bridge", {-2741.40,1659.60,-6.10,-2616.40,2175.10,200.00}},
144 {"Gant Bridge", {-2741.00,1490.40,-6.10,-2616.40,1659.60,200.00}},
145 {"Ganton", {2222.50,-1852.80,-89.00,2632.80,-1722.30,110.90}},
146 {"Ganton", {2222.50,-1722.30,-89.00,2632.80,-1628.50,110.90}},
147 {"Garcia", {-2411.20,-222.50,-0.00,-2173.00,265.20,200.00}},
148 {"Garcia", {-2395.10,-222.50,-5.30,-2354.00,-204.70,200.00}},
149 {"Garver Bridge", {-1339.80,828.10,-89.00,-1213.90,1057.00,110.90}},
150 {"Garver Bridge", {-1213.90,950.00,-89.00,-1087.90,1178.90,110.90}},
151 {"Garver Bridge", {-1499.80,696.40,-179.60,-1339.80,925.30,20.30}},
152 {"Glen Park", {1812.60,-1449.60,-89.00,1996.90,-1350.70,110.90}},
153 {"Glen Park", {1812.60,-1100.80,-89.00,1994.30,-973.30,110.90}},
154 {"Glen Park", {1812.60,-1350.70,-89.00,2056.80,-1100.80,110.90}},
155 {"Green Palms", {176.50,1305.40,-3.00,338.60,1520.70,200.00}},
156 {"Greenglass College", {964.30,1044.60,-89.00,1197.30,1203.20,110.90}},
157 {"Greenglass College", {964.30,930.80,-89.00,1166.50,1044.60,110.90}},
158 {"Hampton Barns", {603.00,264.30,0.00,761.90,366.50,200.00}},
159 {"Hankypanky Point", {2576.90,62.10,0.00,2759.20,385.50,200.00}},
160 {"Harry Gold Parkway", {1777.30,863.20,-89.00,1817.30,2342.80,110.90}},
161 {"Hashbury", {-2593.40,-222.50,-0.00,-2411.20,54.70,200.00}},
162 {"Hilltop Farm", {967.30,-450.30,-3.00,1176.70,-217.90,200.00}},
163 {"Hunter Quarry", {337.20,710.80,-115.20,860.50,1031.70,203.70}},
164 {"Idlewood", {1812.60,-1852.80,-89.00,1971.60,-1742.30,110.90}},
165 {"Idlewood", {1812.60,-1742.30,-89.00,1951.60,-1602.30,110.90}},
166 {"Idlewood", {1951.60,-1742.30,-89.00,2124.60,-1602.30,110.90}},
167 {"Idlewood", {1812.60,-1602.30,-89.00,2124.60,-1449.60,110.90}},
168 {"Idlewood", {2124.60,-1742.30,-89.00,2222.50,-1494.00,110.90}},
169 {"Idlewood", {1971.60,-1852.80,-89.00,2222.50,-1742.30,110.90}},
170 {"Jefferson", {1996.90,-1449.60,-89.00,2056.80,-1350.70,110.90}},
171 {"Jefferson", {2124.60,-1494.00,-89.00,2266.20,-1449.60,110.90}},
172 {"Jefferson", {2056.80,-1372.00,-89.00,2281.40,-1210.70,110.90}},
173 {"Jefferson", {2056.80,-1210.70,-89.00,2185.30,-1126.30,110.90}},
174 {"Jefferson", {2185.30,-1210.70,-89.00,2281.40,-1154.50,110.90}},
175 {"Jefferson", {2056.80,-1449.60,-89.00,2266.20,-1372.00,110.90}},
176 {"Julius Thruway East", {2623.10,943.20,-89.00,2749.90,1055.90,110.90}},
177 {"Julius Thruway East", {2685.10,1055.90,-89.00,2749.90,2626.50,110.90}},
178 {"Julius Thruway East", {2536.40,2442.50,-89.00,2685.10,2542.50,110.90}},
179 {"Julius Thruway East", {2625.10,2202.70,-89.00,2685.10,2442.50,110.90}},
180 {"Julius Thruway North", {2498.20,2542.50,-89.00,2685.10,2626.50,110.90}},
181 {"Julius Thruway North", {2237.40,2542.50,-89.00,2498.20,2663.10,110.90}},
182 {"Julius Thruway North", {2121.40,2508.20,-89.00,2237.40,2663.10,110.90}},
183 {"Julius Thruway North", {1938.80,2508.20,-89.00,2121.40,2624.20,110.90}},
184 {"Julius Thruway North", {1534.50,2433.20,-89.00,1848.40,2583.20,110.90}},
185 {"Julius Thruway North", {1848.40,2478.40,-89.00,1938.80,2553.40,110.90}},
186 {"Julius Thruway North", {1704.50,2342.80,-89.00,1848.40,2433.20,110.90}},
187 {"Julius Thruway North", {1377.30,2433.20,-89.00,1534.50,2507.20,110.90}},
188 {"Julius Thruway South", {1457.30,823.20,-89.00,2377.30,863.20,110.90}},
189 {"Julius Thruway South", {2377.30,788.80,-89.00,2537.30,897.90,110.90}},
190 {"Julius Thruway West", {1197.30,1163.30,-89.00,1236.60,2243.20,110.90}},
191 {"Julius Thruway West", {1236.60,2142.80,-89.00,1297.40,2243.20,110.90}},
192 {"Juniper Hill", {-2533.00,578.30,-7.60,-2274.10,968.30,200.00}},
193 {"Juniper Hollow", {-2533.00,968.30,-6.10,-2274.10,1358.90,200.00}},
194 {"K.A.C.C. Military Fuels", {2498.20,2626.50,-89.00,2749.90,2861.50,110.90}},
195 {"Kincaid Bridge", {-1339.80,599.20,-89.00,-1213.90,828.10,110.90}},
196 {"Kincaid Bridge", {-1213.90,721.10,-89.00,-1087.90,950.00,110.90}},
197 {"Kincaid Bridge", {-1087.90,855.30,-89.00,-961.90,986.20,110.90}},
198 {"King's", {-2329.30,458.40,-7.60,-1993.20,578.30,200.00}},
199 {"King's", {-2411.20,265.20,-9.10,-1993.20,373.50,200.00}},
200 {"King's", {-2253.50,373.50,-9.10,-1993.20,458.40,200.00}},
201 {"LVA Freight Depot", {1457.30,863.20,-89.00,1777.40,1143.20,110.90}},
202 {"LVA Freight Depot", {1375.60,919.40,-89.00,1457.30,1203.20,110.90}},
203 {"LVA Freight Depot", {1277.00,1087.60,-89.00,1375.60,1203.20,110.90}},
204 {"LVA Freight Depot", {1315.30,1044.60,-89.00,1375.60,1087.60,110.90}},
205 {"LVA Freight Depot", {1236.60,1163.40,-89.00,1277.00,1203.20,110.90}},
206 {"Las Barrancas", {-926.10,1398.70,-3.00,-719.20,1634.60,200.00}},
207 {"Las Brujas", {-365.10,2123.00,-3.00,-208.50,2217.60,200.00}},
208 {"Las Colinas", {1994.30,-1100.80,-89.00,2056.80,-920.80,110.90}},
209 {"Las Colinas", {2056.80,-1126.30,-89.00,2126.80,-920.80,110.90}},
210 {"Las Colinas", {2185.30,-1154.50,-89.00,2281.40,-934.40,110.90}},
211 {"Las Colinas", {2126.80,-1126.30,-89.00,2185.30,-934.40,110.90}},
212 {"Las Colinas", {2747.70,-1120.00,-89.00,2959.30,-945.00,110.90}},
213 {"Las Colinas", {2632.70,-1135.00,-89.00,2747.70,-945.00,110.90}},
214 {"Las Colinas", {2281.40,-1135.00,-89.00,2632.70,-945.00,110.90}},
215 {"Las Payasadas", {-354.30,2580.30,2.00,-133.60,2816.80,200.00}},
216 {"Las Venturas Airport", {1236.60,1203.20,-89.00,1457.30,1883.10,110.90}},
217 {"Las Venturas Airport", {1457.30,1203.20,-89.00,1777.30,1883.10,110.90}},
218 {"Las Venturas Airport", {1457.30,1143.20,-89.00,1777.40,1203.20,110.90}},
219 {"Las Venturas Airport", {1515.80,1586.40,-12.50,1729.90,1714.50,87.50}},
220 {"Last Dime Motel", {1823.00,596.30,-89.00,1997.20,823.20,110.90}},
221 {"Leafy Hollow", {-1166.90,-1856.00,0.00,-815.60,-1602.00,200.00}},
222 {"Liberty City", {-1000.00,400.00,1300.00,-700.00,600.00,1400.00}},
223 {"Lil' Probe Inn", {-90.20,1286.80,-3.00,153.80,1554.10,200.00}},
224 {"Linden Side", {2749.90,943.20,-89.00,2923.30,1198.90,110.90}},
225 {"Linden Station", {2749.90,1198.90,-89.00,2923.30,1548.90,110.90}},
226 {"Linden Station", {2811.20,1229.50,-39.50,2861.20,1407.50,60.40}},
227 {"Little Mexico", {1701.90,-1842.20,-89.00,1812.60,-1722.20,110.90}},
228 {"Little Mexico", {1758.90,-1722.20,-89.00,1812.60,-1577.50,110.90}},
229 {"Los Flores", {2581.70,-1454.30,-89.00,2632.80,-1393.40,110.90}},
230 {"Los Flores", {2581.70,-1393.40,-89.00,2747.70,-1135.00,110.90}},
231 {"Los Santos International", {1249.60,-2394.30,-89.00,1852.00,-2179.20,110.90}},
232 {"Los Santos International", {1852.00,-2394.30,-89.00,2089.00,-2179.20,110.90}},
233 {"Los Santos International", {1382.70,-2730.80,-89.00,2201.80,-2394.30,110.90}},
234 {"Los Santos International", {1974.60,-2394.30,-39.00,2089.00,-2256.50,60.90}},
235 {"Los Santos International", {1400.90,-2669.20,-39.00,2189.80,-2597.20,60.90}},
236 {"Los Santos International", {2051.60,-2597.20,-39.00,2152.40,-2394.30,60.90}},
237 {"Marina", {647.70,-1804.20,-89.00,851.40,-1577.50,110.90}},
238 {"Marina", {647.70,-1577.50,-89.00,807.90,-1416.20,110.90}},
239 {"Marina", {807.90,-1577.50,-89.00,926.90,-1416.20,110.90}},
240 {"Market", {787.40,-1416.20,-89.00,1072.60,-1310.20,110.90}},
241 {"Market", {952.60,-1310.20,-89.00,1072.60,-1130.80,110.90}},
242 {"Market", {1072.60,-1416.20,-89.00,1370.80,-1130.80,110.90}},
243 {"Market", {926.90,-1577.50,-89.00,1370.80,-1416.20,110.90}},
244 {"Market Station", {787.40,-1410.90,-34.10,866.00,-1310.20,65.80}},
245 {"Martin Bridge", {-222.10,293.30,0.00,-122.10,476.40,200.00}},
246 {"Missionary Hill", {-2994.40,-811.20,0.00,-2178.60,-430.20,200.00}},
247 {"Montgomery", {1119.50,119.50,-3.00,1451.40,493.30,200.00}},
248 {"Montgomery", {1451.40,347.40,-6.10,1582.40,420.80,200.00}},
249 {"Montgomery Intersection", {1546.60,208.10,0.00,1745.80,347.40,200.00}},
250 {"Montgomery Intersection", {1582.40,347.40,0.00,1664.60,401.70,200.00}},
251 {"Mulholland", {1414.00,-768.00,-89.00,1667.60,-452.40,110.90}},
252 {"Mulholland", {1281.10,-452.40,-89.00,1641.10,-290.90,110.90}},
253 {"Mulholland", {1269.10,-768.00,-89.00,1414.00,-452.40,110.90}},
254 {"Mulholland", {1357.00,-926.90,-89.00,1463.90,-768.00,110.90}},
255 {"Mulholland", {1318.10,-910.10,-89.00,1357.00,-768.00,110.90}},
256 {"Mulholland", {1169.10,-910.10,-89.00,1318.10,-768.00,110.90}},
257 {"Mulholland", {768.60,-954.60,-89.00,952.60,-860.60,110.90}},
258 {"Mulholland", {687.80,-860.60,-89.00,911.80,-768.00,110.90}},
259 {"Mulholland", {737.50,-768.00,-89.00,1142.20,-674.80,110.90}},
260 {"Mulholland", {1096.40,-910.10,-89.00,1169.10,-768.00,110.90}},
261 {"Mulholland", {952.60,-937.10,-89.00,1096.40,-860.60,110.90}},
262 {"Mulholland", {911.80,-860.60,-89.00,1096.40,-768.00,110.90}},
263 {"Mulholland", {861.00,-674.80,-89.00,1156.50,-600.80,110.90}},
264 {"Mulholland Intersection", {1463.90,-1150.80,-89.00,1812.60,-768.00,110.90}},
265 {"North Rock", {2285.30,-768.00,0.00,2770.50,-269.70,200.00}},
266 {"Ocean Docks", {2373.70,-2697.00,-89.00,2809.20,-2330.40,110.90}},
267 {"Ocean Docks", {2201.80,-2418.30,-89.00,2324.00,-2095.00,110.90}},
268 {"Ocean Docks", {2324.00,-2302.30,-89.00,2703.50,-2145.10,110.90}},
269 {"Ocean Docks", {2089.00,-2394.30,-89.00,2201.80,-2235.80,110.90}},
270 {"Ocean Docks", {2201.80,-2730.80,-89.00,2324.00,-2418.30,110.90}},
271 {"Ocean Docks", {2703.50,-2302.30,-89.00,2959.30,-2126.90,110.90}},
272 {"Ocean Docks", {2324.00,-2145.10,-89.00,2703.50,-2059.20,110.90}},
273 {"Ocean Flats", {-2994.40,277.40,-9.10,-2867.80,458.40,200.00}},
274 {"Ocean Flats", {-2994.40,-222.50,-0.00,-2593.40,277.40,200.00}},
275 {"Ocean Flats", {-2994.40,-430.20,-0.00,-2831.80,-222.50,200.00}},
276 {"Octane Springs", {338.60,1228.50,0.00,664.30,1655.00,200.00}},
277 {"Old Venturas Strip", {2162.30,2012.10,-89.00,2685.10,2202.70,110.90}},
278 {"Palisades", {-2994.40,458.40,-6.10,-2741.00,1339.60,200.00}},
279 {"Palomino Creek", {2160.20,-149.00,0.00,2576.90,228.30,200.00}},
280 {"Paradiso", {-2741.00,793.40,-6.10,-2533.00,1268.40,200.00}},
281 {"Pershing Square", {1440.90,-1722.20,-89.00,1583.50,-1577.50,110.90}},
282 {"Pilgrim", {2437.30,1383.20,-89.00,2624.40,1783.20,110.90}},
283 {"Pilgrim", {2624.40,1383.20,-89.00,2685.10,1783.20,110.90}},
284 {"Pilson Intersection", {1098.30,2243.20,-89.00,1377.30,2507.20,110.90}},
285 {"Pirates in Men's Pants", {1817.30,1469.20,-89.00,2027.40,1703.20,110.90}},
286 {"Playa del Seville", {2703.50,-2126.90,-89.00,2959.30,-1852.80,110.90}},
287 {"Prickle Pine", {1534.50,2583.20,-89.00,1848.40,2863.20,110.90}},
288 {"Prickle Pine", {1117.40,2507.20,-89.00,1534.50,2723.20,110.90}},
289 {"Prickle Pine", {1848.40,2553.40,-89.00,1938.80,2863.20,110.90}},
290 {"Prickle Pine", {1938.80,2624.20,-89.00,2121.40,2861.50,110.90}},
291 {"Queens", {-2533.00,458.40,0.00,-2329.30,578.30,200.00}},
292 {"Queens", {-2593.40,54.70,0.00,-2411.20,458.40,200.00}},
293 {"Queens", {-2411.20,373.50,0.00,-2253.50,458.40,200.00}},
294 {"Randolph Industrial Estate", {1558.00,596.30,-89.00,1823.00,823.20,110.90}},
295 {"Redsands East", {1817.30,2011.80,-89.00,2106.70,2202.70,110.90}},
296 {"Redsands East", {1817.30,2202.70,-89.00,2011.90,2342.80,110.90}},
297 {"Redsands East", {1848.40,2342.80,-89.00,2011.90,2478.40,110.90}},
298 {"Redsands West", {1236.60,1883.10,-89.00,1777.30,2142.80,110.90}},
299 {"Redsands West", {1297.40,2142.80,-89.00,1777.30,2243.20,110.90}},
300 {"Redsands West", {1377.30,2243.20,-89.00,1704.50,2433.20,110.90}},
301 {"Redsands West", {1704.50,2243.20,-89.00,1777.30,2342.80,110.90}},
302 {"Regular Tom", {-405.70,1712.80,-3.00,-276.70,1892.70,200.00}},
303 {"Richman", {647.50,-1118.20,-89.00,787.40,-954.60,110.90}},
304 {"Richman", {647.50,-954.60,-89.00,768.60,-860.60,110.90}},
305 {"Richman", {225.10,-1369.60,-89.00,334.50,-1292.00,110.90}},
306 {"Richman", {225.10,-1292.00,-89.00,466.20,-1235.00,110.90}},
307 {"Richman", {72.60,-1404.90,-89.00,225.10,-1235.00,110.90}},
308 {"Richman", {72.60,-1235.00,-89.00,321.30,-1008.10,110.90}},
309 {"Richman", {321.30,-1235.00,-89.00,647.50,-1044.00,110.90}},
310 {"Richman", {321.30,-1044.00,-89.00,647.50,-860.60,110.90}},
311 {"Richman", {321.30,-860.60,-89.00,687.80,-768.00,110.90}},
312 {"Richman", {321.30,-768.00,-89.00,700.70,-674.80,110.90}},
313 {"Robada Intersection", {-1119.00,1178.90,-89.00,-862.00,1351.40,110.90}},
314 {"Roca Escalante", {2237.40,2202.70,-89.00,2536.40,2542.50,110.90}},
315 {"Roca Escalante", {2536.40,2202.70,-89.00,2625.10,2442.50,110.90}},
316 {"Rockshore East", {2537.30,676.50,-89.00,2902.30,943.20,110.90}},
317 {"Rockshore West", {1997.20,596.30,-89.00,2377.30,823.20,110.90}},
318 {"Rockshore West", {2377.30,596.30,-89.00,2537.30,788.80,110.90}},
319 {"Rodeo", {72.60,-1684.60,-89.00,225.10,-1544.10,110.90}},
320 {"Rodeo", {72.60,-1544.10,-89.00,225.10,-1404.90,110.90}},
321 {"Rodeo", {225.10,-1684.60,-89.00,312.80,-1501.90,110.90}},
322 {"Rodeo", {225.10,-1501.90,-89.00,334.50,-1369.60,110.90}},
323 {"Rodeo", {334.50,-1501.90,-89.00,422.60,-1406.00,110.90}},
324 {"Rodeo", {312.80,-1684.60,-89.00,422.60,-1501.90,110.90}},
325 {"Rodeo", {422.60,-1684.60,-89.00,558.00,-1570.20,110.90}},
326 {"Rodeo", {558.00,-1684.60,-89.00,647.50,-1384.90,110.90}},
327 {"Rodeo", {466.20,-1570.20,-89.00,558.00,-1385.00,110.90}},
328 {"Rodeo", {422.60,-1570.20,-89.00,466.20,-1406.00,110.90}},
329 {"Rodeo", {466.20,-1385.00,-89.00,647.50,-1235.00,110.90}},
330 {"Rodeo", {334.50,-1406.00,-89.00,466.20,-1292.00,110.90}},
331 {"Royal Casino", {2087.30,1383.20,-89.00,2437.30,1543.20,110.90}},
332 {"San Andreas Sound", {2450.30,385.50,-100.00,2759.20,562.30,200.00}},
333 {"Santa Flora", {-2741.00,458.40,-7.60,-2533.00,793.40,200.00}},
334 {"Santa Maria Beach", {342.60,-2173.20,-89.00,647.70,-1684.60,110.90}},
335 {"Santa Maria Beach", {72.60,-2173.20,-89.00,342.60,-1684.60,110.90}},
336 {"Shady Cabin", {-1632.80,-2263.40,-3.00,-1601.30,-2231.70,200.00}},
337 {"Shady Creeks", {-1820.60,-2643.60,-8.00,-1226.70,-1771.60,200.00}},
338 {"Shady Creeks", {-2030.10,-2174.80,-6.10,-1820.60,-1771.60,200.00}},
339 {"Sobell Rail Yards", {2749.90,1548.90,-89.00,2923.30,1937.20,110.90}},
340 {"Spinybed", {2121.40,2663.10,-89.00,2498.20,2861.50,110.90}},
341 {"Starfish Casino", {2437.30,1783.20,-89.00,2685.10,2012.10,110.90}},
342 {"Starfish Casino", {2437.30,1858.10,-39.00,2495.00,1970.80,60.90}},
343 {"Starfish Casino", {2162.30,1883.20,-89.00,2437.30,2012.10,110.90}},
344 {"Temple", {1252.30,-1130.80,-89.00,1378.30,-1026.30,110.90}},
345 {"Temple", {1252.30,-1026.30,-89.00,1391.00,-926.90,110.90}},
346 {"Temple", {1252.30,-926.90,-89.00,1357.00,-910.10,110.90}},
347 {"Temple", {952.60,-1130.80,-89.00,1096.40,-937.10,110.90}},
348 {"Temple", {1096.40,-1130.80,-89.00,1252.30,-1026.30,110.90}},
349 {"Temple", {1096.40,-1026.30,-89.00,1252.30,-910.10,110.90}},
350 {"The Camel's Toe", {2087.30,1203.20,-89.00,2640.40,1383.20,110.90}},
351 {"The Clown's Pocket", {2162.30,1783.20,-89.00,2437.30,1883.20,110.90}},
352 {"The Emerald Isle", {2011.90,2202.70,-89.00,2237.40,2508.20,110.90}},
353 {"The Farm", {-1209.60,-1317.10,114.90,-908.10,-787.30,251.90}},
354 {"The Four Dragons Casino", {1817.30,863.20,-89.00,2027.30,1083.20,110.90}},
355 {"The High Roller", {1817.30,1283.20,-89.00,2027.30,1469.20,110.90}},
356 {"The Mako Span", {1664.60,401.70,0.00,1785.10,567.20,200.00}},
357 {"The Panopticon", {-947.90,-304.30,-1.10,-319.60,327.00,200.00}},
358 {"The Pink Swan", {1817.30,1083.20,-89.00,2027.30,1283.20,110.90}},
359 {"The Sherman Dam", {-968.70,1929.40,-3.00,-481.10,2155.20,200.00}},
360 {"The Strip", {2027.40,863.20,-89.00,2087.30,1703.20,110.90}},
361 {"The Strip", {2106.70,1863.20,-89.00,2162.30,2202.70,110.90}},
362 {"The Strip", {2027.40,1783.20,-89.00,2162.30,1863.20,110.90}},
363 {"The Strip", {2027.40,1703.20,-89.00,2137.40,1783.20,110.90}},
364 {"The Visage", {1817.30,1863.20,-89.00,2106.70,2011.80,110.90}},
365 {"The Visage", {1817.30,1703.20,-89.00,2027.40,1863.20,110.90}},
366 {"Unity Station", {1692.60,-1971.80,-20.40,1812.60,-1932.80,79.50}},
367 {"Valle Ocultado", {-936.60,2611.40,2.00,-715.90,2847.90,200.00}},
368 {"Verdant Bluffs", {930.20,-2488.40,-89.00,1249.60,-2006.70,110.90}},
369 {"Verdant Bluffs", {1073.20,-2006.70,-89.00,1249.60,-1842.20,110.90}},
370 {"Verdant Bluffs", {1249.60,-2179.20,-89.00,1692.60,-1842.20,110.90}},
371 {"Verdant Meadows", {37.00,2337.10,-3.00,435.90,2677.90,200.00}},
372 {"Verona Beach", {647.70,-2173.20,-89.00,930.20,-1804.20,110.90}},
373 {"Verona Beach", {930.20,-2006.70,-89.00,1073.20,-1804.20,110.90}},
374 {"Verona Beach", {851.40,-1804.20,-89.00,1046.10,-1577.50,110.90}},
375 {"Verona Beach", {1161.50,-1722.20,-89.00,1323.90,-1577.50,110.90}},
376 {"Verona Beach", {1046.10,-1722.20,-89.00,1161.50,-1577.50,110.90}},
377 {"Vinewood", {787.40,-1310.20,-89.00,952.60,-1130.80,110.90}},
378 {"Vinewood", {787.40,-1130.80,-89.00,952.60,-954.60,110.90}},
379 {"Vinewood", {647.50,-1227.20,-89.00,787.40,-1118.20,110.90}},
380 {"Vinewood", {647.70,-1416.20,-89.00,787.40,-1227.20,110.90}},
381 {"Whitewood Estates", {883.30,1726.20,-89.00,1098.30,2507.20,110.90}},
382 {"Whitewood Estates", {1098.30,1726.20,-89.00,1197.30,2243.20,110.90}},
383 {"Willowfield", {1970.60,-2179.20,-89.00,2089.00,-1852.80,110.90}},
384 {"Willowfield", {2089.00,-2235.80,-89.00,2201.80,-1989.90,110.90}},
385 {"Willowfield", {2089.00,-1989.90,-89.00,2324.00,-1852.80,110.90}},
386 {"Willowfield", {2201.80,-2095.00,-89.00,2324.00,-1989.90,110.90}},
387 {"Willowfield", {2541.70,-1941.40,-89.00,2703.50,-1852.80,110.90}},
388 {"Willowfield", {2324.00,-2059.20,-89.00,2541.70,-1852.80,110.90}},
389 {"Willowfield", {2541.70,-2059.20,-89.00,2703.50,-1941.40,110.90}},
390 {"Yellow Bell Station", {1377.40,2600.40,-21.90,1492.40,2687.30,78.00}},
391 // Main Zones
392 {"Los Santos", {44.60,-2892.90,-242.90,2997.00,-768.00,900.00}},
393 {"Las Venturas", {869.40,596.30,-242.90,2997.00,2993.80,900.00}},
394 {"Bone County", {-480.50,596.30,-242.90,869.40,2993.80,900.00}},
395 {"Tierra Robada", {-2997.40,1659.60,-242.90,-480.50,2993.80,900.00}},
396 {"Tierra Robada", {-1213.90,596.30,-242.90,-480.50,1659.60,900.00}},
397 {"San Fierro", {-2997.40,-1115.50,-242.90,-1213.90,1659.60,900.00}},
398 {"Red County", {-1213.90,-768.00,-242.90,2997.00,596.30,900.00}},
399 {"Flint County", {-1213.90,-2892.90,-242.90,44.60,-768.00,900.00}},
400 {"Whetstone", {-2997.40,-2892.90,-242.90,-1213.90,-1115.50,900.00}}
401};
402
403enum __zoneInfo
404{
405 Float:gzonePos[4],
406 Float:gzoneCPPos[3],
407 gZone,
408 gzoneCP,
409 Text3D:gzoneTitle,
410 gzoneStatus,
411 gzoneLocked,
412 gzoneTime,
413 gzoneAttack,
414 gzoneOwner
415}
416
417new GZone[MAX_GANG_ZONES][__zoneInfo] =
418{
419 {{-2010.468017, 835.596069, -1890.468017, 931.596069}, {-1979.951538, 882.668945, 45.203125}},
420 {{-1461.562500, -224.193298, -1213.562500, -8.193290}, {-1326.793090, -113.037841, 14.148437}},
421 {{-2683.191406, 140.280532, -2563.191406, 268.280517}, {-2613.484130, 203.175033, 4.739866}},
422 {{-2693.258789, 1321.876708, -2533.258789, 1465.876708}, {-2626.436279, 1365.055664, 7.086853}},
423 {{-2789.775634, 311.090301, -2605.775634, 439.090301}, {-2696.391113, 378.596984, 4.374998}},
424 {{-2089.952148, -115.997756, -2001.952148, 36.002246}, {-2068.896728, -3.998784, 35.340000}},
425 {{-1672.704223, 7.394767, -1512.704223, 167.394775}, {-1589.698120, 75.215591, 3.554687}},
426 {{-2523.148193, 716.738586, -2387.148193, 804.738586}, {-2442.796630, 740.018737, 35.015625}},
427 {{1090.567, -1579.221, 1204.652, -1417.363}, {1128.8400,-1466.8330,15.7451}}
428};
429
430enum __gangInfo
431{
432 gangID,
433 bool:gangStatus,
434 gangColor[7],
435 gangTag[4],
436 gangName[MAX_GANG_NAME],
437 gangScore,
438 gangLeader,
439 gangKills,
440 gangDeaths,
441 bool:gangAttack
442}
443new Gang[MAX_GANGS][__gangInfo];
444//-[ Fahrzeug System ]-//
445#define MAX_SERVER_VEHICLES 999
446
447enum VehEnum {
448 e_modelID,
449 Float:e_x,
450 Float:e_y,
451 Float:e_z,
452 Float:e_a,
453 e_color1,
454 e_color2,
455 e_classID,
456 e_vID,
457 e_sirene
458};
459new serverVehicle[MAX_SERVER_VEHICLES][VehEnum];
460
461//-[ MySQL Verbindung ]-//
462#define MySQL_Host "localhost"
463#define MySQL_User "samp6536"
464#define MySQL_Passwort "x303x302"
465#define MySQL_Datenbank "samp6536_cnr"
466new handle;
467
468//-[ Natives ]-//
469native IsValidVehicle(vehicleid);
470
471//-[ Paketlieferant ]-//
472#define PRESSED(%0) \
473(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
474
475new bool:InJob[MAX_PLAYERS],
476 bool:PaketLieferant[MAX_PLAYERS],
477 Unload_Timer[MAX_PLAYERS];
478
479new Float: DeliveryCP[][3] ={
480 {1894.2181,-2133.8342,15.4663},
481 {1872.5140,-2133.4617,15.4820},
482 {1851.8079,-2135.4785,15.3882},
483 {1804.1733,-2124.5183,13.9424},
484 {1802.0742,-2099.5574,14.0210},
485 {1782.1294,-2126.1873,14.0679},
486 {1781.5271,-2101.9512,14.0566},
487 {1761.2472,-2124.9226,14.0566},
488 {1762.4678,-2102.3833,13.8570},
489 {1734.7061,-2129.8684,14.0210},
490 {1711.6321,-2101.7390,14.0210},
491 {1715.0366,-2124.7524,14.0566},
492 {1684.7278,-2099.4089,13.8343},
493 {1695.4994,-2125.3999,13.8101},
494 {1673.7737,-2122.4600,14.1460},
495 {1667.4948,-2107.5659,14.0723},
496 {1851.8402,-2069.7188,15.4812},
497 {1873.6151,-2070.1265,15.4971},
498 {1895.4196,-2068.2354,15.6689},
499 {1937.9296,-1911.5403,15.2568},
500 {1928.5251,-1916.0890,15.2568},
501 {1913.4252,-1913.0002,15.2568},
502 {1891.9386,-1914.6025,15.2568},
503 {1872.1877,-1912.6665,15.2568},
504 {1854.1146,-1914.9354,15.2568},
505 {1897.8868,-2037.9088,13.5469},
506 {1898.4463,-2029.1753,13.5469},
507 {1916.7900,-2029.1899,13.5469},
508 {1916.8823,-2001.3242,13.5469},
509 {1908.0764,-1982.5504,13.5469},
510 {1877.7290,-1982.6965,13.5469},
511 {1878.1976,-2000.8708,13.5469},
512 {1868.0209,-2009.5092,13.5469},
513 {1849.1951,-2037.8882,13.5469},
514 {1849.4895,-2029.3500,13.5469},
515 {1835.8282,-2006.0781,13.5469},
516 {1817.5377,-2005.6517,13.5544}
517};
518
519//-[ Actor ]-//
520new sabrina;
521
522//-[ Server Defines ]-//
523#define ClanTag "C&R"
524#define Dialog "{132d46}C&R{fafafa}: "
525#define SCM SendClientMessage
526#define MAX_QUERY_LENGTH 500
527
528//-[ Neue Farben ]-//
529#define dblau_h "{132d46}"
530
531#define rot_h "{B90000}"
532#define rot_s "0xB90000FF"
533
534#define weiss_h "{fafafa}"
535#define CHAT_YELLOW "{FFFF00}"
536#define CHAT_WHITE "{FFFFFF}"
537#define CHAT_INFO "{5F9EA0}"
538#define CHAT_SERVER "{808080}"
539#define CHAT_COMMAND "{FFA500}"
540#define CHAT_RED "{FF0000}"
541#define CHAT_CYAN "{00FFFF}"
542#define CHAT_ADMIN "{00FF00}"
543#define CHAT_BAWS "{00FF7F}"
544#define CHAT_GANG "{6495ED}"
545#define CHAT_ADD "{A9C4E4}"
546
547#define GANG_RED "FF0000"
548#define GANG_BLUE "0000FF"
549#define GANG_ORANGE "FFA500"
550#define GANG_YELLOW "FFFF00"
551#define GANG_BLACK "000000"
552#define GANG_GREEN "008000"
553
554//-[ IDK ]-//
555new timer[MAX_PLAYERS],strIP[MAX_PLAYERS][16];
556new Text:Time, Text:Date;
557new lastVehicle[MAX_PLAYERS],KickTimer[MAX_PLAYERS];
558
559//-[ Account Zeugs ]-//
560enum pDataEnum{
561 p_id,
562 bool:pLoggedIn,
563 pName[MAX_PLAYER_NAME],
564 pLevel,
565 pMoney,
566 pKills,
567 pDeaths,
568 pWanteds,
569 pKlasse,
570 pCopWaffenTimer,
571 pPakete,
572 pHandschellen,
573 uAdminLevel,
574 uAdminDuty,
575 pLanguage,
576 pLastIP,
577 playerGang,
578 tempGang[MAX_GANG_NAME],
579 bool:onAttack,
580 attackTimer,
581 attackZone,
582 attackLeft,
583 PlayerText:gangzoneTD[2]
584}
585new PlayerInfo[MAX_PLAYERS][pDataEnum],
586 pd,
587 pdschranke;
588
589//FARBEN
590#define COLOR_DEPARTMENT 0xFF8282FF
591#define COLOR_GREY 0xAFAFAFAA
592#define COLOR_GREEN 0x33AA33AA
593#define COLOR_RED 0xFF0000AA
594#define COLOR_BLUE 0x0000BBAA
595#define COLOR_LIGHTBLUE 0x33CCFFAA
596#define COLOR_DARKRED 0x660000AA
597#define COLOR_WHITE 0xFFFFFFAA
598#define COLOR_YELLOW 0xF1FE01FF
599#define COLOR_PURPLE 0x9E18E7FF
600#define COLOR_ORANGE 0xFFA500AA
601#define COLOR_TUT 0xF6C861AA
602#define COLOR_ROYAL 0x00C1F6AA
603#define COLOR_OOC 0xE0FFFFAA
604#define COLOR_YELLOW2 0xF5DEB3AA
605#define COLOR_LIMEGREEN 0x32CD32FF
606#define COLOR_ROYALBLUE 0x4169E1FF
607#define COLOR_SALMON 0xFA8072FF
608
609//DIALOGE
610enum{
611 DIALOG_REGISTER,
612 DIALOG_LOGIN,
613 DIALOG_STATS,
614 DIALOG_LANGUAGE,
615 DIALOG_PlayerEditOffline,
616 DIALOG_EDITPLAYEROFFLINE_HAUPT,
617 DIALOG_CGANG,
618 DIALOG_CGANG2,
619 DIALOG_UNUSED,
620 DIALOG_GCP,
621 DIALOG_GCP2,
622 DIALOG_GCP3,
623 DIALOG_GCP4,
624 DIALOG_GCP5,
625 DIALOG_GCP6,
626 DIALOG_GCPC
627}
628
629//Wanteds
630new Text:WantedTextdraw[MAX_PLAYERS];
631
632main(){
633 print("\n----------------------------------");
634 print(" Cops and Robbers by Basti & CortexC++");
635 print("----------------------------------\n");
636}
637
638public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart){
639 if(issuerid != INVALID_PLAYER_ID && weaponid == 34 && bodypart == 9){
640 SetPlayerHealth(playerid, 0.0);
641 }return 1;
642}
643
644public OnGameModeInit(){
645 MySQL_SetupConnection();
646 LoadserverVehicles();
647 loadGangZone();
648 loadGang();
649 //-[ Actor ]-//
650 sabrina = CreateActor(306,295.7542,-83.0659,1001.5156, 2.4970);
651
652 //-[ 3DTextLabel ]-//
653 Create3DTextLabel("Equiproom \nLos Santos Police Department \nPress ~k~~VEHICLE_ENTER_EXIT~ to enter", COLOR_BLUE, 1191.7059,-1767.5231,12.0179, 40.0, 0, 0);
654 Create3DTextLabel("Equiproom Exit \nLos Santos Police Department \nPress ~k~~VEHICLE_ENTER_EXIT~ to exit", COLOR_BLUE, 285.7935,-86.2549,1001.5229, 40.0, 0, 0);
655 Create3DTextLabel("Sabrina \nWeapons Expert from the Police \nType in chat /equip to equip you.", COLOR_WHITE, 295.7542,-83.0659,1002.5156, 40.0, 0, 0);
656 Create3DTextLabel("Los Santos International Airport\n Deliver Depot", COLOR_GREEN, 1998.9209,-2212.8696,13.5469, 30.0, 0, 0);
657
658 //-[ SA-MP Config ]-//
659 DisableInteriorEnterExits();
660 EnableStuntBonusForAll(0);
661
662 //-[ Timers ]-//
663 SetTimer("settime",1000,true);
664 SetTimer("getServerName", 3000, true);
665
666 //-[ Textdraw ]-//
667 Date = TextDrawCreate(547.000000,11.000000,"--");
668 TextDrawFont(Date,3);
669 TextDrawLetterSize(Date,0.399999,1.600000);
670 TextDrawColor(Date,0xffffffff);
671
672 Time = TextDrawCreate(547.000000,28.000000,"--");
673 TextDrawFont(Time,3);
674 TextDrawLetterSize(Time,0.399999,1.600000);
675 TextDrawColor(Time,0xffffffff);
676 SetTimer("MoneyTimer", 1000, 1);
677
678 //----[Zivilisten]----//
679 AddPlayerClass(29,1744.6364,-1933.5403,14.0601,357.3861,0,0,0,0,0,0);
680 AddPlayerClass(292,1744.6364,-1933.5403,14.0601,357.3861,0,0,0,0,0,0);
681 AddPlayerClass(293,1744.6364,-1933.5403,14.0601,357.3861,0,0,0,0,0,0);
682 AddPlayerClass(298,1744.6364,-1933.5403,14.0601,357.3861,0,0,0,0,0,0);
683 AddPlayerClass(291,1744.6364,-1933.5403,14.0601,357.3861,0,0,0,0,0,0);
684 AddPlayerClass(263,1744.6364,-1933.5403,14.0601,357.3861,0,0,0,0,0,0);
685 //----[Polizisten]----//
686 AddPlayerClass(283,1216.0564,-1752.9863,12.0726,96.6115,0,0,0,0,0,0);
687 AddPlayerClass(282,1216.0564,-1752.9863,12.0726,96.6115,0,0,0,0,0,0);
688 AddPlayerClass(280,1216.0564,-1752.9863,12.0726,96.6115,0,0,0,0,0,0);
689 AddPlayerClass(307,1216.0564,-1752.9863,12.0726,96.6115,0,0,0,0,0,0);
690 AddPlayerClass(302,1216.0564,-1752.9863,12.0726,96.6115,0,0,0,0,0,0);
691 AddPlayerClass(306,1216.0564,-1752.9863,12.0726,96.6115,0,0,0,0,0,0);
692 //----
693
694 //Polizei Tor
695 pd = CreateDynamicObject(19912, 1214.87781, -1822.65869, 15.62829, 0.00000, 0.00000, -29.22002);
696 pdschranke = CreateDynamicObject(968, 1284.1200, -1837.1996, 13.3851, 0.0000, -90.0000, 0.0000);
697
698 SetGameModeText("LOADING SCRIPT...");
699 return 1;
700}
701
702public OnGameModeExit(){
703 for(new i = 0; i < MAX_GANGS; i++)
704 {
705 if(Gang[i][gangStatus])
706 {
707 saveGang(i);
708 }
709 }
710 foreach(new i: Player){
711 PaketLieferant[i] = false;
712 InJob[i] = false;
713 DisablePlayerCheckpoint(i);
714 KillTimer(Unload_Timer[i]);
715 }mysql_close(handle); SaveAllFracVehs();
716 return 1;
717}
718
719public OnPlayerRequestClass(playerid, classid){
720 SetPlayerPos(playerid, 2087.6096,1911.0695,12.4376);
721 SetPlayerFacingAngle(playerid, 288.8453);
722 SetPlayerCameraPos(playerid, 2094.1235,1911.8203,11.9379);
723 SetPlayerCameraLookAt(playerid, 2087.6096,1911.0695,12.4376);
724
725 if(classid >= 0 && classid <= 5){
726 SetPlayerColor(playerid,COLOR_GREEN);
727 PlayerInfo[playerid][pKlasse] = 0;
728 GameTextForPlayer(playerid,"~g~Zivilisten",1000,5);
729 }else if(classid >= 5 && classid <= 11){
730 SetPlayerColor(playerid,COLOR_LIGHTBLUE);
731 PlayerInfo[playerid][pKlasse] = 1;
732 GameTextForPlayer(playerid,"~b~Polizei",1000,5);
733 }
734 if(PlayerInfo[playerid][pLanguage] == 3){
735 return ShowPlayerDialog(playerid, DIALOG_LANGUAGE, DIALOG_STYLE_MSGBOX, ""#Dialog"Language/Sprache", "Choose your Language: \nWähle deine Sprache:", "English", "Deutsch");
736 }
737 return 1;
738}
739
740public OnPlayerConnect(playerid){
741 GetPlayerIp(playerid, strIP[playerid], 16);
742 //Paketlieferant
743 InJob[playerid] = false;
744 PaketLieferant[playerid] = false;
745 SetPlayerMapIcon(playerid, 12, 1998.9209,-2212.8696,13.5469, 51 , 0, MAPICON_LOCAL);
746
747 //-[ Pickups -]-//
748 CreateDynamicPickup(1318,0,1568.6395,-1689.9791,6.2188,0,0,playerid,150);
749 CreateDynamicPickup(1318,0,285.7935,-86.2549,1001.5229,0,4,playerid,150);
750
751 SetPlayerMapIcon(playerid, 1, 1544.4790,-1673.6595,13.5585, 30, COLOR_YELLOW);
752
753 GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);
754 //-[ GangZone Textdraw-]-//
755 PlayerInfo[playerid][gangzoneTD][0] = CreatePlayerTextDraw(playerid, 51.000000, 304.266998, "Time Left :");
756 PlayerTextDrawLetterSize(playerid, PlayerInfo[playerid][gangzoneTD][0], 0.204999, 1.273334);
757 PlayerTextDrawAlignment(playerid, PlayerInfo[playerid][gangzoneTD][0], 1);
758 PlayerTextDrawColor(playerid, PlayerInfo[playerid][gangzoneTD][0], -1);
759 PlayerTextDrawSetShadow(playerid, PlayerInfo[playerid][gangzoneTD][0], 0);
760 PlayerTextDrawSetOutline(playerid, PlayerInfo[playerid][gangzoneTD][0], 1);
761 PlayerTextDrawBackgroundColor(playerid, PlayerInfo[playerid][gangzoneTD][0], 51);
762 PlayerTextDrawFont(playerid, PlayerInfo[playerid][gangzoneTD][0], 2);
763 PlayerTextDrawSetProportional(playerid, PlayerInfo[playerid][gangzoneTD][0], 1);
764
765 PlayerInfo[playerid][gangzoneTD][1] = CreatePlayerTextDraw(playerid, 104.000000, 304.333679, "03:00");
766 PlayerTextDrawLetterSize(playerid, PlayerInfo[playerid][gangzoneTD][1], 0.204999, 1.273334);
767 PlayerTextDrawAlignment(playerid, PlayerInfo[playerid][gangzoneTD][1], 1);
768 PlayerTextDrawColor(playerid, PlayerInfo[playerid][gangzoneTD][1], -65281);
769 PlayerTextDrawSetShadow(playerid, PlayerInfo[playerid][gangzoneTD][1], 0);
770 PlayerTextDrawSetOutline(playerid, PlayerInfo[playerid][gangzoneTD][1], 1);
771 PlayerTextDrawBackgroundColor(playerid, PlayerInfo[playerid][gangzoneTD][1], 51);
772 PlayerTextDrawFont(playerid, PlayerInfo[playerid][gangzoneTD][1], 2);
773 PlayerTextDrawSetProportional(playerid, PlayerInfo[playerid][gangzoneTD][1], 1);
774 //-[ WantedDraw -]-//
775 WantedTextdraw[playerid] = TextDrawCreate(499.000000, 102.000000, "~y~]: ~w~0");
776 TextDrawBackgroundColor(WantedTextdraw[playerid], 255);
777 TextDrawFont(WantedTextdraw[playerid], 2);
778 TextDrawLetterSize(WantedTextdraw[playerid], 0.480000, 2.000000);
779 TextDrawColor(WantedTextdraw[playerid], -1);
780 TextDrawSetOutline(WantedTextdraw[playerid], 1);
781 TextDrawSetProportional(WantedTextdraw[playerid], 1);
782 UpdateWantedDraw(playerid);
783 if(!PlayerInfo[playerid][pLoggedIn]){
784 new query[128];
785 mysql_format(handle, query, sizeof(query), "SELECT * FROM users WHERE name = '%s'", PlayerInfo[playerid][pName]);
786 mysql_pquery(handle, query, "OnUserCheck", "i", playerid);
787 }return 1;
788}
789
790public OnPlayerDisconnect(playerid, reason){
791 TextDrawHideForPlayer(playerid, Time), TextDrawHideForPlayer(playerid, Date);
792 SaveUserStats(playerid);
793 PlayerInfo[playerid][pKlasse] = 0;
794 InJob[playerid] = false;
795 PaketLieferant[playerid] = false;
796 KillTimer(Unload_Timer[playerid]);
797
798 //-[ Playerinfo - Restet ]-//
799 PlayerInfo[playerid][p_id] = 0;
800 PlayerInfo[playerid][pLoggedIn] = false;
801 PlayerInfo[playerid][pLevel] = 0;
802 PlayerInfo[playerid][uAdminLevel] = 0;
803 PlayerInfo[playerid][pMoney] = 0;
804 PlayerInfo[playerid][pKills] = 0;
805 PlayerInfo[playerid][pDeaths] = 0;
806 PlayerInfo[playerid][pWanteds] = 0;
807 PlayerInfo[playerid][pPakete] = 0;
808 PlayerInfo[playerid][pKlasse] = 0;
809 PlayerInfo[playerid][pHandschellen] = 0;
810 PlayerInfo[playerid][playerGang] = 0;
811 return 1;
812}
813
814public OnPlayerSpawn(playerid){
815 InJob[playerid] = false;
816 PaketLieferant[playerid] = false;
817 UpdateMoney(playerid);
818 UpdateWantedDraw(playerid);
819 return 1;
820}
821
822public OnPlayerDeath(playerid, killerid, reason){
823 if(killerid != INVALID_PLAYER_ID && PlayerInfo[killerid][pKlasse] == 0){
824 new string[128],name[MAX_PLAYER_NAME],killername[MAX_PLAYER_NAME];
825 GetPlayerName(playerid,name,sizeof(name));
826 GetPlayerName(killerid,killername,sizeof(killername));
827 PlayerInfo[killerid][pKills]++;
828 SetWantedLevel(killerid,1);
829 format(string,sizeof(string),"Du wurdest von %s getötet.",killername);
830 if(PlayerInfo[playerid][pLanguage] ==1)return SCM(playerid,COLOR_RED,string);
831 format(string,sizeof(string),"You got killed by %s.",killername);
832 if(PlayerInfo[playerid][pLanguage] ==0)return SCM(playerid,COLOR_RED,string);
833 }
834 if(PlayerInfo[playerid][pWanteds] >= 1 && PlayerInfo[killerid][pKlasse] == 1){
835 PlayerInfo[killerid][pKills]++;
836 PlayerInfo[killerid][pMoney] += PlayerInfo[playerid][pWanteds]*500;
837 GivePlayerMoney(killerid,PlayerInfo[playerid][pWanteds]*500);
838 SetWantedLevel(playerid,-PlayerInfo[playerid][pWanteds]);
839 }
840 PlayerInfo[playerid][pDeaths]++;
841 InJob[playerid] = false;
842 PaketLieferant[playerid] = false;
843 return 1;
844}
845
846public OnVehicleSpawn(vehicleid){
847 return 1;
848}
849
850public OnVehicleDeath(vehicleid, killerid){
851 return 1;
852}
853
854public OnPlayerText(playerid, text[]){
855 new message[128],name[MAX_PLAYER_NAME];
856 GetPlayerName(playerid,name,sizeof(name));
857 format(message, sizeof(message), "%s: %s", name, text);
858 ProxDetector(30.0, playerid, message, -1);
859 return 0;
860}
861
862COMMAND:gtop(playerid, params[])
863{
864 mysql_query(handle, "SELECT * FROM `gang` ORDER BY `score` DESC LIMIT 10", true);
865 new tempString[3][25], tempInt, msg[1000], a = 1;
866 new rows = cache_num_rows(), fakeCount = 0, fakeTab[56];
867 format(msg, sizeof(msg), "Gang top list, updated every 00:00 in-game time.\n\n");
868 if(rows > 0)
869 {
870 for(new i = 0; i < rows; i++)
871 {
872 cache_get_field_content(i, "name", tempString[0]);
873 cache_get_field_content(i, "color", tempString[1]);
874 cache_get_field_content(i, "tag", tempString[2]);
875 tempInt = cache_get_field_content_int(i, "score");
876 fakeCount = strlen(tempString[0]) + strlen(tempString[1]);
877 if(fakeCount >= 72)
878 {
879 format(fakeTab, sizeof(fakeTab), "\t");
880 }
881 else if(fakeCount >= 64)
882 {
883 format(fakeTab, sizeof(fakeTab), "\t\t");
884 }
885 else if(fakeCount >= 56)
886 {
887 format(fakeTab, sizeof(fakeTab), "\t\t\t");
888 }
889 else if(fakeCount >= 48)
890 {
891 format(fakeTab, sizeof(fakeTab), "\t\t\t\t");
892 }
893 else if(fakeCount >= 40)
894 {
895 format(fakeTab, sizeof(fakeTab), "\t\t\t\t\t");
896 }
897 else if(fakeCount >= 32)
898 {
899 format(fakeTab, sizeof(fakeTab), "\t\t\t\t\t\t");
900 }
901 else if(fakeCount >= 24)
902 {
903 format(fakeTab, sizeof(fakeTab), "\t\t\t\t\t\t\t");
904 }
905 else if(fakeCount >= 16)
906 {
907 format(fakeTab, sizeof(fakeTab), "\t\t\t\t\t\t\t\t");
908 }
909 else if(fakeCount >= 8)
910 {
911 format(fakeTab, sizeof(fakeTab), "\t\t\t\t\t\t\t\t\t");
912 }
913 else
914 {
915 format(fakeTab, sizeof(fakeTab), "\t\t\t\t\t\t\t\t\t\t");
916 }
917 format(msg, sizeof(msg), "%s"CHAT_WHITE"%d. {%s}[%s]%s%s%d\n", msg, a, tempString[1], tempString[2], tempString[0], fakeTab, tempInt);
918 a++;
919 }
920 }
921 ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Top Gangs", msg, "Close", "");
922 return 1;
923}
924
925COMMAND:glist(playerid, params[])
926{
927 new bool:found = false, a = 1, msg[1000];
928 for(new i = 0; i < MAX_GANGS; i++)
929 {
930 if(Gang[i][gangStatus])
931 {
932 foreach(new x : Player)
933 {
934 if(PlayerInfo[x][playerGang] == Gang[i][gangID])
935 {
936 found = true;
937 break;
938 }
939 }
940 }
941 if(found)
942 {
943 format(msg, sizeof(msg), "%s"CHAT_WHITE"%d. {%s}[%s]%s\n", msg, a, Gang[i][gangColor], Gang[i][gangTag], Gang[i][gangName]);
944 a++;
945 }
946 found = false;
947 }
948 if(a > 1)
949 ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Online Gang List", msg, "Close", "");
950 else
951 ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Online Gang List", "There's no online gang.", "Close", "");
952 return 1;
953}
954CMD:gleave(playerid, params[])
955{
956 if(!inGang(playerid))
957 {
958 if(PlayerInfo[playerid][pLanguage])
959 info(playerid, "Du bist nicht Mitglied einer Gang.");
960 else
961 info(playerid, "You must be a gang member to use this command.");
962 return 1;
963 }
964 new id = findGang(playerid);
965 if(Gang[id][gangLeader] == PlayerInfo[playerid][p_id])
966 {
967 if(PlayerInfo[playerid][pLanguage])
968 info(playerid, "Gang Leiter können diesen Befehl nicht benutzen.");
969 else
970 info(playerid, "Gang leader can't use this command.");
971 }
972 else
973 {
974 if(PlayerInfo[playerid][onAttack])
975 {
976 if(PlayerInfo[playerid][pLanguage])
977 info(playerid, "Du kannst nicht während eines Gangfights austreten.");
978 else
979 info(playerid, "You can't leave the gang while attacking zone.");
980 return 1;
981 }
982 new msg[256];
983 if(PlayerInfo[playerid][pLanguage])
984 info(playerid, "Du hast die Gang verlassen.");
985 else
986 info(playerid, "You leave the gang.");
987 format(msg, sizeof(msg), "%s leaving the gang!", GetName(playerid));
988 SMTG(PlayerInfo[playerid][playerGang], msg);
989 PlayerInfo[playerid][playerGang] = -1;
990 }
991 return 1;
992}
993CMD:gwar(playerid, params[])
994{
995 if(!inGang(playerid))
996 {
997 if(PlayerInfo[playerid][pLanguage])
998 info(playerid, "Du musst Mitglied einer Gang sein.");
999 else
1000 info(playerid, "You must be a gang member to use this command.");
1001 return 1;
1002 }
1003
1004 new id = findGang(playerid), msg[512];
1005 if(PlayerInfo[playerid][onAttack])
1006 {
1007 if(PlayerInfo[playerid][pLanguage])
1008 info(playerid, "Du bist bereits in einem Gangwar.");
1009 else
1010 info(playerid, "You already started gwar, please wait.");
1011 return 1;
1012 }
1013 if(Gang[id][gangAttack])
1014 {
1015 if(PlayerInfo[playerid][pLanguage])
1016 info(playerid, "Your gang member already started gwar, please wait.");
1017 else
1018 info(playerid, "Deine Gang Mitglieder erobern zurzeit schon ein Gebiet.");
1019 return 1;
1020 }
1021
1022 new bool:found = false;
1023 for(new i = 0; i < MAX_GANG_ZONES; i++)
1024 {
1025 if(isInZone(playerid, i))
1026 {
1027 if(GZone[i][gzoneLocked])
1028 {
1029 format(msg, sizeof(msg), "This zone currently locked, please wait for %.2f Minute(s)", floatdiv(GZone[i][gzoneTime], 60));
1030 ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Zone Locked", msg, "Close", "");
1031 }
1032 else if(GZone[i][gzoneAttack])
1033 {
1034 if(PlayerInfo[playerid][pLanguage])
1035 info(playerid, "Diese Zone wird gerade Attackiert");
1036 else
1037 info(playerid, "This zone currently being attacked by other players.");
1038 }
1039 else if(GZone[i][gzoneOwner] == Gang[id][gangID])
1040 {
1041 if(PlayerInfo[playerid][pLanguage])
1042 info(playerid, "Diese Zone gehört euch schon.");
1043 else
1044 info(playerid, "This zone already controlled by your gang.");
1045 }
1046 else
1047 {
1048 beginCapture(playerid, i);
1049 }
1050 found = true;
1051 break;
1052 }
1053 }
1054 if(!found)
1055 {
1056 if(PlayerInfo[playerid][pLanguage])
1057 info(playerid, "Du musst in einer Gang Zone sein.");
1058 else
1059 info(playerid, "You must be in gang zone to start gwar.");
1060 }
1061 return 1;
1062}
1063//ADMINCMDS*****************************************************************************************
1064stock isConnected(otherID)
1065{
1066 if(IsPlayerConnected(otherID))
1067 return true;
1068 else
1069 return false;
1070}
1071
1072stock bool:isMe(playerid, otherid)
1073{
1074 if(playerid == otherid)
1075 return true;
1076
1077 return false;
1078}
1079forward kickPlayer(playerid);
1080public kickPlayer(playerid)
1081{
1082 Kick(playerid);
1083 return 1;
1084}
1085stock KickDelay(playerid)
1086{
1087 if(PlayerInfo[playerid][pLanguage])
1088 SendClientMessage(playerid, COLOR_DARKRED, "Du wurdest gekickt!");
1089 else
1090 SendClientMessage(playerid, COLOR_DARKRED, "You have been kicked!");
1091 KickTimer[playerid] = SetTimerEx("KickPlayer", 100, false, "d", playerid);
1092 Kick(playerid);
1093 return 1;
1094}
1095stock note(msg[])
1096{
1097 return SendClientMessageToAll(COLOR_DARKRED, msg);
1098}
1099stock bool:isHigher(playerid, otherID)
1100{
1101 if(IsPlayerAdmin(otherID))
1102 return false;
1103
1104 if(PlayerInfo[playerid][uAdminLevel] >= PlayerInfo[otherID][uAdminLevel])
1105 return false;
1106
1107 return true;
1108}
1109CMD:kick(playerid, params[])
1110{
1111 if(!isUserAdmin(playerid, 1))
1112 return 0;
1113
1114 new reason[26], otherID, msg2[256];
1115 if(sscanf(params, "us[26]", otherID, reason))
1116 {
1117 info(playerid, "kick <playerid> <reason>");
1118 }
1119 else
1120 {
1121 if(!isConnected(otherID))
1122 {
1123 info(playerid, "That player isn't logged in!");
1124 return 1;
1125 }
1126 format(msg2, sizeof(msg2), "%s has kicked "CHAT_YELLOW"%s. "CHAT_YELLOW"(%s)", GetName(playerid), GetName(otherID), reason);
1127 info(otherID, msg2);
1128 SAM(msg2);
1129 format(msg2, sizeof(msg2), "%s has been kicked from the server.", GetName(otherID));
1130 note(msg2);
1131 format(msg2, sizeof(msg2), "has kicked %s from the server.", GetName(otherID));
1132 KickDelay(otherID);
1133 }
1134 return 1;
1135}
1136CMD:carrespawn(playerid){
1137if(!isUserAdmin(playerid, 2))return error(playerid, "Sie dürfen diesen Befehl nicht ausführen!");
1138for(new i=1; i<MAX_VEHICLES; i++)
1139{
1140 SetVehicleToRespawn(i);
1141}
1142SendClientMessageToAll(-1, "All vehicle respawned by an admin.");
1143return 1;
1144}
1145CMD:fferstellen(playerid, params[]){
1146 if(GetVehicleModel(MAX_VEHICLES-1) != 0) return SCM(playerid, 0xFF0000FF, "Es können keine weiteren Fahrzeuge erstellt werden, Limit (MAX_VEHICLES) erreicht.");
1147 if(!isUserAdmin(playerid, 2))return error(playerid, "Sie dürfen diesen Befehl nicht ausführen!");
1148 new get_modelId, get_classId, get_color1, get_color2, get_sirenes;
1149 if(sscanf(params, "iiiii", get_modelId, get_classId, get_color1, get_color2, get_sirenes)) return info(playerid, (PlayerInfo[playerid][pLanguage]?("/fferstellen [ FahrzeugID ] [ FraktionID(KlassenID) ] [ Farbe 1 ] [ Farbe 2 ] [ Sirene 1 = eine 0 = keine ]"):("/fferstellen [ VehicleID ] [ FractionID(ClassID) ] [ Color1 ] [ Color2 ] [ sirenes 1 = yes 0 = no]")));
1150 if(get_classId < 0 || get_classId > 1) return info(playerid, (PlayerInfo[playerid][pLanguage]?("Klassen: 0 = Zivilist | 1 = Polizei"):("Class: 0 = Citizens | 1 = Police")));
1151
1152 /*new tmp[20], idx, model, fID, color1 = -1, color2 = -1,sirene = 0;
1153 tmp = strtok(params, idx);
1154 if(!strlen(tmp) || !IsNumeric(tmp)) return SCM(playerid, 0xFF0000FF, "Verwendung: /fferstellen [Model] [KlassenID][opt:Farbe1] [opt:Farbe2] [opt:sirene]");
1155 model = strval(tmp);
1156 if(model < 400 || model > 611) return SCM(playerid, 0xFF0000FF, "Error: Model ID existiert nicht.");
1157 tmp = strtok(params, idx);
1158 if(!strlen(tmp) || !IsNumeric(tmp)) return SCM(playerid, 0xFF0000FF, "Verwendung: /fferstellen [Model] [KlassenID][opt:Farbe1] [opt:Farbe2] [opt:sirene]");
1159 fID = strval(tmp);
1160 if(fID < 0 || fID > 1) return SCM(playerid,0xFF0000FF,"Klasse: 0 = Zivilist 1 = Polizei");
1161 tmp = strtok(params, idx);
1162 if(strlen(tmp) && IsNumeric(tmp)) color1 = strval(tmp);
1163 tmp = strtok(params, idx);
1164 if(strlen(tmp) && IsNumeric(tmp)) color2 = strval(tmp);
1165 tmp = strtok(params, idx);
1166 if(strlen(tmp) && IsNumeric(tmp)) sirene = strval(tmp);<------------------- alter befehl */
1167
1168 for(new i=0; i<MAX_SERVER_VEHICLES; i++){
1169 if(serverVehicle[i][e_vID] == 0){
1170 new Float:x, Float:y, Float:z, Float:a;
1171 GetPlayerPos(playerid, x, y, z);
1172 GetPlayerFacingAngle(playerid, a);
1173 serverVehicle[i][e_modelID] = get_modelId;
1174 serverVehicle[i][e_x] = x;
1175 serverVehicle[i][e_y] = y;
1176 serverVehicle[i][e_z] = z;
1177 serverVehicle[i][e_a] = a;
1178 serverVehicle[i][e_color1] = get_color1;
1179 serverVehicle[i][e_color2] = get_color2;
1180 serverVehicle[i][e_classID] = get_classId;
1181 serverVehicle[i][e_sirene] = get_sirenes;
1182 new query[256];
1183 format(query, sizeof(query), "INSERT INTO serverVehicles (ID, ModelID, PosX, PosY, PosZ, PosA, Color1, Color2, classID,sirene) VALUES ('%d', '%d', '%f', '%f', '%f', '%f', '%d', '%d', '%d', '%d')",
1184 i, serverVehicle[i][e_modelID], serverVehicle[i][e_x], serverVehicle[i][e_y], serverVehicle[i][e_z], serverVehicle[i][e_a], serverVehicle[i][e_color1], serverVehicle[i][e_color2], serverVehicle[i][e_classID], serverVehicle[i][e_sirene]);
1185 mysql_tquery(handle, query);
1186 serverVehicle[i][e_vID] = AddStaticVehicleEx(serverVehicle[i][e_modelID], serverVehicle[i][e_x], serverVehicle[i][e_y], serverVehicle[i][e_z], serverVehicle[i][e_a], serverVehicle[i][e_color1], serverVehicle[i][e_color2], -1,serverVehicle[i][e_sirene]);
1187 PutPlayerInVehicle(playerid, serverVehicle[i][e_vID], 0);
1188 return SCM(playerid, 0x00FF00FF, "Fahrzeug gespeichert.");
1189 }
1190 }return SCM(playerid, 0xFF0000FF, "Error: Limit für Fraktions-Fahrzeuge erreicht.");
1191}
1192
1193CMD:ffloeschen(playerid, params[]){
1194 new vid;
1195 if(!IsNumeric(params) || !strlen(params)) return SCM(playerid, 0xFF0000FF, "Error: Nutze: /ffloeschen [Vehicle ID]");
1196 if(!isUserAdmin(playerid, 2))return error(playerid, "Sie dürfen diesen Befehl nicht ausführen!");
1197 vid = strval(params);
1198
1199 if(vid <= 0) return SCM(playerid, 0xFF0000FF, "Error: Vehicle-ID ist kein Fraktions-Fahrzeug.");
1200
1201 for(new i=0; i<MAX_SERVER_VEHICLES; i++){
1202 if(serverVehicle[i][e_vID] == vid){
1203 serverVehicle[i][e_modelID] = 0;
1204 serverVehicle[i][e_x] = 0.0;
1205 serverVehicle[i][e_y] = 0.0;
1206 serverVehicle[i][e_z] = 0.0;
1207 serverVehicle[i][e_a] = 0.0;
1208 serverVehicle[i][e_color1] = 0;
1209 serverVehicle[i][e_color2] = 0;
1210 serverVehicle[i][e_classID] = -1;
1211 new query[128];
1212 format(query, sizeof(query), "DELETE FROM serverVehicles WHERE ID = '%d'", i);
1213 mysql_tquery(handle, query);
1214
1215 DestroyVehicle(serverVehicle[i][e_vID]);
1216 serverVehicle[i][e_vID] = 0;
1217 return SCM(playerid, 0x00FF00FF, "Fahrzeug gelöscht.");
1218 }
1219 }return SCM(playerid, 0xFF0000FF, "Error: Vehicle-ID ist kein Fraktions-Fahrzeug.");
1220}
1221
1222CMD:parken(playerid){
1223 if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid, 0xFF0000FF, "Du bist in keinem Fahrzeug.");
1224 if(!isUserAdmin(playerid, 2))return error(playerid, "Sie dürfen diesen Befehl nicht ausführen!");
1225 new vehicleid = GetPlayerVehicleID(playerid);
1226 if(SaveFracVehCheck(vehicleid)) return SCM(playerid, 0x00FF00FF, "Fahrzeug geparkt.");
1227 else return SCM(playerid, 0xFF0000FF, "Dieses Fahrzeug kann nicht geparkt werden.");
1228}
1229COMMAND:veh(playerid, params[]){
1230 new veh[24], color[2];
1231 if(!isUserAdmin(playerid, 2))return error(playerid, "Sie dürfen diesen Befehl nicht ausführen!");
1232 if(sscanf(params, "s[24]I(-1)I(-1)", veh, color[0], color[1])) return SCM(playerid, COLOR_ORANGE, "NUTZE: /veh [ vehicleid/name ] [ Optional: color 1 ] [ Optional: color 2 ]");
1233 new VehicleNames[212][] = {
1234 {"Landstalker"},{"Bravura"},{"Buffalo"},{"Linerunner"},{"Perrenial"},{"Sentinel"},{"Dumper"},
1235 {"Firetruck"},{"Trashmaster"},{"Stretch"},{"Manana"},{"Infernus"},{"Voodoo"},{"Pony"},{"Mule"},
1236 {"Cheetah"},{"Ambulance"},{"Leviathan"},{"Moonbeam"},{"Esperanto"},{"Taxi"},{"Washington"},
1237 {"Bobcat"},{"Mr Whoopee"},{"BF Injection"},{"Hunter"},{"Premier"},{"Enforcer"},{"Securicar"},
1238 {"Banshee"},{"Predator"},{"Bus"},{"Rhino"},{"Barracks"},{"Hotknife"},{"Trailer 1"},{"Previon"},
1239 {"Coach"},{"Cabbie"},{"Stallion"},{"Rumpo"},{"RC Bandit"},{"Romero"},{"Packer"},{"Monster"},
1240 {"Admiral"},{"Squalo"},{"Seasparrow"},{"Pizzaboy"},{"Tram"},{"Trailer 2"},{"Turismo"},
1241 {"Speeder"},{"Reefer"},{"Tropic"},{"Flatbed"},{"Yankee"},{"Caddy"},{"Solair"},{"Berkley's RC Van"},
1242 {"Skimmer"},{"PCJ-600"},{"Faggio"},{"Freeway"},{"RC Baron"},{"RC Raider"},{"Glendale"},{"Oceanic"},
1243 {"Sanchez"},{"Sparrow"},{"Patriot"},{"Quad"},{"Coastguard"},{"Dinghy"},{"Hermes"},{"Sabre"},
1244 {"Rustler"},{"ZR-350"},{"Walton"},{"Regina"},{"Comet"},{"BMX"},{"Burrito"},{"Camper"},{"Marquis"},
1245 {"Baggage"},{"Dozer"},{"Maverick"},{"News Chopper"},{"Rancher"},{"FBI Rancher"},{"Virgo"},{"Greenwood"},
1246 {"Jetmax"},{"Hotring"},{"Sandking"},{"Blista Compact"},{"Police Maverick"},{"Boxville"},{"Benson"},
1247 {"Mesa"},{"RC Goblin"},{"Hotring Racer A"},{"Hotring Racer B"},{"Bloodring Banger"},{"Rancher"},
1248 {"Super GT"},{"Elegant"},{"Journey"},{"Bike"},{"Mountain Bike"},{"Beagle"},{"Cropdust"},{"Stunt"},
1249 {"Tanker"}, {"Roadtrain"},{"Nebula"},{"Majestic"},{"Buccaneer"},{"Shamal"},{"Hydra"},{"FCR-900"},
1250 {"NRG-500"},{"HPV1000"},{"Cement Truck"},{"Tow Truck"},{"Fortune"},{"Cadrona"},{"FBI Truck"},
1251 {"Willard"},{"Forklift"},{"Tractor"},{"Combine"},{"Feltzer"},{"Remington"},{"Slamvan"},
1252 {"Blade"},{"Freight"},{"Streak"},{"Vortex"},{"Vincent"},{"Bullet"},{"Clover"},{"Sadler"},
1253 {"Firetruck LA"},{"Hustler"},{"Intruder"},{"Primo"},{"Cargobob"},{"Tampa"},{"Sunrise"},{"Merit"},
1254 {"Utility"},{"Nevada"},{"Yosemite"},{"Windsor"},{"Monster A"},{"Monster B"},{"Uranus"},{"Jester"},
1255 {"Sultan"},{"Stratum"},{"Elegy"},{"Raindance"},{"RC Tiger"},{"Flash"},{"Tahoma"},{"Savanna"},
1256 {"Bandito"},{"Freight Flat"},{"Streak Carriage"},{"Kart"},{"Mower"},{"Duneride"},{"Sweeper"},
1257 {"Broadway"},{"Tornado"},{"AT-400"},{"DFT-30"},{"Huntley"},{"Stafford"},{"BF-400"},{"Newsvan"},
1258 {"Tug"},{"Trailer 3"},{"Emperor"},{"Wayfarer"},{"Euros"},{"Hotdog"},{"Club"},{"Freight Carriage"},
1259 {"Trailer 3"},{"Andromada"},{"Dodo"},{"RC Cam"},{"Launch"},{"Police Car (LSPD)"},{"Police Car (SFPD)"},
1260 {"Police Car (LVPD)"},{"Police Ranger"},{"Picador"},{"S.W.A.T. Van"},{"Alpha"},{"Phoenix"},{"Glendale"},
1261 {"Sadler"},{"Luggage Trailer A"},{"Luggage Trailer B"},{"Stair Trailer"},{"Boxville"},{"Farm Plow"},
1262 {"Utility Trailer"}
1263 }, vehicle = -1;
1264
1265 for(new v; v < 212; v++) if(strfind(VehicleNames[v], veh, true) != -1) { vehicle = v + 400; break; }
1266 if(vehicle == -1) vehicle = strval(veh);
1267 if(vehicle < 400 || vehicle > 611) return SCM(playerid, COLOR_ORANGE, "Ungültiger Name oder Üngültige ID!");
1268
1269 new Float:Pos[4];
1270 if(IsPlayerInAnyVehicle(playerid)){
1271 GetVehiclePos(GetPlayerVehicleID(playerid), Pos[0], Pos[1], Pos[2]);
1272 GetVehicleZAngle(GetPlayerVehicleID(playerid), Pos[3]);
1273 }else{
1274 GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
1275 GetPlayerFacingAngle(playerid, Pos[3]);
1276 }
1277 PutPlayerInVehicle(playerid, CreateVehicle(vehicle, Pos[0], Pos[1], Pos[2], Pos[3], color[0], color[1], 120), 0);
1278 GetPlayerName(playerid, veh, MAX_PLAYER_NAME);
1279 return 1;
1280}
1281
1282CMD:setadmin(playerid, params[]){
1283 if(!isUserAdmin(playerid, 1))return error(playerid, "Du bist kein Admin!");
1284 new pID, adminlvl, string[252+2];
1285 if(sscanf(params,"ui",pID,adminlvl))return info(playerid, "/setadmin [ PlayerID | PlayerName ] [ AdminRang ]");
1286 if(!IsPlayerConnected(pID))return error(playerid, "Der Spieler ist nicht Online!");
1287 if(IsPlayerNPC(pID))return error(playerid, "Ein NPC kann kein Adminlevel bekommen!");
1288 if(PlayerInfo[pID][uAdminLevel] == adminlvl)return error(playerid, "Der Spieler hat schon dieses Adminlevel!");
1289 if(adminlvl<0||adminlvl>3)return error(playerid, "Es gibt nur 3 Ränge!");
1290 PlayerInfo[pID][uAdminLevel] = adminlvl;
1291 format(string, sizeof(string), "Du wurdest von "dblau_h"%s"weiss_h" als Admin eingestellt Rang: ( "dblau_h"%s"weiss_h" )", getPlayerName(playerid), getUserAdminRang(pID));
1292 SCM(pID, 0xFAFAFAFF, string);
1293 format(string, sizeof(string), "Du hast "dblau_h"%s"weiss_h" als Admin eingestellt Rang: ( "dblau_h"%s"weiss_h" )", getPlayerName(pID), getUserAdminRang(pID));
1294 SCM(playerid, 0xFAFAFAFF, string);
1295 return 1;
1296}
1297
1298CMD:playeredit(playerid, params[]){
1299 if(!isUserAdmin(playerid, 2)) return error(playerid, "Du darfst das nicht!");
1300 return ShowPlayerDialog(playerid, DIALOG_PlayerEditOffline, DIALOG_STYLE_INPUT, ""#Dialog"Player Editor (Offline)", "{fafafa}Bitte geben Sie die eindeutige Datenbank-ID ein!", "Weiter", "Abbrechen");
1301}
1302
1303CMD:aduty(playerid, params[]){
1304 if(!isUserAdmin(playerid, 1))return error(playerid, "Du bist kein Admin!");
1305 new string[252+6];
1306 if(PlayerInfo[playerid][uAdminDuty] == 1){
1307 format(string, sizeof(string), "[TEAM]: "rot_h"%s"weiss_h" is now OffDuty as "rot_h"%s"weiss_h"", getPlayerName(playerid), getUserAdminRang(playerid));
1308 SendClientMessageToAll(0xFAFAFAFF, string);
1309 PlayerInfo[playerid][uAdminDuty] = 0;
1310 }else{
1311 format(string, sizeof(string), "[TEAM]: "dblau_h"%s"weiss_h" is now OnDuty as "dblau_h"%s"weiss_h"", getPlayerName(playerid), getUserAdminRang(playerid));
1312 SendClientMessageToAll(0xFAFAFAFF, string);
1313 PlayerInfo[playerid][uAdminDuty] = 1;
1314 }return 1;
1315}
1316CMD:creategang(playerid, params[])
1317{
1318 if(PlayerInfo[playerid][pMoney] <= 100000)
1319 {
1320 info(playerid,(PlayerInfo[playerid][pLanguage]?("Du brauchst mindestens $100000"):("You need $100000")));
1321 return 1;
1322 }
1323
1324 if(inGang(playerid))
1325 {
1326 info(playerid,(PlayerInfo[playerid][pLanguage]?("Du bist schon in einer Gang."):("You are already in a Gang.")));
1327 return 1;
1328 }
1329 if(PlayerInfo[playerid][pLanguage])
1330 ShowPlayerDialog(playerid, DIALOG_CGANG, DIALOG_STYLE_INPUT, "Gang Erstellen", "Gebe deinen Gang namen ein:", "Weiter", "Abbrechen");
1331 else
1332 ShowPlayerDialog(playerid, DIALOG_CGANG, DIALOG_STYLE_INPUT, "Create Gang", "Type your gang name", "Next", "Cancel");
1333 return 1;
1334}
1335CMD:sprache(playerid, params[]){
1336 return cmd_language(playerid,params);
1337}
1338
1339CMD:language(playerid, params[]){
1340 return ShowPlayerDialog(playerid, DIALOG_LANGUAGE, DIALOG_STYLE_MSGBOX, ""#Dialog"Language/Sprache", "Choose your Language: \nWähle deine Sprache:", "English", "Deutsch");
1341}
1342
1343CMD:d(playerid, params[]){
1344 return cmd_department(playerid, params);
1345}
1346
1347CMD:department(playerid, params[]){
1348 new text[96], string[128],name[MAX_PLAYER_NAME];
1349 GetPlayerName(playerid, name, sizeof(name));
1350 if(sscanf(params, "s[96]", text))return SCM(playerid, COLOR_GREY, "Benutze (/d)epartment [Nachricht]");
1351 if(PlayerInfo[playerid][pKlasse] == 0)return SCM(playerid, COLOR_GREY, "Du bist kein Beamter.");
1352 format(string, sizeof(string), "** %s: %s, over **", name, text);
1353 for(new i=0;i<GetMaxPlayers();i++){
1354 if(IsPlayerConnected(i)){
1355 if(PlayerInfo[playerid][pKlasse] == 1){
1356 SCM(i, COLOR_DEPARTMENT, string);
1357 }
1358 }
1359 }return 1;
1360}
1361
1362CMD:help(playerid, params[]){
1363 SCM(playerid, COLOR_GREY, (PlayerInfo[playerid][pLanguage]?("Allgemeine Befehle: /stats /kill /eject /sprache /creategang"):("General Commands: /stats /kill /eject /language /creategang")));
1364 SCM(playerid, COLOR_GREY, (PlayerInfo[playerid][pLanguage]?("Chat Befehle: /pm /me /g /(s)cream"):("Chat Commands: /pm /me /g /(s)cream")));
1365 if(PlayerInfo[playerid][pKlasse] == 1)return SCM(playerid, COLOR_GREY, (PlayerInfo[playerid][pLanguage]?("Polizei Befehle: /cuff /uncuff /grab /(d)epartment"):("Police Commands: /cuff /uncuff /grab /(d)epartment")));
1366 if(PlayerInfo[playerid][pKlasse] == 0)return SCM(playerid, COLOR_GREY, (PlayerInfo[playerid][pLanguage]?("Zivilisten Befehle: /stopwork"):("Civilian Commands: /stopwork")));
1367 return 1;
1368}
1369
1370CMD:grab(playerid, params[]){
1371 new pID, string[128], Float:pos[3];
1372 new name[MAX_PLAYER_NAME];
1373 GetPlayerName(playerid, name, sizeof(name));
1374 new pname[MAX_PLAYER_NAME];
1375 GetPlayerName(pID, pname, sizeof(pname));
1376 if(playerid == pID) return info(playerid,(PlayerInfo[playerid][pLanguage]?("Du kannst dich nicht selbst ins Auto ziehen."):("You can not grab yourself.")));
1377 if(PlayerInfo[playerid][pKlasse] == 0)return info(playerid,(PlayerInfo[playerid][pLanguage]?("Du bist nicht Mitglied der Police"):("You are not Member of the Police")));
1378 if(sscanf(params, "ui", pID))return info(playerid,(PlayerInfo[playerid][pLanguage]?("NUTZE: /grab [PlayerID]"):("USE: /grab [ Playerid ]")));
1379 if(!IsPlayerConnected(pID))return info(playerid, (PlayerInfo[playerid][pLanguage]?("Der Spieler ist nicht Online."):("This player is not connected")));
1380 GetPlayerPos(pID, pos[0], pos[1], pos[2]);
1381 if(PlayerInfo[pID][pHandschellen] == 0) return info(playerid,(PlayerInfo[playerid][pLanguage]?("Dieser Spieler hat keine Handschelle angelegt."):("This player is not Cuffed.")));
1382 if(!IsPlayerInRangeOfPoint(playerid, 10.0, pos[0], pos[1], pos[2]))return info(playerid,(PlayerInfo[playerid][pLanguage]?("Spieler ist nicht in der nähe."):("Player is not in range.")));
1383 if(IsPlayerNPC(pID))return 1;
1384 if(IsPlayerInAnyVehicle(pID))return info(playerid,(PlayerInfo[playerid][pLanguage]?("Der Spieler ist in einem Fahrzeug."):("Player is in a vehicle.")));
1385 ClearAnimations(pID);
1386 SetPlayerSpecialAction(pID, SPECIAL_ACTION_NONE);
1387 RemovePlayerAttachedObject(pID, 0);
1388 TogglePlayerControllable(pID, false);
1389 PutPlayerInVehicle(pID, GetPlayerVehicleID(playerid), GetFreeSeat(playerid));
1390 format(string, sizeof(string), "%s hat dich ins Fahrzeug gezogen.", name);
1391 if(PlayerInfo[playerid][pLanguage] == 1)return SCM(pID, COLOR_LIGHTBLUE, string);
1392 format(string, sizeof(string), "You got grabbed by %s.", name);
1393 if(PlayerInfo[playerid][pLanguage] == 0)return SCM(pID, COLOR_LIGHTBLUE, string);
1394 return 1;
1395}
1396
1397CMD:eject(playerid, params[]){
1398 new iID;
1399 if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
1400 if(sscanf(params, "u", iID))return info(playerid,(PlayerInfo[playerid][pLanguage]?("NUTZE: /eject [PlayerID]"):("USE: /eject [ Playerid ]")));
1401 if(iID == INVALID_PLAYER_ID)
1402 if(GetPlayerVehicleID(playerid) != GetPlayerVehicleID(iID))
1403 return 1;
1404 TogglePlayerControllable(iID, true);
1405 PlayerInfo[iID][pHandschellen] = 0;
1406 RemovePlayerFromVehicle(iID);
1407 return 1;
1408}
1409
1410CMD:cuff(playerid, params[]){
1411 new targetid;
1412 if(sscanf(params, "u", targetid)) return info(playerid,(PlayerInfo[playerid][pLanguage]?("NUTZE: /cuff [PlayerID]"):("USE: /cuff [ Playerid ]")));
1413 if(IsPlayerConnected(targetid) && PlayerInfo[playerid][pKlasse] == 1){
1414 new Float:x, Float:y, Float:z;
1415 GetPlayerPos(playerid, x, y, z);
1416 if(IsPlayerInRangeOfPoint(targetid, 5.0, x, y, z))
1417 if(playerid == targetid) return info(playerid,(PlayerInfo[playerid][pLanguage]?("Du kannst dir nicht selbst Handschellen anlegen."):("You cant cuff yourself.")));
1418 if(PlayerInfo[targetid][pKlasse] == 1) return info(playerid,(PlayerInfo[playerid][pLanguage]?("Du kannst keinem Polizisten Handschellen anlegen."):("You cannot cuff Police Members.")));
1419 if(PlayerInfo[playerid][pKlasse] == 0)return info(playerid,(PlayerInfo[playerid][pLanguage]?("Du bist kein Mitglied der Polizei."):("You are not Member of the Police")));
1420 if(IsPlayerInAnyVehicle(targetid))return info(playerid,(PlayerInfo[playerid][pLanguage]?("Spieler ist in einem Fahrzeug."):("Player is in a Vehicle.")));
1421 if(IsPlayerInAnyVehicle(playerid))return info(playerid,(PlayerInfo[playerid][pLanguage]?("Du darfst dabei nicht in einem Auto sitzen."):("You are in a Vehicle.")));
1422 if(PlayerInfo[targetid][pHandschellen] == 1) return info(playerid,(PlayerInfo[playerid][pLanguage]?("Der Spieler hat schon Handschellen angelegt."):("This player is already cuffed.")));{
1423 new str[512];
1424 new name[MAX_PLAYER_NAME];
1425 GetPlayerName(playerid, name, sizeof(name));
1426 new target[MAX_PLAYER_NAME];
1427 GetPlayerName(targetid, target, sizeof(target));
1428 format(str, sizeof(str), "INFO: Du hast %s die Handschellen angelegt!",target);
1429 if(PlayerInfo[playerid][pLanguage] == 1)return SCM(playerid, 0xE01B1B, str);
1430 format(str, sizeof(str), "WARNUNG: Dir wurden die Handschellen von %s angelegt!",name);
1431 if(PlayerInfo[playerid][pLanguage] == 1)return SCM(targetid, 0xE01B1B, str);
1432 format(str, sizeof(str), "INFO: You cuffed %s!",target);
1433 if(PlayerInfo[playerid][pLanguage] == 0)return SCM(playerid, 0xE01B1B, str);
1434 format(str, sizeof(str), "WARNING: You got cuffed by %s!",name);
1435 if(PlayerInfo[playerid][pLanguage] == 0)return SCM(targetid, 0xE01B1B, str);
1436 PlayerInfo[targetid][pHandschellen] = 1;
1437 SetPlayerAttachedObject(targetid, 0, 19418, 6, -0.011000, 0.028000, -0.022000, -15.600012, -33.699977,-81.700035, 0.891999, 1.000000, 1.168000);
1438 SetPlayerSpecialAction(targetid,SPECIAL_ACTION_CUFFED);
1439 return 1;
1440 }
1441 }return 1;
1442}
1443
1444CMD:uncuff(playerid, params[]){
1445
1446 new targetid;
1447 if(sscanf(params, "u", targetid)) return info(playerid,(PlayerInfo[playerid][pLanguage]?("NUTZE: /uncuff [PlayerID]"):("USE: /uncuff [ Playerid ]")));
1448 if(IsPlayerConnected(targetid) && PlayerInfo[playerid][pKlasse] == 1){
1449 new Float:x, Float:y, Float:z;
1450 GetPlayerPos(playerid, x, y, z);
1451 if(IsPlayerInRangeOfPoint(targetid, 5.0, x, y, z))
1452 if(PlayerInfo[playerid][pKlasse] == 0)return info(playerid,(PlayerInfo[playerid][pLanguage]?("Du bist kein Mitglied der Polizei."):("You are not Member of the Police")));
1453 if(IsPlayerInAnyVehicle(targetid))return info(playerid,(PlayerInfo[playerid][pLanguage]?("Spieler ist in einem Fahrzeug."):("Player is in a Vehicle.")));
1454 if(IsPlayerInAnyVehicle(playerid))return info(playerid,(PlayerInfo[playerid][pLanguage]?("Du darfst dabei nicht in einem Auto sitzen."):("You are in a Vehicle.")));
1455 if(PlayerInfo[targetid][pHandschellen] == 0) return info(playerid,(PlayerInfo[playerid][pLanguage]?("Der Spieler hat keine Handschellen an."):("This player is not Cuffed")));
1456 if(IsPlayerAttachedObjectSlotUsed(targetid, 0)) RemovePlayerAttachedObject(targetid, 0);
1457 SetPlayerSpecialAction(targetid,SPECIAL_ACTION_NONE);
1458 new str[512];
1459 new name[MAX_PLAYER_NAME];
1460 GetPlayerName(playerid, name, sizeof(name));
1461 new target[MAX_PLAYER_NAME];
1462 GetPlayerName(targetid, target, sizeof(target));
1463 format(str, sizeof(str), "INFO: Du hast %s die Handschellen abgenommen!",target);
1464 if(PlayerInfo[playerid][pLanguage] == 1)return SCM(playerid, 0xE01B1B, str);
1465 format(str, sizeof(str), "WARNUNG: Deine Handschellen wurden von %s abgenommen!",name);
1466 if(PlayerInfo[playerid][pLanguage] == 1)return SCM(targetid, 0xE01B1B, str);
1467 format(str, sizeof(str), "INFO: You removed %s cuffs!",target);
1468 if(PlayerInfo[playerid][pLanguage] == 0)return SCM(playerid, 0xE01B1B, str);
1469 format(str, sizeof(str), "WARNING: Your cuffs has been removed by %s!",name);
1470 if(PlayerInfo[playerid][pLanguage] == 0)return SCM(targetid, 0xE01B1B, str);
1471 PlayerInfo[targetid][pHandschellen] = 0;
1472 return 1;
1473 }return 1;
1474}
1475CMD:stopwork(playerid,params[]){
1476 if(PaketLieferant[playerid] == true){
1477 PaketLieferant[playerid] = false;
1478 InJob[playerid] = false;
1479 DisablePlayerCheckpoint(playerid);
1480 info(playerid,(PlayerInfo[playerid][pLanguage]?("Du hast die Arbeit abgebrochen."):("You have cancelled work.")));
1481 }return 1;
1482}
1483
1484CMD:g(playerid, params[]){
1485 new string[128], nachricht[100], name[MAX_PLAYER_NAME];
1486 GetPlayerName(playerid,name,sizeof(name));
1487 if(sscanf(params, "s[100]", nachricht)){
1488 info(playerid,(PlayerInfo[playerid][pLanguage]?("/g [TEXT]"):("/g [TEXT]")));
1489 return 1;
1490 }else{
1491 format(string, sizeof(string), "{%06x}%s:"#weiss_h" %s",GetPlayerColor(playerid) >>> 8, name, nachricht);
1492 SendClientMessageToAll(-1,string);
1493 }return 1;
1494}
1495
1496CMD:me(playerid, params[]){
1497 new string[128], aktion[100], name[MAX_PLAYER_NAME];
1498 GetPlayerName(playerid,name,sizeof(name));
1499 if(sscanf(params, "s[100]", aktion)){
1500 info(playerid,(PlayerInfo[playerid][pLanguage]?("/me [aktion]"):("/me [action]")));
1501 return 1;
1502 }else{
1503 format(string, sizeof(string), "* %s %s", name, aktion);
1504 ProxDetector(30, playerid, string, COLOR_PURPLE);
1505 }return 1;
1506}
1507
1508CMD:scream(playerid, params[]) return cmd_schreien(playerid, params);
1509CMD:s(playerid, params[]) return cmd_schreien(playerid, params);
1510
1511CMD:schreien(playerid, params[]){
1512 new string[128],schrei[100],name[MAX_PLAYER_NAME];
1513 GetPlayerName(playerid,name,sizeof(name));
1514 if(sscanf(params, "s[100]", schrei) && PlayerInfo[playerid][pLanguage] == 1){
1515 info(playerid,(PlayerInfo[playerid][pLanguage]?("/schreien [nachricht]"):("/scream [message]")));
1516 return 1;
1517 }else{
1518 format(string, sizeof(string), "%s shout: %s!",name,schrei);
1519 ProxDetector(50.0, playerid, string, -1);
1520 }return 1;
1521}
1522
1523CMD:equip(playerid){
1524 if(PlayerInfo[playerid][pCopWaffenTimer] == 1)return info(playerid,(PlayerInfo[playerid][pLanguage]?("Du kannst dich nur alle 2 Minuten ausrüsten."):("You can only use /equip every 2 minutes.")));
1525 if(PlayerInfo[playerid][pKlasse] == 1){
1526 GivePlayerWeapon(playerid,24,100);
1527 GivePlayerWeapon(playerid,25,50);
1528 GivePlayerWeapon(playerid,29,1000);
1529 SetPlayerArmour(playerid,100);
1530 PlayerInfo[playerid][pCopWaffenTimer] = 1;
1531 SCM(playerid,COLOR_WHITE,(PlayerInfo[playerid][pLanguage]?("Hier hast du deine Ausrüstung!"):("Here you got your Equipment.")));
1532 ApplyActorAnimation(sabrina, "MISC", "Idle_Chat_02", 4.1, 0, 0, 0, 0, 3000);
1533 SetTimerEx("CopWaffenTimer", 120000, true, "i", playerid);
1534 }return 1;
1535}
1536
1537CMD:pm(playerid, params[]){
1538 new str[1000], str2[1000], id, Name1[MAX_PLAYER_NAME], Name2[MAX_PLAYER_NAME];
1539 if(sscanf(params, "us", id, str2)){
1540 info(playerid,(PlayerInfo[playerid][pLanguage]?("/pm [id] [nachricht]"):("/pm [id] [message]")));
1541 return 1;
1542 }
1543 if(!IsPlayerConnected(id)) return info(playerid,(PlayerInfo[playerid][pLanguage]?("Der Spieler ist nicht online."):("This Player is not connected")));
1544 if(playerid == id) return info(playerid,(PlayerInfo[playerid][pLanguage]?("Du kannst dir nicht selbst schreiben."):("You cannot write yourself.")));{
1545 GetPlayerName(playerid, Name1, sizeof(Name1));
1546 GetPlayerName(id, Name2, sizeof(Name2));
1547 format(str, sizeof(str), "PM an %s(ID %d): %s", Name2, id, str2);
1548 SCM(playerid, COLOR_YELLOW, str);
1549 format(str, sizeof(str), "PM von %s(ID %d): %s", Name1, playerid, str2);
1550 SCM(id, COLOR_YELLOW, str);
1551 }return 1;
1552}
1553CMD:test(playerid, params[]){
1554 new vehicle, string[128+1];
1555 vehicle = GetPlayerVehicleID(playerid);
1556 format(string,sizeof(string),"%d",vehicle);
1557 SCM(playerid,0x00FF00FF,string);
1558 return 1;
1559}
1560
1561CMD:stats(playerid, params[]){
1562 if(IsPlayerConnected(playerid) && PlayerInfo[playerid] [pLanguage] == 1){
1563 new ktext[20];
1564 if(PlayerInfo[playerid][pKlasse] == 0){
1565 ktext = "Zivilist";
1566 }
1567 else if(PlayerInfo[playerid][pKlasse] == 1) {
1568 ktext = "Polizei";
1569 }else{
1570 ktext = "ERROR";
1571 }
1572 new coordsstring[256];
1573 new name[MAX_PLAYER_NAME];
1574 GetPlayerName(playerid, name, sizeof(name));
1575
1576 new money = PlayerInfo[playerid][pMoney],
1577 level = PlayerInfo[playerid][pLevel],
1578 wanteds = PlayerInfo[playerid][pWanteds],
1579 kills = PlayerInfo[playerid][pKills],
1580 deaths = PlayerInfo[playerid][pDeaths],
1581 string2[200];
1582
1583 format(string2, sizeof(string2),"» Name: %s • Level: %d • Geld: $%d • Klasse: %s\n",name,level,money,ktext);
1584 format(coordsstring, sizeof(coordsstring), "» Wanteds: %d • Kills: %d • Tode: %d\n", wanteds,kills,deaths);
1585 strcat(string2,coordsstring);
1586 ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Deine Statistik:",string2,"OK",""); }
1587 if(IsPlayerConnected(playerid) && PlayerInfo[playerid] [pLanguage] == 0){
1588 new ktext[20];
1589 if(PlayerInfo[playerid][pKlasse] == 0){
1590 ktext = "Civilian";
1591 }
1592 else if(PlayerInfo[playerid][pKlasse] == 1) {
1593 ktext = "Police";
1594 }else{
1595 ktext = "ERROR";
1596 }
1597 new coordsstring[256];
1598 new name[MAX_PLAYER_NAME];
1599 GetPlayerName(playerid, name, sizeof(name));
1600
1601 new money = PlayerInfo[playerid][pMoney],
1602 level = PlayerInfo[playerid][pLevel],
1603 wanteds = PlayerInfo[playerid][pWanteds],
1604 kills = PlayerInfo[playerid][pKills],
1605 deaths = PlayerInfo[playerid][pDeaths],
1606 string2[200];
1607
1608 format(string2, sizeof(string2),"» Name: %s • Level: %d • Money: $%d • Class: %s\n",name,level,money,ktext);
1609 format(coordsstring, sizeof(coordsstring), "» Wanteds: %d • Kills: %d • Deaths: %d\n", wanteds,kills,deaths);
1610 strcat(string2,coordsstring);
1611 ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"your statistics:",string2,"OK","");
1612 }return 1;
1613}
1614
1615CMD:kill(playerid,params[]){
1616 SetPlayerHealth(playerid, 0);
1617 return 1;
1618}
1619
1620public OnPlayerCommandText(playerid, cmdtext[]){
1621 return 1;
1622}
1623
1624public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
1625{
1626 for(new i=0; i<MAX_SERVER_VEHICLES; i++){
1627 if(serverVehicle[i][e_vID] == vehicleid){
1628 if(PlayerInfo[playerid][pKlasse] != serverVehicle[i][e_classID]){
1629 TogglePlayerControllable(playerid, false);
1630 TogglePlayerControllable(playerid, true);
1631 info(playerid,(PlayerInfo[playerid][pLanguage]?("Du bist nicht Mitglied der Klasse der das Fahrzeug gehört."):("You are not member of the class that owns the Vehicle.")));
1632 }break;
1633 }
1634 }return 1;
1635}
1636
1637public OnPlayerExitVehicle(playerid, vehicleid){
1638 lastVehicle[playerid] = vehicleid;
1639 return 1;
1640}
1641
1642public OnPlayerStateChange(playerid, newstate, oldstate){
1643 if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER){
1644 if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 482){
1645 GameTextForPlayer(playerid, (PlayerInfo[playerid][pLanguage]?("~w~PAKET LIEFERUNG VERFUEGBAR ~n~DRUECKE ~y~Z"):("~w~DELIVER MISSION AVAILABLE PRESS ~y~Y")), 5000, 3);
1646 }return 1;
1647 }return 1;
1648}
1649
1650public OnPlayerEnterCheckpoint(playerid){
1651 new playerState = GetPlayerState(playerid);
1652 if(playerState == PLAYER_STATE_ONFOOT ){
1653 if(PaketLieferant[playerid] == true && PlayerInfo[playerid][pPakete] == 4){
1654 GameTextForPlayer(playerid, (PlayerInfo[playerid][pLanguage]?("~r~ENTLADEN.."):("~r~UNLOADING..")), 4000, 3);
1655 SCM(playerid,COLOR_GREEN,(PlayerInfo[playerid][pLanguage]?("Du musst noch 3/4 Pakete ausliefern."):("You need to deliver 3/4 packages.")));
1656 Unload_Timer[playerid] = SetTimerEx("FinishJob", 5000, false, "i", playerid);
1657 TogglePlayerControllable(playerid,0);
1658 }
1659 if(PaketLieferant[playerid] == true && PlayerInfo[playerid][pPakete] == 3){
1660 GameTextForPlayer(playerid, (PlayerInfo[playerid][pLanguage]?("~r~ENTLADEN.."):("~r~UNLOADING..")), 4000, 3);
1661 SCM(playerid,COLOR_GREEN,(PlayerInfo[playerid][pLanguage]?("Du musst noch 2/4 Pakete ausliefern."):("You need to deliver 2/4 packages.")));
1662 Unload_Timer[playerid] = SetTimerEx("FinishJob", 5000, false, "i", playerid);
1663 TogglePlayerControllable(playerid,0);
1664 }
1665 if(PaketLieferant[playerid] == true && PlayerInfo[playerid][pPakete] == 2){
1666 GameTextForPlayer(playerid, (PlayerInfo[playerid][pLanguage]?("~r~ENTLADEN.."):("~r~UNLOADING..")), 4000, 3);
1667 SCM(playerid,COLOR_GREEN,(PlayerInfo[playerid][pLanguage]?("Du musst noch 1/4 Pakete ausliefern."):("You need to deliver 1/4 packages.")));
1668 Unload_Timer[playerid] = SetTimerEx("FinishJob", 5000, false, "i", playerid);
1669 TogglePlayerControllable(playerid,0);
1670 }
1671 if(PaketLieferant[playerid] == true && PlayerInfo[playerid][pPakete] == 1){
1672 GameTextForPlayer(playerid, (PlayerInfo[playerid][pLanguage]?("~r~ENTLADEN.."):("~r~UNLOADING..")), 4000, 3);
1673 SCM(playerid,COLOR_GREEN,(PlayerInfo[playerid][pLanguage]?("Du haste alle Pakete ausgeliefert."):("You have delivered all packages.")));
1674 Unload_Timer[playerid] = SetTimerEx("FinishJobFinish", 5000, false, "i", playerid);
1675 TogglePlayerControllable(playerid,0);
1676 }
1677 }return 1;
1678}
1679
1680public OnPlayerLeaveCheckpoint(playerid){
1681 return 1;
1682}
1683
1684public OnPlayerEnterRaceCheckpoint(playerid){
1685 return 1;
1686}
1687
1688public OnPlayerLeaveRaceCheckpoint(playerid){
1689 return 1;
1690}
1691
1692public OnRconCommand(cmd[]){
1693 return 1;
1694}
1695
1696public OnPlayerRequestSpawn(playerid){
1697 if(PlayerInfo[playerid][pKlasse] == 0){
1698 TextDrawShowForPlayer(playerid, Time), TextDrawShowForPlayer(playerid, Date);
1699 TextDrawShowForPlayer(playerid, WantedTextdraw[playerid]);
1700 return 1;
1701 }else if(PlayerInfo[playerid][pKlasse] == 1){
1702 if(PlayerInfo[playerid][pWanteds] >= 1){
1703 info(playerid,(PlayerInfo[playerid][pLanguage]?("Du kannst mit Wanteds nichts der Polizei beitreten."):("You cannot join the police with Wanteds.")));
1704 return 0;
1705 }
1706 TextDrawShowForPlayer(playerid, Time), TextDrawShowForPlayer(playerid, Date);
1707 TextDrawShowForPlayer(playerid, WantedTextdraw[playerid]);
1708 GameTextForPlayer(playerid,(PlayerInfo[playerid][pLanguage]?("~b~Polizei"):("~b~Police")),1000,5);
1709 }return 1;
1710}
1711
1712public OnObjectMoved(objectid){
1713 return 1;
1714}
1715
1716public OnPlayerObjectMoved(playerid, objectid){
1717 return 1;
1718}
1719
1720public OnPlayerPickUpPickup(playerid, pickupid){
1721 return 1;
1722}
1723
1724public OnVehicleMod(playerid, vehicleid, componentid){
1725 return 1;
1726}
1727
1728public OnVehiclePaintjob(playerid, vehicleid, paintjobid){
1729 return 1;
1730}
1731
1732public OnVehicleRespray(playerid, vehicleid, color1, color2){
1733 return 1;
1734}
1735
1736public OnPlayerSelectedMenuRow(playerid, row){
1737 return 1;
1738}
1739
1740public OnPlayerExitedMenu(playerid){
1741 return 1;
1742}
1743
1744public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid){
1745 return 1;
1746}
1747
1748public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
1749{
1750 if (PRESSED(KEY_FIRE)){
1751 if(IsPlayerInRangeOfPoint(playerid, 10.0, 1214.8778, -1822.6587, 15.6283) && PlayerInfo[playerid][pKlasse] == 1){
1752 timer[playerid] = SetTimerEx("gateclose",10000,false,"i",playerid);
1753 MoveDynamicObject(pd, 1214.8778, -1822.6587, 9.6283, 5.0);
1754 }
1755 if(IsPlayerInRangeOfPoint(playerid, 10.0, 1284.1200, -1837.1996, 13.3851) && PlayerInfo[playerid][pKlasse] == 1){
1756 timer[playerid] = SetTimerEx("gateclose",10000,false,"i",playerid);
1757 MoveDynamicObject(pdschranke, 1284.1200, -1837.1996, 13.3851, 5.0,0,-90.0000,0);
1758 }
1759 }
1760 if (PRESSED(KEY_SECONDARY_ATTACK)){
1761 if(IsPlayerInRangeOfPoint(playerid, 4.0, 1191.7059,-1767.5231,12.0179) && PlayerInfo[playerid][pKlasse] == 1){
1762 SetPlayerInterior(playerid,4);
1763 SetPlayerPos(playerid,286.800994,-82.547599,1001.515625);
1764 }
1765 else if(IsPlayerInRangeOfPoint(playerid, 4.0, 286.800994,-82.547599,1001.515625) && PlayerInfo[playerid][pKlasse] == 1){
1766 SetPlayerInterior(playerid,0);
1767 SetPlayerPos(playerid,1191.7059,-1767.5231,12.0179);}
1768 }
1769 if(PRESSED(KEY_YES))
1770 {
1771 if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 482){
1772 if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER){
1773 if(IsPlayerInRangeOfPoint(playerid,10,1998.9741,-2213.0427,13.6623)){
1774 new rand = random(sizeof(DeliveryCP));
1775 if(InJob[playerid] == true) return SCM(playerid, 0xFF0000FF, (PlayerInfo[playerid][pLanguage]?("Liefere erst deine jetzigen Pakete ab."):("You need to deliver your current packages at first.")));
1776 if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 482){
1777 InJob[playerid] = true;
1778 PaketLieferant[playerid] = true;
1779 PlayerInfo[playerid][pPakete] = 4;
1780 SetPlayerCheckpoint(playerid, DeliveryCP[rand][0], DeliveryCP[rand][1], DeliveryCP[rand][2], 1.5);
1781 GameTextForPlayer(playerid, (PlayerInfo[playerid][pLanguage]?("~w~LIEFER DIE PAKETE AN DEN ~n~~r~ROTEN ~w~CHECKPOINT"):("~w~DELIVER THE PACKAGES TO THE ~n~~r~RED ~w~CHECKPOINT")), 5000, 3);
1782 }
1783 }
1784 }info(playerid,(PlayerInfo[playerid][pLanguage]?("Du bist nicht bei der Paketstation."):("You are not at the Package Station.")));
1785 }
1786 }return 1;
1787}
1788
1789forward gateclose();
1790public gateclose(){
1791 MoveDynamicObject(pd, 1214.8778, -1822.6587, 15.6283, 5.0);
1792 MoveDynamicObject(pdschranke, 1284.1200, -1837.1996, 13.3851, 5.0,0,0,0);
1793 return 1;
1794}
1795
1796public OnRconLoginAttempt(ip[], password[], success){
1797 return 1;
1798}
1799
1800public OnPlayerUpdate(playerid){
1801 return 1;
1802}
1803
1804public OnPlayerStreamIn(playerid, forplayerid){
1805 return 1;
1806}
1807
1808public OnPlayerStreamOut(playerid, forplayerid){
1809 return 1;
1810}
1811
1812public OnVehicleStreamIn(vehicleid, forplayerid){
1813 return 1;
1814}
1815
1816public OnVehicleStreamOut(vehicleid, forplayerid){
1817 return 1;
1818}
1819
1820forward getPlayerDBId(playerid, DBID);
1821public getPlayerDBId(playerid, DBID){
1822 new rows, fields, result[125*2], get[500*4];
1823 cache_get_data(rows, fields);
1824
1825 if(!rows){
1826 error(playerid, "Diese Datenbank ID ist nicht vergeben!");
1827 return ShowPlayerDialog(playerid, DIALOG_PlayerEditOffline, DIALOG_STYLE_INPUT, ""#Dialog"Player Editor (Offline)", "{fafafa}Bitte geben Sie die eindeutige Datenbank-ID ein!", "Weiter", "Abbrechen");
1828 }else{
1829 cache_get_field_content(0, "name", result);
1830 strcat(get, result);
1831
1832 strcat(get, "\n"dblau_h"Level:"weiss_h" ");
1833 cache_get_field_content(0, "level", result);
1834 strcat(get, result);
1835
1836 strcat(get, "\n"dblau_h"Money:"weiss_h" ");
1837 cache_get_field_content(0, "money", result);
1838 strcat(get, result);
1839
1840 strcat(get, "\n"dblau_h"Kills:"weiss_h" ");
1841 cache_get_field_content(0, "kills", result);
1842 strcat(get, result);
1843
1844 strcat(get, "\n"dblau_h"Deaths:"weiss_h" ");
1845 cache_get_field_content(0, "deaths", result);
1846 strcat(get, result);
1847
1848 strcat(get, "\n"dblau_h"Wanteds:"weiss_h" ");
1849 cache_get_field_content(0, "wanteds", result);
1850 strcat(get, result);
1851
1852 strcat(get, "\n"dblau_h"Adminlevel:"weiss_h" ");
1853 cache_get_field_content(0, "adminlevel", result);
1854 strcat(get, result);
1855
1856 ShowPlayerDialog(playerid, DIALOG_EDITPLAYEROFFLINE_HAUPT, DIALOG_STYLE_LIST, ""#Dialog"Offline Player Editor - Home", get, "Bearbeiten", "Abbrechen");
1857 //SetPVarInt(playerid, "getOfflinePlayerDatabaseId", DBID);
1858 }return 1;
1859}
1860
1861public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
1862{
1863 switch(dialogid){
1864 case DIALOG_PlayerEditOffline:{
1865 if(response == 1){
1866 if(!isNumeric(inputtext)||strval(inputtext)<1){
1867 error(playerid, "Sie dürfen nur eine ID eingeben!");
1868 return ShowPlayerDialog(playerid, DIALOG_PlayerEditOffline, DIALOG_STYLE_INPUT, ""#Dialog"Player Editor (Offline)", "{fafafa}Bitte geben Sie die eindeutige Datenbank-ID ein!", "Weiter", "Abbrechen");
1869 }
1870 new querySent[251+1];
1871 format(querySent, sizeof(querySent), "SELECT * FROM users WHERE id = '%i'", strval(inputtext));
1872 mysql_tquery(handle, querySent, "getPlayerDBId", "ii", playerid, strval(inputtext));
1873 }return 1;
1874 }
1875 case DIALOG_REGISTER:{
1876 if(!response) return Kick(playerid);
1877 if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");
1878 new query[256];
1879 mysql_format(handle, query, sizeof(query), "INSERT INTO users (name, password) VALUES ('%s', MD5('%s'))", PlayerInfo[playerid][pName], inputtext);
1880 mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
1881 return 1;
1882 }
1883 case DIALOG_LOGIN:{
1884 if(!response) return Kick(playerid);
1885 if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");
1886 new query[256];
1887 mysql_format(handle, query, sizeof(query), "SELECT * FROM users WHERE name = '%s' AND password = MD5('%s')", PlayerInfo[playerid][pName], inputtext);
1888 mysql_pquery(handle, query, "OnUserLogin", "d", playerid);
1889 return 1;
1890 }
1891 case DIALOG_LANGUAGE:{
1892 if(response == 0){
1893 SCM(playerid,COLOR_GREEN,"INFO: Dein Spiel ist nun in Deutsch!");
1894 PlayerInfo[playerid][pLanguage] = 1;
1895 }
1896 if(response == 1){
1897 SCM(playerid,COLOR_GREEN,"INFO: Your Language has been set to English!");
1898 PlayerInfo[playerid][pLanguage] = 0;
1899 }return 1;
1900 }
1901 case DIALOG_CGANG:
1902 {
1903 if(response)
1904 {
1905 if(strlen(inputtext) < 2 || strlen(inputtext) > MAX_GANG_NAME)
1906 {
1907 if(PlayerInfo[playerid][pLanguage])
1908 ShowPlayerDialog(playerid, DIALOG_CGANG, DIALOG_STYLE_INPUT, "Gang Erstellen", "Bitte gebe 3-20 Zeichen ein\nGebe deinen Gang namen ein", "Weiter", "Abbrechen");
1909 else
1910 ShowPlayerDialog(playerid, DIALOG_CGANG, DIALOG_STYLE_INPUT, "Create Gang", "Please input between 3 - 20 characters!\nType your gang name", "Next", "Cancel");
1911 }
1912 else if(gNameUsed(inputtext))
1913 {
1914 if(PlayerInfo[playerid][pLanguage])
1915 ShowPlayerDialog(playerid, DIALOG_CGANG, DIALOG_STYLE_INPUT, "Gang Erstellen", "Dieser Name wird bereits benutzt!\nGebe deinen Gang namen ein.", "Weiter", "Abbrechen");
1916 else
1917 ShowPlayerDialog(playerid, DIALOG_CGANG, DIALOG_STYLE_INPUT, "Create Gang", "Name already used by other gang!\nType your gang name", "Create", "Cancel");
1918 }
1919 else
1920 {
1921 format(PlayerInfo[playerid][tempGang], MAX_GANG_NAME, "%s", inputtext);
1922 if(PlayerInfo[playerid][pLanguage])
1923 ShowPlayerDialog(playerid, DIALOG_CGANG2, DIALOG_STYLE_INPUT, "Gang Erstellen", "Gebe deinen Gang Tag an.", "Erstellen", "Abbrechen");
1924 else
1925 ShowPlayerDialog(playerid, DIALOG_CGANG2, DIALOG_STYLE_INPUT, "Create Gang", "Type your gang tag", "Create", "Cancel");
1926 }
1927 }
1928 }
1929 case DIALOG_CGANG2:
1930 {
1931 if(response)
1932 {
1933 if(strlen(inputtext) < 1 || strlen(inputtext) > 3)
1934 {
1935 if(PlayerInfo[playerid][pLanguage])
1936 ShowPlayerDialog(playerid, DIALOG_CGANG2, DIALOG_STYLE_INPUT, "Gang Erstellen", "Bitte gebe 1-3 Zeichen ein!\nGebe dein Gang Tag ein", "Erstellen", "Abbrechen");
1937 else
1938 ShowPlayerDialog(playerid, DIALOG_CGANG2, DIALOG_STYLE_INPUT, "Create Gang", "Please input between 1 - 3 characters!\nType your gang tag", "Create", "Cancel");
1939 }
1940 else if(tagUsed(inputtext))
1941 {
1942 if(PlayerInfo[playerid][pLanguage])
1943 ShowPlayerDialog(playerid, DIALOG_CGANG2, DIALOG_STYLE_INPUT, "Create Gang", "Dieser Tag wird bereits genutzt!\nGebe dein Gang Tag ein", "Erstellen", "Abbrechen");
1944 else
1945 ShowPlayerDialog(playerid, DIALOG_CGANG2, DIALOG_STYLE_INPUT, "Create Gang", "Tag already used by other gang!\nType your gang tag", "Create", "Cancel");
1946 }
1947 else
1948 {
1949 PlayerInfo[playerid][pMoney] -= 100000;
1950 GivePlayerMoney(playerid,-100000);
1951 __createGang(playerid, PlayerInfo[playerid][tempGang], inputtext);
1952 success(playerid,(PlayerInfo[playerid][pLanguage]?("Gang Erfolgreich erstellt"):("Succesfully created gang.")));
1953 }
1954 }
1955 }
1956 }return 1;
1957}
1958
1959public OnPlayerClickPlayer(playerid, clickedplayerid, source){
1960 return 1;
1961}
1962
1963public OnPlayerShootPlayer(Shooter,Target,Float:HealthLost,Float:ArmourLost){
1964 if (Shooter != INVALID_PLAYER_ID){
1965 if (PlayerInfo[Shooter][pKlasse] == 1 && PlayerInfo[Target][pKlasse] == 1){
1966 new Float:hp,Float:armour;
1967 SetPlayerHealth(Target, floatadd(hp, HealthLost));
1968 SetPlayerArmour(Target, floatadd(armour, ArmourLost));
1969 SCM( Shooter, COLOR_RED, (PlayerInfo[Shooter][pLanguage]?("Teamkilling ist nicht erlaubt."):("Teamkilling is not allowed.")));
1970 }
1971 if (PlayerInfo[Shooter][pKlasse] == 1 && PlayerInfo[Target][pKlasse] == 0 && PlayerInfo[Target][pWanteds] == 0){
1972 new Float:hp,Float:armour;
1973 SetPlayerHealth(Target, floatadd(hp, HealthLost));
1974 SetPlayerArmour(Target, floatadd(armour, ArmourLost));
1975 SCM( Shooter, COLOR_RED, (PlayerInfo[Shooter][pLanguage]?("Du darfst keine unschuldigen Passanten töten."):("Don't attack innocent civilian.")));
1976 }
1977 } return 1;
1978}
1979
1980stock MySQL_SetupConnection(){
1981 print("..[Script wird gestartet]..");
1982 handle = mysql_connect(MySQL_Host,MySQL_User,MySQL_Datenbank,MySQL_Passwort,3306,true);
1983 if(mysql_errno(handle) == 0){
1984 print("\n-----------------------------------");
1985 print("["ClanTag"]: Der Server hat erfolgreich der Verbindung zum MySQL Server hergstellt.");
1986 print("["ClanTag"]: Das Script wurde gesteartet und ist nun Online.");
1987 print("-----------------------------------\n");
1988 }else{
1989 print("\n-----------------------------------");
1990 print("["ClanTag"]: MySQL Error! Server versucht es nochmal sich zu Verbinden!");
1991 print("-----------------------------------\n");
1992 handle = mysql_connect(MySQL_Host,MySQL_User,MySQL_Datenbank,MySQL_Passwort);
1993 if(mysql_errno(handle) == 0){
1994 print("\n-----------------------------------");
1995 print("["ClanTag"]: Der Server hat erfolgreich der Verbindung zum MySQL Server hergstellt.");
1996 print("["ClanTag"]: Das Script wurde gesteartet und ist nun Online.");
1997 print("-----------------------------------\n");
1998 }else{
1999 print("\n-----------------------------------");
2000 print("["ClanTag"]: MySQL ERROR! Der Server wird jetzt heruntergefahren!");
2001 print("["ClanTag"]: Da die MySQL Verbindung nicht Erfolgreich hergestellt werden konnte.");
2002 print("-----------------------------------\n");
2003 SendRconCommand("exit");
2004 return 1;
2005 }
2006 }return 1;
2007}
2008
2009stock SaveUserStats(playerid){
2010 if(!PlayerInfo[playerid][pLoggedIn]) return 1;
2011 new query[256]; new query1[256];
2012 mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', kills = '%d', deaths = '%d', wanteds = '%d', klasse = '%d', pakete = '%d', handschellen = '%d', adminlevel='%d' WHERE id = '%d'",
2013 PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][pWanteds], PlayerInfo[playerid][pKlasse], PlayerInfo[playerid][pPakete],PlayerInfo[playerid][pHandschellen], PlayerInfo[playerid][uAdminLevel], PlayerInfo[playerid][p_id]);
2014 mysql_format(handle, query1, sizeof(query), "UPDATE users SET language = '%d', playergang = '%d' WHERE id = '%d'",
2015 PlayerInfo[playerid][pLanguage],PlayerInfo[playerid][playerGang], PlayerInfo[playerid][p_id]);
2016 mysql_pquery(handle, query1);
2017 mysql_pquery(handle, query);
2018 return 1;
2019}
2020
2021forward OnUserCheck(playerid);
2022public OnUserCheck(playerid){
2023 new rows = cache_get_row_count();
2024 if(rows == 0){
2025 ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte gebe dein Gewünschtes Passwort ein:", "Ok", "Abbrechen");
2026 }else{
2027 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:", "Ok", "Abbrechen");
2028 }return 1;
2029}
2030
2031forward OnUserRegister(playerid);
2032public OnUserRegister(playerid){
2033 PlayerInfo[playerid][p_id] = cache_insert_id();
2034 new plrIP[16];
2035 PlayerInfo[playerid][pLastIP] = GetPlayerIp(playerid, plrIP, sizeof(plrIP));
2036 PlayerInfo[playerid][pLoggedIn] = true;
2037 SCM(playerid, COLOR_YELLOW, "[Account] Deine Daten wurde erfolgreich in der Datenbank gespeichert.");
2038 return 1;
2039}
2040
2041forward OnUserLogin(playerid);
2042public OnUserLogin(playerid){
2043 new rows = cache_get_row_count();
2044 if(rows == 0){
2045 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Falsches Passwort!", "Ok", "Abbrechen");
2046 }else{
2047 PlayerInfo[playerid][p_id] = cache_get_field_content_int(0, "id");
2048 PlayerInfo[playerid][pLevel] = cache_get_field_content_int(0, "level");
2049 PlayerInfo[playerid][pMoney] = cache_get_field_content_int(0, "money");
2050 PlayerInfo[playerid][pKills] = cache_get_field_content_int(0, "kills");
2051 PlayerInfo[playerid][pDeaths] = cache_get_field_content_int(0, "deaths");
2052 PlayerInfo[playerid][pWanteds] = cache_get_field_content_int(0, "wanteds");
2053 PlayerInfo[playerid][uAdminLevel] = cache_get_field_content_int(0, "adminlevel");
2054 PlayerInfo[playerid][pLanguage] = cache_get_field_content_int(0, "language");
2055 PlayerInfo[playerid][pLastIP] = cache_get_field_name(0, "lastip");
2056 PlayerInfo[playerid][playerGang] = cache_get_field_content_int(0, "playergang");
2057 PlayerInfo[playerid][pKlasse] = 0;
2058 PlayerInfo[playerid][pLoggedIn] = true;
2059 success(playerid, "Du wurdest eingeloggt!");
2060 new plrIP[16];
2061 PlayerInfo[playerid][pLastIP] = GetPlayerIp(playerid, plrIP, sizeof(plrIP));
2062 GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
2063 SetPlayerScore(playerid,PlayerInfo[playerid][pLevel]);
2064 }return 1;
2065}
2066
2067forward settime(playerid);
2068public settime(playerid){
2069 new string[256],year,month,day,hours,minutes,seconds;
2070 getdate(year, month, day), gettime(hours, minutes, seconds);
2071 format(string, sizeof string, "%d/%s%d/%s%d", day, ((month < 10) ? ("0") : ("")), month, (year < 10) ? ("0") : (""), year);
2072 TextDrawSetString(Date, string);
2073 format(string, sizeof string, "%s%d:%s%d:%s%d", (hours < 10) ? ("0") : (""), hours, (minutes < 10) ? ("0") : (""), minutes, (seconds < 10) ? ("0") : (""), seconds);
2074 TextDrawSetString(Time, string);
2075}
2076
2077stock GetWantedLevel(playerid){
2078 return PlayerInfo[playerid][pWanteds];
2079}
2080
2081stock SetWantedLevel(playerid,wantedlevel){
2082 PlayerInfo[playerid][pWanteds] += wantedlevel;
2083 UpdateWantedDraw(playerid);
2084 return 1;
2085}
2086
2087stock UpdateWantedDraw(playerid){
2088 if(GetWantedLevel(playerid)==0){
2089 TextDrawHideForPlayer(playerid,WantedTextdraw[playerid]);
2090 }
2091 if(GetWantedLevel(playerid)>=1){
2092 TextDrawHideForPlayer(playerid, WantedTextdraw[playerid]);
2093 new str[30];
2094 format(str,sizeof(str),"~y~]: ~w~%d",GetWantedLevel(playerid));
2095 TextDrawSetString(WantedTextdraw[playerid], str);
2096 TextDrawShowForPlayer(playerid, WantedTextdraw[playerid]);
2097 }return 1;
2098}
2099
2100stock strtok(const string[], &index){
2101 new result[20], length = strlen(string), i = index;
2102 while ((i < length) && (string[i] == ' ')) i++;
2103 strmid(result,string,i,((index = strfind(string, " ", false, i)) == -1) ? (index = length) : (index) , 20);
2104 index++;
2105 return result;
2106}
2107
2108stock IsNumeric(string[]){
2109 for (new i = 0, j = strlen(string); i < j; i++){
2110 if ((string[i] > '9' || string[i] < '0')) return 0;
2111 }return 1;
2112}
2113
2114stock success(playerid, input[]){
2115 new success2[251], text[650*2];
2116 strcat(text, (PlayerInfo[playerid][pLanguage]?("{00FF00}[ERFOLGREICH]:{fafafa} "):("{00FF00}[SUCCESS]:{fafafa} ")));
2117 format(success2, sizeof(success2), "%s", input);
2118 strcat(text, success2);
2119 return SCM(playerid, 0xFAFAFAFF, text);
2120}
2121
2122stock error(playerid, input[]){
2123 new error2[251], text[650*2];
2124 strcat(text, (PlayerInfo[playerid][pLanguage]?("{00FF00}[FEHLER]:{fafafa} "):("{00FF00}[ERROR]:{fafafa} ")));
2125 format(error2, sizeof(error2), "%s", input);
2126 strcat(text, error2);
2127 return SCM(playerid, 0xFAFAFAFF, error2);
2128}
2129
2130stock info(playerid, input[]){
2131 new info2[251];
2132 format(info2, sizeof(info2), "{FFAA00}[INFO]:{fafafa} %s", input);
2133 return SCM(playerid, 0xFAFAFAFF, info2);
2134}
2135
2136stock UpdateMoney(playerid){
2137 ResetPlayerMoney(playerid);
2138 GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
2139}
2140
2141forward CopWaffenTimer(playerid);
2142public CopWaffenTimer(playerid){
2143 PlayerInfo[playerid][pCopWaffenTimer] = 0;
2144 return 1;
2145}
2146
2147stock ProxDetector(Float:radi, playerid, string[],color){
2148 new Float:x,Float:y,Float:z;
2149 GetPlayerPos(playerid,x,y,z);
2150 foreach(Player,i){
2151 if(IsPlayerInRangeOfPoint(i,radi,x,y,z)){
2152 SCM(i,color,string);
2153 }
2154 }return 1;
2155}
2156
2157forward FinishJob(playerid);
2158public FinishJob(playerid){
2159 new str[128], cash = RandomEx(100, 2000), rand = random(sizeof(DeliveryCP));
2160 format(str, sizeof str, "~w~PAKET ABGELIEFERT DU BEKOMMST ~g~$%i ~w~UND ~g~1 ~w~SCORE", cash);
2161 GameTextForPlayer(playerid, str, 6000, 3);
2162 GivePlayerMoney(playerid, cash);
2163 PlayerInfo[playerid][pMoney] += cash;
2164 TogglePlayerControllable(playerid,1);
2165 DisablePlayerCheckpoint(playerid);
2166 PlayerInfo[playerid][pLevel] += 1;
2167 PlayerInfo[playerid][pPakete] -= 1;
2168 SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
2169 SetPlayerCheckpoint(playerid, DeliveryCP[rand][0], DeliveryCP[rand][1], DeliveryCP[rand][2], 1.5);
2170}
2171
2172forward FinishJobFinish(playerid);
2173public FinishJobFinish(playerid){
2174 new str[128], cash = RandomEx(100, 2000),bonuscash = RandomEx(100, 500);
2175 format(str, sizeof str, "~w~PAKET ABGELIEFERT DU BEKOMMST ~g~$%i ~w~UND ~g~1 ~w~SCORE\nBONUS: $%i", cash,bonuscash);
2176 GameTextForPlayer(playerid, str, 6000, 3);
2177 GivePlayerMoney(playerid, cash+bonuscash);
2178 PlayerInfo[playerid][pMoney] += cash+bonuscash;
2179 TogglePlayerControllable(playerid,1);
2180 DisablePlayerCheckpoint(playerid);
2181 PlayerInfo[playerid][pLevel] += 1;
2182 SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
2183 InJob[playerid] = false;
2184 PaketLieferant[playerid] = false;
2185}
2186
2187RandomEx(min, max){
2188 return random(max - min) + min;
2189}
2190
2191stock GetFreeSeat(vehicleid){
2192 foreach(new i: Player){
2193 if(IsPlayerInAnyVehicle(i) && GetPlayerVehicleID(i) == vehicleid) {
2194 for(new j = 0; j < 9; j++) {
2195 if(GetPlayerVehicleSeat(i) == j) continue;
2196 else return j;
2197 }return -1;
2198 }
2199 }return 1;
2200}
2201
2202forward getServerName();
2203public getServerName(){
2204 new getNames = random(3);
2205 switch(getNames){
2206 case 0:SendRconCommand("hostname Cop's and Robbers");
2207 case 1:SendRconCommand("hostname Cop's and Robbers Englisch and German");
2208 case 2:SendRconCommand("hostname Cop's and Robbers New Version!");
2209 }
2210 SetGameModeText("Version: 1.2.6");
2211 SendRconCommand("language German and Englisch");
2212 return 1;
2213}
2214
2215stock isUserAdmin(playerid, rang){
2216 if(PlayerInfo[playerid][uAdminLevel] >= rang)return 1;
2217 return 0;
2218}
2219
2220stock getUserAdminRang(playerid){
2221 new Admin_Rang[120];
2222 switch(PlayerInfo[playerid][uAdminLevel]){
2223 case -1:{Admin_Rang="No Admin";}
2224 case 0:{Admin_Rang="Supporter";}
2225 case 1:{Admin_Rang="Super Supporter";}
2226 case 2:{Admin_Rang="Administrator";}
2227 case 3:{Admin_Rang="Owner";}
2228 default:{Admin_Rang="System_Error_Admin_Rang";}
2229 }return Admin_Rang;
2230}
2231
2232/*stock saveLog(#){
2233 new string[251+1];
2234 format(string, sizeof(string), "INSERT INTO logs (from, input, to) VALUES ('%s', '%s', '%s')", );
2235 mysql_pquery(handle, string);
2236 return 1;
2237}*/
2238
2239stock isNumeric(str[]){
2240 new ch, i;
2241 while ((ch = str[i++])) if (ch < '0' || ch > '9') return 0;
2242 return 1;
2243}
2244
2245
2246stock getPlayerName(playerid){
2247 new name[MAX_PLAYER_NAME];
2248 GetPlayerName(playerid,name,sizeof(name));
2249 return name;
2250}
2251
2252CreateFVTable(){
2253 new query[512];
2254 format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `serverVehicles` (");
2255 format(query, sizeof(query), "%s`ID` int(11) NOT NULL PRIMARY KEY,", query);
2256 format(query, sizeof(query), "%s `ModelID` int(11) NOT NULL DEFAULT '0',", query);
2257 format(query, sizeof(query), "%s `PosX` float NOT NULL DEFAULT '0',", query);
2258 format(query, sizeof(query), "%s `PosY` float NOT NULL DEFAULT '0',", query);
2259 format(query, sizeof(query), "%s `PosZ` float NOT NULL DEFAULT '0',", query);
2260 format(query, sizeof(query), "%s `PosA` float NOT NULL DEFAULT '0',", query);
2261 format(query, sizeof(query), "%s `Color1` int(11) NOT NULL DEFAULT '0',", query);
2262 format(query, sizeof(query), "%s `Color2` int(11) NOT NULL DEFAULT '0',", query);
2263 format(query, sizeof(query), "%s `classID` int(11) NOT NULL DEFAULT '-1',", query);
2264 format(query, sizeof(query), "%s `sirene` int(11) NOT NULL DEFAULT '0'", query);
2265 format(query, sizeof(query), "%s) ENGINE=InnoDB DEFAULT CHARSET=latin1;", query);
2266 mysql_tquery(handle, query);
2267 return 1;
2268}
2269
2270LoadserverVehicles(){
2271 CreateFVTable();
2272 mysql_tquery(handle, "SELECT * FROM serverVehicles ORDER BY ID ASC", "LoadserverVehicles_Data");
2273 return 1;
2274}
2275
2276forward LoadserverVehicles_Data();
2277public LoadserverVehicles_Data(){
2278 new rows, id, createdVehs;
2279 rows = cache_num_rows();
2280 for(new i=0; i<rows; i++){
2281 id = cache_get_field_content_int(i, "ID");
2282 if(id < 0 || id >= MAX_SERVER_VEHICLES) continue;
2283 serverVehicle[id][e_modelID] = cache_get_field_content_int(i, "ModelID");
2284 serverVehicle[id][e_x] = cache_get_field_content_float(i, "PosX");
2285 serverVehicle[id][e_y] = cache_get_field_content_float(i, "PosY");
2286 serverVehicle[id][e_z] = cache_get_field_content_float(i, "PosZ");
2287 serverVehicle[id][e_a] = cache_get_field_content_float(i, "PosA");
2288 serverVehicle[id][e_color1] = cache_get_field_content_int(i, "Color1");
2289 serverVehicle[id][e_color2] = cache_get_field_content_int(i, "Color2");
2290 serverVehicle[id][e_classID] = cache_get_field_content_int(i, "classID");
2291 serverVehicle[id][e_sirene] = cache_get_field_content_int(i, "sirene");
2292 if(serverVehicle[id][e_modelID] >= 400 && serverVehicle[id][e_modelID] <= 611)
2293 {
2294 serverVehicle[id][e_vID] = AddStaticVehicleEx(serverVehicle[id][e_modelID], serverVehicle[id][e_x], serverVehicle[id][e_y], serverVehicle[id][e_z]+0.5, serverVehicle[id][e_a], serverVehicle[id][e_color1], serverVehicle[id][e_color2], -1, serverVehicle[id][e_sirene]);
2295 }
2296 else
2297 {
2298 printf("[Error] Model-ID %d existiert nicht (ID: %d).", serverVehicle[id][e_modelID], id);
2299 }
2300 if(GetVehicleModel(MAX_VEHICLES-1) != 0) return print("Es können keine weiteren Fahrzeuge geladen werden, Limit (MAX_VEHICLES) erreicht.");
2301 createdVehs++;
2302 if(createdVehs == MAX_SERVER_VEHICLES) return print("Es können keine weiteren Fahrzeuge geladen werden, Limit (MAX_SERVER_VEHICLES) erreicht.");
2303 }return 1;
2304}
2305
2306stock SaveFracVehCheck(vehicleid){
2307 new query[256];
2308 for(new i=0; i<MAX_SERVER_VEHICLES; i++){
2309 if(serverVehicle[i][e_vID] == vehicleid){
2310 GetVehiclePos(serverVehicle[i][e_vID], serverVehicle[i][e_x], serverVehicle[i][e_y], serverVehicle[i][e_z]);
2311 GetVehicleZAngle(serverVehicle[i][e_vID], serverVehicle[i][e_a]);
2312 format(query, sizeof(query), "UPDATE serverVehicles SET ModelID = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', PosA = '%f', Color1 = '%d', Color2 = '%d', classID = '%d', sirene = '%d' WHERE ID = '%d'",
2313 serverVehicle[i][e_modelID], serverVehicle[i][e_x], serverVehicle[i][e_y], serverVehicle[i][e_z], serverVehicle[i][e_a], serverVehicle[i][e_color1], serverVehicle[i][e_color2], serverVehicle[i][e_classID],serverVehicle[i][e_sirene], i);
2314 mysql_tquery(handle, query);
2315 return 1;
2316 }
2317 }return 0;
2318}
2319
2320forward SaveAllFracVehs();
2321public SaveAllFracVehs()
2322{
2323 new query[256];
2324 for(new i=0; i<MAX_SERVER_VEHICLES; i++){
2325 if(serverVehicle[i][e_modelID] >= 400 && serverVehicle[i][e_modelID] <= 611){
2326 GetVehiclePos(serverVehicle[i][e_vID], serverVehicle[i][e_x], serverVehicle[i][e_y], serverVehicle[i][e_z]);
2327 GetVehicleZAngle(serverVehicle[i][e_vID], serverVehicle[i][e_a]);
2328 format(query, sizeof(query), "UPDATE serverVehicles SET ModelID = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', PosA = '%f', Color1 = '%d', Color2 = '%d', classID = '%d', sirene = '%d' WHERE ID = '%d'",
2329 serverVehicle[i][e_modelID], serverVehicle[i][e_x], serverVehicle[i][e_y], serverVehicle[i][e_z], serverVehicle[i][e_a], serverVehicle[i][e_color1], serverVehicle[i][e_color2], serverVehicle[i][e_classID],serverVehicle[i][e_sirene], i);
2330 mysql_tquery(handle, query);
2331 }
2332 }return 1;
2333}
2334
2335stock __createGang(leaderid, gangname[], gangtag[]){
2336 new query[512];
2337 mysql_format(handle, query, sizeof(query), "INSERT INTO `gang` (`name`, `leader`, `tag`) VALUES ('%s', '%d', '%s')", safeString(gangname), PlayerInfo[leaderid][p_id], safeString(gangtag));
2338 mysql_tquery(handle, query, "OnGangCreated", "dss", leaderid, gangname, gangtag);
2339 return 1;
2340}
2341
2342forward OnGangCreated(playerid, name[], tag[]);
2343public OnGangCreated(playerid, name[], tag[]){
2344 new id = cache_insert_id();
2345 PlayerInfo[playerid][playerGang] = id;
2346 for(new i = 0; i < MAX_GANGS; i++){
2347 if(Gang[i][gangStatus]) continue;
2348
2349 Gang[i][gangID] = id;
2350 Gang[i][gangStatus] = true;
2351 Gang[i][gangAttack] = false;
2352 format(Gang[i][gangColor], 7, "FFFFFF");
2353 format(Gang[i][gangTag], 4, "%s", tag);
2354 format(Gang[i][gangName], MAX_GANG_NAME, "%s", name);
2355 Gang[i][gangScore] = 0;
2356 Gang[i][gangKills] = 0;
2357 Gang[i][gangDeaths] = 0;
2358 Gang[i][gangLeader] = PlayerInfo[playerid][p_id];
2359 break;
2360 }return 1;
2361}
2362
2363stock loadGang(){
2364 new query[50];
2365 mysql_format(handle, query, sizeof(query), "SELECT * FROM `gang`");
2366 mysql_query(handle, query, true);
2367 new rows = cache_num_rows(handle), tempString[25];
2368 if(rows > 0){
2369 for(new z = 0; z < rows; z++){
2370 for(new i = 0; i < MAX_GANGS; i++){
2371 if(!Gang[i][gangStatus]){
2372 Gang[i][gangID] = cache_get_field_content_int(z, "id");
2373 Gang[i][gangKills] = cache_get_field_content_int(z, "kill");
2374 Gang[i][gangDeaths] = cache_get_field_content_int(z, "death");
2375 Gang[i][gangStatus] = true;
2376 Gang[i][gangAttack] = false;
2377 cache_get_field_content(z, "color", tempString, handle, 7);
2378 format(Gang[i][gangColor], 7, tempString);
2379 cache_get_field_content(z, "tag", tempString, handle, 4);
2380 format(Gang[i][gangTag], 4, "%s", tempString);
2381 cache_get_field_content(z, "name", tempString, handle, MAX_GANG_NAME);
2382 format(Gang[i][gangName], MAX_GANG_NAME, "%s", tempString);
2383 Gang[i][gangScore] = cache_get_field_content_int(z, "score");
2384 Gang[i][gangLeader] = cache_get_field_content_int(z, "leader");
2385 break;
2386 }
2387 }
2388 }
2389 }return 1;
2390}
2391
2392stock findGang(playerid, bool:isplayerid = true){
2393 if(inGang(playerid) || isplayerid == false){
2394 for(new i = 0; i < MAX_GANGS; i++){
2395 if(isplayerid){
2396 if(Gang[i][gangID] == PlayerInfo[playerid][playerGang]){
2397 return i;
2398 }
2399 }else{
2400 if(playerid == Gang[i][gangID]){
2401 return i;
2402 }
2403 }
2404 }
2405 }return -1;
2406}
2407
2408stock inGang(playerid){
2409 if(PlayerInfo[playerid][playerGang] == -1)
2410 return false;
2411
2412 return true;
2413}
2414
2415stock tagUsed(tag[]){
2416 for(new i = 0; i < MAX_GANGS; i++){
2417 if(!Gang[i][gangStatus]) continue;
2418
2419 if(!strcmp(tag, Gang[i][gangTag], true))
2420 return true;
2421 }return false;
2422}
2423
2424stock gNameUsed(name[])
2425{
2426 for(new i = 0; i < MAX_GANGS; i++){
2427 if(!Gang[i][gangStatus]) continue;
2428
2429 if(!strcmp(name, Gang[i][gangName], true))
2430 return true;
2431 }return false;
2432}
2433
2434safeString(exploit[]){
2435 new safe[128];
2436 mysql_real_escape_string(exploit, safe, handle, 128);
2437 return safe;
2438}
2439
2440stock saveGang(i){
2441 new query[1000];
2442 format(query, sizeof(query), "UPDATE `gang` set");
2443 format(query, sizeof(query), "%s `leader` = '%d',", query, Gang[i][gangLeader]);
2444 format(query, sizeof(query), "%s `score` = '%d',", query, Gang[i][gangScore]);
2445 format(query, sizeof(query), "%s `kill` = '%d',", query, Gang[i][gangKills]);
2446 format(query, sizeof(query), "%s `death` = '%d',", query, Gang[i][gangDeaths]);
2447 format(query, sizeof(query), "%s `color` = '%s'", query, safeString(Gang[i][gangColor]));
2448 format(query, sizeof(query), "%s where `id` = '%d'", query, Gang[i][gangID]);
2449 printf("%s", query);
2450 mysql_format(handle, query, sizeof(query), "%s", query);
2451 mysql_query(handle, query, false);
2452 return 1;
2453}
2454
2455stock loadGangZone(){
2456 new msg[512*2];
2457 SetTimer("updateZone", 1000, true);
2458 for(new i = 0; i < MAX_GANG_ZONES; i++){
2459 if(!GZone[i][gzoneStatus]){
2460 GZone[i][gzoneStatus] = false;
2461 GZone[i][gZone] = GangZoneCreate(GZone[i][gzonePos][0], GZone[i][gzonePos][1], GZone[i][gzonePos][2], GZone[i][gzonePos][3]);
2462 GZone[i][gzoneCP] = CreateDynamicCP(GZone[i][gzoneCPPos][0], GZone[i][gzoneCPPos][1], GZone[i][gzoneCPPos][2], 1.0);
2463 CreateDynamicMapIcon(GZone[i][gzoneCPPos][0], GZone[i][gzoneCPPos][1], GZone[i][gzoneCPPos][2], 19, 0);
2464 format(msg, sizeof(msg), "[GANG ZONE]\n"dblau_h"Controlled By : {fafafa}-"dblau_h"\nLocation : {fafafa}%s\nType /gwar to attack this zone!", GetXY2DZone(GZone[i][gzoneCPPos][0], GZone[i][gzoneCPPos][1]));
2465 GZone[i][gzoneTitle] = CreateDynamic3DTextLabel(msg, COLOR_WHITE, GZone[i][gzoneCPPos][0], GZone[i][gzoneCPPos][1], GZone[i][gzoneCPPos][2] + 1.0 , 10.0);
2466 GZone[i][gzoneStatus] = true;
2467 GZone[i][gzoneLocked] = false;
2468 GZone[i][gzoneAttack] = false;
2469 GZone[i][gzoneTime] = 0;
2470 GZone[i][gzoneOwner] = -1;
2471 }
2472
2473 }return 1;
2474}
2475
2476forward updateZone();
2477public updateZone(){
2478 for(new i = 0; i < MAX_GANG_ZONES; i++){
2479 if(GZone[i][gzoneTime] > 0){
2480 GZone[i][gzoneTime]--;
2481 GZone[i][gzoneLocked] = true;
2482 }
2483 if(GZone[i][gzoneTime] == 0){
2484 GZone[i][gzoneLocked] = false;
2485 }
2486 }return 1;
2487}
2488
2489stock GetXY2DZone(Float:x, Float:y){
2490 new zone[MAX_ZONE_NAME];
2491 for(new i = 0; i != sizeof(gSAZones); i++){
2492 if(x >= gSAZones[i][SAZONE_AREA][0] && x <= gSAZones[i][SAZONE_AREA][3] && y >= gSAZones[i][SAZONE_AREA][1] && y <= gSAZones[i][SAZONE_AREA][4]){
2493 format(zone, MAX_ZONE_NAME, "%s", gSAZones[i][SAZONE_NAME]);
2494 return zone;
2495 }
2496 }
2497 format(zone, MAX_ZONE_NAME, "Undefined Zone");
2498 return zone;
2499}
2500
2501stock isInZone(playerid, i){
2502 new Float:X1,Float:Y1,Float:Z1;
2503 GetPlayerPos(playerid, X1, Y1, Z1);
2504 if((X1 <= GZone[i][gzonePos][2] && X1 >= GZone[i][gzonePos][0]) && (Y1 <= GZone[i][gzonePos][3] && Y1 >= GZone[i][gzonePos][1])) return 1;
2505 return 0;
2506}
2507
2508stock beginCapture(playerid, i){
2509 KillTimer(PlayerInfo[playerid][attackTimer]);
2510 if(PlayerInfo[playerid][onAttack])
2511 {
2512 if(PlayerInfo[playerid][pLanguage])
2513 info(playerid, "Du hast bereits ein Gangwar gestartet.");
2514 else
2515 info(playerid, "You arleady started gwar, please wait.");
2516 return 1;
2517 }
2518 new gID = findGang(playerid), msg[1500];
2519 Gang[gID][gangAttack] = true;
2520 new oID;
2521 PlayerInfo[playerid][onAttack] = true;
2522 PlayerInfo[playerid][attackLeft] = 180;
2523 PlayerInfo[playerid][attackZone] = i;
2524 GZone[i][gzoneAttack] = true;
2525 if(GZone[i][gzoneOwner] == -1)
2526 format(msg, sizeof(msg), dblau_h"%s "weiss_h"gang, started war in "dblau_h"%s"weiss_h" gangzone.", Gang[gID][gangName], GetXY2DZone(GZone[i][gzoneCPPos][0], GZone[i][gzoneCPPos][1]));
2527 else
2528 {
2529 oID = findGang(GZone[i][gzoneOwner], false);
2530 format(msg, sizeof(msg), dblau_h"%s "weiss_h"gang, started war in "dblau_h"%s"weiss_h" gangzone.", Gang[gID][gangName], GetXY2DZone(GZone[i][gzoneCPPos][0], GZone[i][gzoneCPPos][1]));
2531 }
2532 new msg2[512];
2533 format(msg2, sizeof(msg2), dblau_h"[GANG-ATTACK] "dblau_h"%s "weiss_h"attacked your gang zone.", Gang[gID][gangName]);
2534 foreach(new x : Player)
2535 {
2536 SCM(x,COLOR_RED, msg);
2537 if(PlayerInfo[x][playerGang] == Gang[oID][gangID] && GZone[i][gzoneOwner] != -1)
2538 {
2539 SCM(x,COLOR_RED, msg2);
2540 }
2541 }
2542 GangZoneFlashForAll(GZone[i][gZone], HexToInt(dblau_h"50"));
2543 PlayerTextDrawShow(playerid, PlayerInfo[playerid][gangzoneTD][0]);
2544 PlayerTextDrawSetString(playerid, PlayerInfo[playerid][gangzoneTD][1], "03:00");
2545 PlayerTextDrawShow(playerid, PlayerInfo[playerid][gangzoneTD][1]);
2546 PlayerInfo[playerid][attackTimer] = SetTimerEx("attackedZone", 1000, true, "dd", playerid, i);
2547 return 1;
2548}
2549
2550stock HexToInt(string[]){
2551 if (string[0] == 0) return 0;
2552 new i, cur=1, res = 0;
2553 for (i=strlen(string);i>0;i--) {
2554 if (string[i-1]<58) res=res+cur*(string[i-1]-48); else res=res+cur*(string[i-1]-65+10);
2555
2556 cur=cur*16;
2557 }return res;
2558}
2559
2560forward attackedZone(playerid, i);
2561public attackedZone(playerid, i)
2562{
2563 new time[2], msg[1000], gID = findGang(playerid);
2564 if(PlayerInfo[playerid][attackLeft] > 0)
2565 {
2566 time[0] = PlayerInfo[playerid][attackLeft] / 60;
2567 time[1] = PlayerInfo[playerid][attackLeft] % 60;
2568 format(msg, sizeof(msg), "%02d:%02d", time[0], time[1]);
2569 PlayerTextDrawSetString(playerid, PlayerInfo[playerid][gangzoneTD][1], msg);
2570 PlayerInfo[playerid][attackLeft]--;
2571 if(!isInZone(playerid, i))
2572 {
2573 format(msg, sizeof(msg), dblau_h"[GANG-ZONE] "weiss_h"%s failed to capture %s and gangzone will be locked for 15 minutes.", GetName(playerid), GetXY2DZone(GZone[i][gzoneCPPos][0], GZone[i][gzoneCPPos][1]));
2574 SendClientMessageToAll(COLOR_WHITE, msg);
2575 KillTimer(PlayerInfo[playerid][attackTimer]);
2576 PlayerTextDrawHide(playerid, PlayerInfo[playerid][gangzoneTD][1]);
2577 PlayerTextDrawHide(playerid, PlayerInfo[playerid][gangzoneTD][0]);
2578 GangZoneStopFlashForAll(GZone[i][gZone]);
2579 GZone[i][gzoneAttack] = false;
2580 PlayerInfo[playerid][attackZone] = -1;
2581 GZone[i][gzoneLocked] = true;
2582 GZone[i][gzoneTime] = 900;
2583 Gang[gID][gangAttack] = false;
2584 PlayerInfo[playerid][onAttack] = false;
2585 PlayerInfo[playerid][attackLeft] = 0;
2586 for(new b = 0; b < MAX_GANGS; b++)
2587 {
2588 if(Gang[b][gangStatus])
2589 {
2590 saveGang(b);
2591 }
2592 }
2593 }
2594 }
2595 else
2596 {
2597 new msg2[1000];
2598 format(msg, sizeof(msg), dblau_h"[GANG-ZONE] "weiss_h"%s succesfully captured %s and gangzone will be locked for 1 hour.", GetName(playerid), GetXY2DZone(GZone[i][gzoneCPPos][0], GZone[i][gzoneCPPos][1]));
2599 SendClientMessageToAll(COLOR_WHITE, msg);
2600 foreach(new x : Player)
2601 {
2602 if(PlayerInfo[x][playerGang] == PlayerInfo[playerid][playerGang])
2603 {
2604 SCM(x,COLOR_RED, "Your gang controlled this gangzone now, every gang member get "dblau_h"$20,000 "weiss_h"and"dblau_h" 50 XP "weiss_h"!");
2605 giveMoney(x, 20000);
2606 giveXP(x, 50);
2607 }
2608 }
2609 new col[10];
2610 format(col, sizeof(col), "%sCC", Gang[gID][gangColor]);
2611 GangZoneStopFlashForAll(GZone[i][gZone]);
2612 GangZoneHideForAll(GZone[i][gZone]);
2613 GangZoneShowForAll(GZone[i][gZone], HexToInt(col));
2614 Gang[gID][gangScore] += 10;
2615 KillTimer(PlayerInfo[playerid][attackTimer]);
2616 GZone[i][gzoneAttack] = false;
2617 GZone[i][gzoneLocked] = true;
2618 GZone[i][gzoneTime] = 3600;
2619 GZone[i][gzoneOwner] = Gang[gID][gangID];
2620 Gang[gID][gangAttack] = false;
2621 PlayerInfo[playerid][onAttack] = false;
2622 PlayerInfo[playerid][attackLeft] = 0;
2623 PlayerInfo[playerid][attackZone] = -1;
2624 PlayerTextDrawHide(playerid, PlayerInfo[playerid][gangzoneTD][1]);
2625 PlayerTextDrawHide(playerid, PlayerInfo[playerid][gangzoneTD][0]);
2626 format(msg2, sizeof(msg2), dblau_h"[GANG ZONE]\n"dblau_h"Controlled By : "weiss_h"%s"dblau_h"\nLocation : "weiss_h"%s\n"dblau_h"Type /gwar to attack this zone!", Gang[gID][gangName], GetXY2DZone(GZone[i][gzoneCPPos][0], GZone[i][gzoneCPPos][1]));
2627 DestroyDynamic3DTextLabel(GZone[i][gzoneTitle]);
2628 GZone[i][gzoneTitle] = CreateDynamic3DTextLabel(msg2, COLOR_WHITE, GZone[i][gzoneCPPos][0], GZone[i][gzoneCPPos][1], GZone[i][gzoneCPPos][2] + 1.0 , 10.0);
2629 }
2630 return 1;
2631}
2632
2633stock GetName(playerid){
2634 new pName1[24];
2635 GetPlayerName(playerid, pName1, 24);
2636 return pName1;
2637}
2638
2639stock giveMoney(playerid, amount){
2640 PlayerInfo[playerid][pMoney] += amount;
2641 GivePlayerMoney(playerid,amount);
2642 return 1;
2643}
2644
2645stock takeMoney(playerid, amount){
2646 PlayerInfo[playerid][pMoney] -= amount;
2647 GivePlayerMoney(playerid,-amount);
2648 return 1;
2649}
2650
2651stock giveXP(playerid, amount){
2652 SetPlayerScore(playerid, GetPlayerScore(playerid) + amount);
2653 PlayerInfo[playerid][pLevel] += amount;
2654 return 1;
2655}
2656
2657stock IsVehicleOccupied(vehicleid){
2658 for (new i = 0; i < GetMaxPlayers(); i ++){
2659 if (GetPlayerVehicleID(playerid) == vehicleid) return true;
2660 }return false;
2661}
2662
2663stock SMTG(gangid, msg[]){
2664 foreach(new x : Player){
2665 if(PlayerInfo[x][playerGang] == gangid){
2666 info(x, msg);
2667 }
2668 }return 1;
2669}
2670
2671stock SGC(playerid, msg[])
2672{
2673 new pesan[200];
2674 format(pesan, sizeof(pesan), ""CHAT_GANG"[GANG-CHAT] %s : "CHAT_WHITE"%s", GetName(playerid), msg);
2675 foreach(new x : Player)
2676 {
2677 if(PlayerInfo[x][playerGang] == PlayerInfo[playerid][playerGang])
2678 {
2679 SCM(x, pesan);
2680 }
2681 }
2682 return 1;
2683}
2684
2685stock SAM(msg[]){
2686 new msg2[256];
2687 format(msg2, sizeof(msg2), CHAT_INFO"[ADMIN]"CHAT_WHITE" %s", msg);
2688 foreach(new z : Player){
2689 if(PlayerInfo[z][pLevel] >= 100){
2690 SendClientMessage(z, COLOR_WHITE, msg2);
2691 }
2692 }
2693 return 1;
2694}
2695
2696stock getIP(playerid){
2697 new iP[20];
2698 GetPlayerIp(playerid, iP, 20);
2699 return iP;
2700}
2701
2702stock db_escape(text[])
2703{
2704 new
2705 ret[24 * 2],
2706 ch,
2707 i,
2708 j;
2709 while ((ch = text[i++]) && j < sizeof (ret)){
2710 if (ch == '\''){
2711 if (j < sizeof (ret) - 2){
2712 ret[j++] = '\'';
2713 ret[j++] = '\'';
2714 }
2715 }else if (j < sizeof (ret)){
2716 ret[j++] = ch;
2717 }else{
2718 j++;
2719 }
2720 }
2721 ret[sizeof (ret) - 1] = '\0';
2722 return ret;
2723}
2724
2725stock Server(playerid, message[]){
2726 new pesan[512];
2727 format(pesan, sizeof(pesan), ""CHAT_SERVER"[SERVER] "CHAT_WHITE"%s", message);
2728 return SCM(playerid, COLOR_DARKRED, pesan);
2729}
2730
2731stock Usage(playerid, message[]){
2732 new pesan[200];
2733 if(PlayerInfo[playerid][pLanguage])
2734 format(pesan, sizeof(pesan), ""CHAT_COMMAND"[COMMAND] "CHAT_WHITE"Nutze : "CHAT_COMMAND"%s", message);
2735 else
2736 format(pesan, sizeof(pesan), ""CHAT_COMMAND"[COMMAND] "CHAT_WHITE"Usage : "CHAT_COMMAND"%s", message);
2737 return SCM(playerid, COLOR_DARKRED, pesan);
2738}