· 6 years ago · Jul 12, 2019, 12:22 PM
1#define FILTERSCRIPT
2
3#include <a_samp>
4#include <a_mysql>
5#include <foreach>
6#include <streamer>
7#include <sscanf2>
8#include <zcmd>
9
10//===== MySql =====//
11#define SQL_HOST "localhost"
12#define SQL_USER "root"
13#define SQL_PASSWORD ""
14#define SQL_DBNAME "<YOURFUCKINGDATABASENAME>"
15//===== END =====//
16
17#define COLOR_GREEN 0x008000FF
18#define COLOR_YELLOW 0xFFFF00FF
19#define COLOR_RED 0xFF0000FF
20
21#define MAX_LABELS 1000
22#define LABEL_DISTANCE 20.00
23
24#define DIALOG_CREATE_LABEL 30
25#define DIALOG_EDIT_LABEL 40
26
27new OnPosLabelX, OnPosLabelY, OnPosLabelZ;
28enum LabelData
29{
30 ID,
31 Text3D:Label,
32 Text[74],
33 Color,
34 Interior,
35 VirtualWorld,
36 Float:PosX,
37 Float:PosY,
38 Float:PosZ
39};
40new LabelInfo[MAX_LABELS][LabelData],
41 Iterator:Labels<MAX_LABELS>,
42 EditLabel,
43 MySQL:mysql
44;
45
46new SelectedLabel[MAX_PLAYERS];
47
48public OnFilterScriptInit()
49{
50 mysql = mysql_connect(SQL_HOST, SQL_USER, SQL_PASSWORD, SQL_DBNAME);
51
52 mysql_tquery(mysql, "CREATE TABLE IF NOT EXISTS `DynamicLabels` (\
53 `ID` int(5) NOT NULL AUTO_INCREMENT UNIQUE KEY,\
54 `Text` varchar(74) NOT NULL,\
55 `Color` int(8) NOT NULL,\
56 `Interior` int(5) NOT NULL,\
57 `VirtualWorld` int(5) NOT NULL,\
58 `PosX` float NOT NULL,\
59 `PosY` float NOT NULL,\
60 `PosZ` float NOT NULL)");
61
62 mysql_tquery(mysql, "SELECT * FROM `DynamicLabels`", "LoadDynamicLabels");
63 return 1;
64}
65
66public OnFilterScriptExit() {
67
68 DestroyAllDynamic3DTextLabels();
69 return 1;
70}
71
72public OnPlayerConnect(playerid) {
73
74 SelectedLabel[playerid] = -1;
75 return 1;
76}
77
78public OnPlayerDisconnect(playerid, reason) {
79
80 SelectedLabel[playerid] = -1;
81 return 1;
82}
83
84public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
85 switch(dialogid) {
86 case DIALOG_CREATE_LABEL: {
87 if(response) {
88 switch(listitem) {
89
90 case 0: {
91
92 ShowPlayerDialog(playerid, DIALOG_CREATE_LABEL + 1, DIALOG_STYLE_INPUT, "Label Text", "Enter the label text below", "Next", "Close");
93 }
94 case 1: {
95
96 ShowPlayerDialog(playerid, DIALOG_CREATE_LABEL + 2, DIALOG_STYLE_INPUT, "Label Color", "Enter the label color below", "Next", "Close");
97 }
98 case 2: {
99 new id = Iter_Free(Labels);
100 if(id == -1) return SendClientMessage(playerid, COLOR_RED, "You can't create more labels");
101 if(strlen(LabelInfo[id][Text]) < 1) return SendClientMessage(playerid, COLOR_RED, "Please enter a valid text");
102 if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "You must be on foot to create the label");
103
104 GetPlayerPos(playerid, LabelInfo[id][PosX], LabelInfo[id][PosY], LabelInfo[id][PosZ]);
105
106 LabelInfo[id][Label] = CreateDynamic3DTextLabel(LabelInfo[id][Text], LabelInfo[id][Color], LabelInfo[id][PosX], LabelInfo[id][PosY],
107 LabelInfo[id][PosZ], LABEL_DISTANCE, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, LabelInfo[id][VirtualWorld], LabelInfo[id][Interior]);
108
109 new query[200];
110 format(query, sizeof(query), "You have created a new label with ID: %i", id);
111 SendClientMessage(playerid, COLOR_GREEN, query);
112
113 mysql_format(mysql, query, sizeof(query), "INSERT INTO `DynamicLabels` (Text, Color, VirtualWorld, Interior, PosX, PosY, PosZ) \
114 VALUES ('%e', %i, %i, %i, %f, %f, %f)", LabelInfo[id][Text], LabelInfo[id][Color], LabelInfo[id][VirtualWorld], LabelInfo[id][Interior], LabelInfo[id][PosX],
115 LabelInfo[id][PosY], LabelInfo[id][PosZ]);
116 mysql_tquery(mysql, query, "OnLabelCreated", "i", id);
117 }
118 }
119 }
120 }
121 case DIALOG_CREATE_LABEL + 1: {
122 if(response) {
123 new id = Iter_Free(Labels);
124 if(isnull(inputtext)) return SendClientMessage(playerid, COLOR_RED, "Please enter a valid text");
125
126 format(LabelInfo[id][Text], 74, inputtext);
127 FilterNewLines(inputtext, strlen(inputtext));
128 UpdateDynamic3DTextLabelText(LabelInfo[id][Label], LabelInfo[id][Color], inputtext);
129
130 cmd_createlabel(playerid, "");
131 }
132 }
133 case DIALOG_CREATE_LABEL + 2: {
134 if(response) {
135 new id = Iter_Free(Labels);
136 if(strlen(inputtext) != 6) return SendClientMessage(playerid, COLOR_RED, "Invalid hex color");
137
138 new color;
139 if (sscanf(inputtext, "x", color)) return SendClientMessage(playerid, COLOR_RED, "Please enter a valid color (RRGGBB)");
140 color = (color << 8) | 0xFF;
141
142 LabelInfo[id][Color] = color;
143 cmd_createlabel(playerid, "");
144 }
145 }
146 case DIALOG_EDIT_LABEL: {
147 if(response) {
148 switch(listitem) {
149
150 case 1: {
151
152 ShowPlayerDialog(playerid, DIALOG_EDIT_LABEL + 1, DIALOG_STYLE_INPUT, "Label Text", "Enter the label text below", "Next", "Close");
153 }
154 case 2: {
155
156 ShowPlayerDialog(playerid, DIALOG_EDIT_LABEL + 2, DIALOG_STYLE_INPUT, "Label Color", "Enter the label color below", "Next", "Close");
157 }
158 case 3: {
159
160 ShowPlayerDialog(playerid, DIALOG_EDIT_LABEL + 3, DIALOG_STYLE_INPUT, "Label Interior", "Enter the label interior below", "Next", "Close");
161 }
162 case 4: {
163
164 ShowPlayerDialog(playerid, DIALOG_EDIT_LABEL + 4, DIALOG_STYLE_INPUT, "Label Virtual World", "Enter the label virtual world below", "Next", "Close");
165 }
166 case 5: {
167
168 EditLabel = true;
169 SendClientMessage(playerid, -1, "\n");
170 SendClientMessage(playerid, -1, "\n");
171 SendClientMessage(playerid, -1, "\n");
172 SendClientMessage(playerid, -1, "\n");
173 SendClientMessage(playerid, -1, "\n");
174 SendClientMessage(playerid, -1, "\n");
175 SendClientMessage(playerid, -1, "{00FF00}Editing position 3DLabel mode{FFFFFF}: On");
176 SendClientMessage(playerid, COLOR_YELLOW, "[INFO] {FFFFFF}Default is Pos X, Chat X, Y, Or Z To change position editing");
177 SendClientMessage(playerid, COLOR_YELLOW, "[INFO] {FFFFFF}Default Change Pos Hotkey is KEY_YES <Y> And KEY_NO <N>");
178 SendClientMessage(playerid, COLOR_YELLOW, "[INFO] {FFFFFF}Default Finish Hotkey is KEY_SPRINT <Space>");
179 OnPosLabelX = true;
180 }
181 case 6: {
182 new id = SelectedLabel[playerid];
183 DestroyDynamic3DTextLabel(LabelInfo[id][Label]);
184 GetPlayerPos(playerid, LabelInfo[id][PosX], LabelInfo[id][PosY], LabelInfo[id][PosZ]);
185 LabelInfo[id][Label] = CreateDynamic3DTextLabel(LabelInfo[id][Text], LabelInfo[id][Color], LabelInfo[id][PosX], LabelInfo[id][PosY],
186 LabelInfo[id][PosZ], LABEL_DISTANCE, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, LabelInfo[id][VirtualWorld], LabelInfo[id][Interior]);
187 SetPlayerPos(playerid, LabelInfo[id][PosX] + 0.1, LabelInfo[id][PosY], LabelInfo[id][PosZ]); //Make the label visible xD
188 MemekGedeWkwkw(id); //Save Rencent Edit
189 }
190 case 7: {
191 new id = SelectedLabel[playerid];
192 SetPlayerPos(playerid, LabelInfo[id][PosX], LabelInfo[id][PosY], LabelInfo[id][PosZ]);
193 SetPlayerInterior(playerid, LabelInfo[id][Interior]);
194 SetPlayerVirtualWorld(playerid, LabelInfo[id][VirtualWorld]);
195 MemekGedeWkwkw(id); //Save Rencent Edit
196 }
197 case 8: {
198 new id = SelectedLabel[playerid];
199 DestroyDynamic3DTextLabel(LabelInfo[id][Label]);
200 Iter_Remove(Labels, id);
201
202 new query[60];
203 mysql_format(mysql, query, sizeof(query), "DELETE FROM `DynamicLabels` WHERE `ID` = %i", LabelInfo[id][ID]);
204 mysql_tquery(mysql, query);
205 }
206 }
207 }
208 }
209 case DIALOG_EDIT_LABEL + 1: {
210
211 if(response) {
212 new id = SelectedLabel[playerid];
213 if(isnull(inputtext)) return SendClientMessage(playerid, COLOR_RED, "Please enter a valid text");
214
215 format(LabelInfo[id][Text], 74, inputtext);
216 FilterNewLines(inputtext, strlen(inputtext));
217 UpdateDynamic3DTextLabelText(LabelInfo[id][Label], LabelInfo[id][Color], inputtext);
218 SetPlayerPos(playerid, LabelInfo[id][PosX] + 0.1, LabelInfo[id][PosY], LabelInfo[id][PosZ]); //Make the label visible xD
219
220 MemekGedeWkwkw(id); //Save Rencent Edit
221
222 new strcmd[5];
223 format(strcmd, sizeof(strcmd), "%i", id);
224 cmd_editlabel(playerid, strcmd);
225 }
226 }
227 case DIALOG_EDIT_LABEL + 2: {
228 if(response) {
229 new id = SelectedLabel[playerid];
230 if(strlen(inputtext) != 6) return SendClientMessage(playerid, COLOR_RED, "Invalid hex color");
231
232 new color;
233 if (sscanf(inputtext, "x", color)) return SendClientMessage(playerid, COLOR_RED, "Please enter a valid color (RRGGBB)");
234 color = (color << 8) | 0xFF;
235
236 LabelInfo[id][Color] = color;
237 UpdateDynamic3DTextLabelText(LabelInfo[id][Label], color, LabelInfo[id][Text]);
238 SetPlayerPos(playerid, LabelInfo[id][PosX] + 0.1, LabelInfo[id][PosY], LabelInfo[id][PosZ]); //Make the label visible xD
239
240 MemekGedeWkwkw(id); //Save Rencent Edit
241
242 new strcmd[5];
243 format(strcmd, sizeof(strcmd), "%i", id);
244 cmd_editlabel(playerid, strcmd);
245 }
246 }
247 case DIALOG_EDIT_LABEL + 3: {
248 if(response) {
249 if(!IsNumeric(inputtext)) return SendClientMessage(playerid, COLOR_RED, "You have enteCOLOR_RED an invalid interior ID");
250
251 new id = SelectedLabel[playerid];
252 DestroyDynamic3DTextLabel(LabelInfo[id][Label]);
253
254 GetPlayerPos(playerid, LabelInfo[id][PosX], LabelInfo[id][PosY], LabelInfo[id][PosZ]);
255 LabelInfo[id][Interior] = strval(inputtext);
256 LabelInfo[id][Label] = CreateDynamic3DTextLabel(LabelInfo[id][Text], LabelInfo[id][Color], LabelInfo[id][PosX], LabelInfo[id][PosY],
257 LabelInfo[id][PosZ], LABEL_DISTANCE, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, LabelInfo[id][VirtualWorld], LabelInfo[id][Interior]);
258 SetPlayerPos(playerid, LabelInfo[id][PosX] + 0.1, LabelInfo[id][PosY], LabelInfo[id][PosZ]); //Make the label visible xD
259
260 MemekGedeWkwkw(id); //Save Rencent Edit
261
262 new strcmd[5];
263 format(strcmd, sizeof(strcmd), "%i", id);
264 cmd_editlabel(playerid, strcmd);
265 }
266 }
267 case DIALOG_EDIT_LABEL + 4: {
268 if(response) {
269 if(!IsNumeric(inputtext)) return SendClientMessage(playerid, COLOR_RED, "You have enteCOLOR_RED an invalid virtual world ID");
270 if(strval(inputtext) == -1) return SendClientMessage(playerid, COLOR_RED, "You have enteCOLOR_RED an invalid virtual world ID");
271
272 new id = SelectedLabel[playerid];
273 DestroyDynamic3DTextLabel(LabelInfo[id][Label]);
274
275 GetPlayerPos(playerid, LabelInfo[id][PosX], LabelInfo[id][PosY], LabelInfo[id][PosZ]);
276 LabelInfo[id][VirtualWorld] = strval(inputtext);
277 LabelInfo[id][Label] = CreateDynamic3DTextLabel(LabelInfo[id][Text], LabelInfo[id][Color], LabelInfo[id][PosX], LabelInfo[id][PosY],
278 LabelInfo[id][PosZ], LABEL_DISTANCE, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, LabelInfo[id][VirtualWorld], LabelInfo[id][Interior]);
279 SetPlayerPos(playerid, LabelInfo[id][PosX] + 0.1, LabelInfo[id][PosY], LabelInfo[id][PosZ]); //Make the label visible xD
280
281 MemekGedeWkwkw(id); //Save Rencent Edit
282
283 new strcmd[5];
284 format(strcmd, sizeof(strcmd), "%i", id);
285 cmd_editlabel(playerid, strcmd);
286 }
287 }
288 }
289 return 0;
290}
291
292forward OnLabelCreated(labelid);
293public OnLabelCreated(labelid) {
294
295 LabelInfo[labelid][ID] = cache_insert_id();
296 Iter_Add(Labels, labelid);
297 return 1;
298}
299
300forward LoadDynamicLabels();
301public LoadDynamicLabels() {
302
303 new rows = cache_num_rows();
304
305 if(rows) {
306
307 for(new i; i < rows; i++) {
308
309 new id = Iter_Free(Labels);
310
311 cache_get_value_name_int(i, "ID", LabelInfo[id][ID]);
312 cache_get_value_name(i, "Text", LabelInfo[id][Text]);
313 cache_get_value_name_int(i, "Color", LabelInfo[id][Color]);
314 cache_get_value_name_int(i, "Interior", LabelInfo[id][Interior]);
315 cache_get_value_name_int(i, "VirtualWorld", LabelInfo[id][VirtualWorld]);
316 cache_get_value_name_float(i, "PosX", LabelInfo[id][PosX]);
317 cache_get_value_name_float(i, "PosY", LabelInfo[id][PosY]);
318 cache_get_value_name_float(i, "PosZ", LabelInfo[id][PosZ]);
319
320 FilterNewLines(LabelInfo[id][Text], strlen(LabelInfo[id][Text]));
321
322 LabelInfo[id][Label] = CreateDynamic3DTextLabel(LabelInfo[id][Text], LabelInfo[id][Color], LabelInfo[id][PosX], LabelInfo[id][PosY],
323 LabelInfo[id][PosZ], LABEL_DISTANCE, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, LabelInfo[id][VirtualWorld], LabelInfo[id][Interior]);
324
325 Iter_Add(Labels, id);
326 }
327 printf("Loaded %i dynamic labels", rows);
328 }
329}
330
331public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
332{
333 if(newkeys & KEY_YES)
334 {
335 if(EditLabel)
336 {
337 new id = SelectedLabel[playerid];
338 if (OnPosLabelX) LabelInfo[id][PosX] = LabelInfo[id][PosX] + 0.1;
339 if (OnPosLabelY) LabelInfo[id][PosY] = LabelInfo[id][PosY] + 0.1;
340 if (OnPosLabelZ) LabelInfo[id][PosZ] = LabelInfo[id][PosZ] + 0.1;
341
342 MemekGedeWkwkw(id); //Save Rencent Edit
343
344 //Destroy
345 DestroyDynamic3DTextLabel(LabelInfo[id][Label]);
346
347 //Create Label
348 LabelInfo[id][Label] = CreateDynamic3DTextLabel(LabelInfo[id][Text], LabelInfo[id][Color], LabelInfo[id][PosX], LabelInfo[id][PosY],
349 LabelInfo[id][PosZ], LABEL_DISTANCE, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, LabelInfo[id][VirtualWorld], LabelInfo[id][Interior], -1, STREAMER_3D_TEXT_LABEL_SD, -1, 0);
350
351 //Teleport to make 3DLabel Visible //Another Way?
352 new Float:xpos, Float:ypos, Float:zpos;
353 GetPlayerPos(playerid, xpos, ypos, zpos);
354 SetPlayerPos(playerid, xpos - 0.0001, ypos, zpos);
355 }
356 }
357 if(newkeys & KEY_NO)
358 {
359 if(EditLabel)
360 {
361 new id = SelectedLabel[playerid];
362 if (OnPosLabelX) LabelInfo[id][PosX] = LabelInfo[id][PosX] - 0.1;
363 if (OnPosLabelY) LabelInfo[id][PosY] = LabelInfo[id][PosY] - 0.1;
364 if (OnPosLabelZ) LabelInfo[id][PosZ] = LabelInfo[id][PosZ] - 0.1;
365
366 MemekGedeWkwkw(id); //Save Rencent Edit
367
368 //Destroy
369 DestroyDynamic3DTextLabel(LabelInfo[id][Label]);
370
371 //Create Label
372 LabelInfo[id][Label] = CreateDynamic3DTextLabel(LabelInfo[id][Text], LabelInfo[id][Color], LabelInfo[id][PosX], LabelInfo[id][PosY],
373 LabelInfo[id][PosZ], LABEL_DISTANCE, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, LabelInfo[id][VirtualWorld], LabelInfo[id][Interior], -1, STREAMER_3D_TEXT_LABEL_SD, -1, 0);
374
375 //Teleport to make 3DLabel Visible //Another Way?
376 new Float:xpos, Float:ypos, Float:zpos;
377 GetPlayerPos(playerid, xpos, ypos, zpos);
378 SetPlayerPos(playerid, xpos + 0.0001, ypos, zpos);
379 }
380 }
381 if(newkeys == KEY_SPRINT)
382 {
383 if(EditLabel)
384 {
385 EditLabel = false;
386 SendClientMessage(playerid, -1, "{00FF00}Editing position 3DLabel mode{FFFFFF}: Off");
387 }
388 }
389 return 1;
390}
391
392public OnPlayerText(playerid, text[])
393{
394 if(IsPlayerAdmin(playerid))
395 {
396 if (!EditLabel) return 1;
397 if(strfind(text, "x", true) != -1)
398 {
399 OnPosLabelX = true;
400 OnPosLabelY = false;
401 OnPosLabelZ = false;
402 SendClientMessage(playerid, COLOR_GREEN, "[SUCCESS] {FFFFFF}Ok changed to PosX!");
403 }
404 if(strfind(text, "y", true) != -1)
405 {
406 OnPosLabelX = false;
407 OnPosLabelY = true;
408 OnPosLabelZ = false;
409 SendClientMessage(playerid, COLOR_GREEN, "[SUCCESS] {FFFFFF}Ok changed to PosY!");
410 }
411 if(strfind(text, "z", true) != -1)
412 {
413 OnPosLabelX = false;
414 OnPosLabelY = false;
415 OnPosLabelZ = true;
416 SendClientMessage(playerid, COLOR_GREEN, "[SUCCESS] {FFFFFF}Ok changed to PosZ!");
417 }
418 }
419 return 0;
420}
421
422CMD:createlabel(playerid, params[])
423{
424 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "You must be an administrator to use this command");
425 new id = Iter_Free(Labels);
426 LabelInfo[id][Interior] = 0;
427 LabelInfo[id][VirtualWorld] = 0;
428
429 new string[300];
430 format(string, sizeof(string), "{FFFFFF}Text: {00FF00}%s\n{FFFFFF}Color: {00FF00}%x\n{00FF00}Create Label",
431 LabelInfo[id][Text], LabelInfo[id][Color]);
432 ShowPlayerDialog(playerid, DIALOG_CREATE_LABEL, DIALOG_STYLE_LIST, "Create 3D Label", string, "Select", "Cancel");
433 return 1;
434}
435
436CMD:editlabel(playerid, params[])
437{
438 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "You must be an administrator to use this command");
439 new id;
440 if(sscanf(params, "i", id)) return SendClientMessage(playerid, COLOR_RED, "Edit label: /editlabel <ID>");
441 if(!Iter_Contains(Labels, id)) return SendClientMessage(playerid, COLOR_RED, "Invalid label ID");
442 SelectedLabel[playerid] = id;
443
444 new string[300];
445 format(string, sizeof(string), "{FFFFFF}ID: {00FF00}%d\n{FFFFFF}Text: {00FF00}%s\n{FFFFFF}Color: {00FF00}%x\n{FFFFFF}Interior: {00FF00}%i\n{FFFFFF}Virtual World: {00FF00}%i\n\
446 {0000FF}Move Label\nMove Label To Here\n{00FF00}Teleport to Label\n{FF0000}Destroy Label", LabelInfo[id][ID], LabelInfo[id][Text], LabelInfo[id][Color], LabelInfo[id][Interior], LabelInfo[id][VirtualWorld]);
447 ShowPlayerDialog(playerid, DIALOG_EDIT_LABEL, DIALOG_STYLE_LIST, "Edit 3D Label", string, "Select", "Cancel");
448 return 1;
449}
450
451CMD:labels(playerid, params[]) {
452
453 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "You must be an administrator to use this command");
454 if(Iter_Count(Labels) == 0) return SendClientMessage(playerid, COLOR_RED, "There are no labels currently");
455
456 new string[128], s[300];
457 foreach(new i : Labels) {
458
459 format(string, sizeof(string), "{FFFFFF}ID: {00FF00}%i {FFFFFF}Text: {00FF00}%s\n", i, LabelInfo[i][Text]);
460 strcat(s, string);
461 }
462 ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "3D Labels", s, "Close", "");
463 return 1;
464}
465
466IsNumeric(string[])
467{
468 for (new i = 0, j = strlen(string); i < j; i++)
469 {
470 if (string[i] > '9' || string[i] < '0') return 0;
471 }
472 return 1;
473}
474
475FilterNewLines(text[], length) // CCOLOR_REDits to Konstantinos
476{
477 for (new i; i != length; i++)
478 {
479 if (text[i] == '\\' && i != length - 1 && text[i + 1] == 'n')
480 {
481 text[i] = ' ';
482 text[i + 1] = '\n';
483 i++;
484 }
485 }
486}
487
488stock MemekGedeWkwkw(IDJembut)
489{
490 new query[1024];
491 mysql_format(mysql, query, sizeof(query), "UPDATE `DynamicLabels` SET Text='%s', Color='%i', VirtualWorld='%i', Interior='%i', PosX='%f', PosY='%f', PosZ='%f' WHERE Text='%s'",
492 LabelInfo[IDJembut][Text], LabelInfo[IDJembut][Color], LabelInfo[IDJembut][VirtualWorld], LabelInfo[IDJembut][Interior], LabelInfo[IDJembut][PosX], LabelInfo[IDJembut][PosY], LabelInfo[IDJembut][PosZ], LabelInfo[IDJembut][Text]);
493 mysql_tquery(mysql, query, "OnLabelCreated", "i", IDJembut);
494}