Badyx

Untitled

Nov 24th, 2018
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.67 KB | None | 0 0
  1. /* Dynamic Material Text v3.0 System By BadyX
  2.  
  3. Agradecimientos a Funky The Great por la versión v2.0
  4.  
  5. */
  6.  
  7. #define FILTERSCRIPT
  8.  
  9. #include <a_samp>
  10. #include <a_mysql> // R41-4
  11. #include <zcmd>
  12. #include <streamer>
  13. #include <foreach>
  14. #include <sscanf2>
  15. // *** Defines *** ///
  16.  
  17. #define CarpetaTextos "Textos/%d.txt" // Carpeta donde se guardarán los textos.
  18. #define MAX_FONT_NAME 30 // El tamaño máximo para la fuente !
  19. #define MAX_TEXT 50 // El máximo de texto que puede ser añadido !
  20. #define MAX_MATERIALS 69 // El máximo de materiales
  21. #define MAT_DEFAULT_OBJECT 19480 // El objeto por defecto del material. (cuando se crea)
  22. #define MATERIAL_DEFAULT_INDEX 0 // El índice predeterminado para configurar el texto del material. (cuando se crea)
  23. #define dValue 100 // Valor de dialog - a partir de este número.
  24.  
  25. /// ******************** ///
  26. #define MYRED "{FF0000}"
  27. #define MYBLUE "{0000FF}"
  28. #define MYYELLOW "{FFFF00}"
  29. #define MYORANGE "{FFA500}"
  30. #define MYPURPLE "{800080}"
  31. #define MYGREEN "{008000}"
  32. #define MYLBLUE "{0080FF}"
  33. #define MYWHITE "{FFFFFF}"
  34. #define MYBLACK "{000000}"
  35. #define MYCYAN "{00FFFF}"
  36. #define MYPINK "{FF00FF}"
  37. #define MYBROWN "{6A0000}"
  38. #define MYLPURPLE "{8080C0}"
  39. #define MYLGREEN "{00FF00}"
  40. #define MYGREY "{676767}"
  41.  
  42. #define MRED 0xFFFF0000
  43. #define MBLUE 0xFF0000FF
  44. #define MYELLOW 0xFFFFFF00
  45. #define MORANGE 0xFFFF8000
  46. #define MPURPLE 0xFF400080
  47. #define MGREEN 0xFF008000
  48. #define MLBLUE 0xFF0080FF
  49. #define MWHITE 0xFFFFFFFF
  50. #define MBLACK 0xFF000000
  51. #define MCYAN 0xFF00FFFF
  52. #define MPINK 0xFFFF00FF
  53. #define MBROWN 0xFF6A0000
  54. #define MLPURPLE 0xFF8080C0
  55. #define MLGREEN 0xFF00FF00
  56. #define MGRAY 0xFF676767
  57.  
  58. enum MaterialInfo
  59. {
  60. TextoExiste,
  61. Float:MatX,
  62. Float:MatY,
  63. Float:MatZ,
  64. Float:MatRX,
  65. Float:MatRY,
  66. Float:MatRZ,
  67. MatText[MAX_TEXT],
  68. MatObj,
  69. MatSize,
  70. MatBGC,
  71. MatALG,
  72. MatFont[MAX_FONT_NAME],
  73. MatColor,
  74. MatBold,
  75. MatRes,
  76. MatObjectID,
  77. MatIndex,
  78. MatCreador[32]
  79. }
  80. new matInfo[MAX_MATERIALS][MaterialInfo];
  81.  
  82. new Iterator:MatsItr<MAX_MATERIALS>;
  83. new SOID[MAX_PLAYERS];
  84.  
  85. #define DIALOG_MATS dValue+2
  86. #define DIALOG_TEXT dValue+3
  87. #define DIALOG_FONT dValue+4
  88. #define DIALOG_DELETE dValue+5
  89. #define DIALOG_FONTCOLOR dValue+6
  90. #define DIALOG_FONTSIZE dValue+7
  91. #define DIALOG_BGCOLOR dValue+8
  92. #define DIALOG_ALLIGNMENT dValue+9
  93. #define DIALOG_RESOLUTION dValue+10
  94. #define DIALOG_CHANGEOBJECT dValue+11
  95. #define DIALOG_CHANGEINDEX dValue+12
  96.  
  97. enum FontInformation
  98. {
  99. FontName[MAX_FONT_NAME],
  100. };
  101. new FontInfo[][FontInformation] = // Tipos de fuentes.
  102. {
  103. {"Lucida Console"},
  104. {"Verdana"},
  105. {"Webdings"},
  106. {"Wingdings"},
  107. {"Times New Roman"},
  108. {"Microsoft Sans Serif"},
  109. {"GTAWEAPON3"},
  110. {"Impact"},
  111. {"Georgia"},
  112. {"Arial"},
  113. {"Arial Black"},
  114. {"Comic Sans MS"},
  115. {"Trebuchet MS"}
  116. // {"YOUR FONT NAME"}
  117. };
  118.  
  119. new MySQL: g_iHandle;
  120. #define SQL_HOSTNAMETEST "localhost"
  121. #define SQL_USERNAMETEST "root"
  122. #define SQL_DATABASETEST "db_gamemode"
  123. #define SQL_PASSWORDTEST ""
  124.  
  125.  
  126. public OnFilterScriptInit()
  127. {
  128. new MySQLOpt: option_id = mysql_init_options();
  129. mysql_set_option(option_id, AUTO_RECONNECT, true);
  130. g_iHandle = mysql_connect(SQL_HOSTNAMETEST, SQL_USERNAMETEST, SQL_PASSWORDTEST, SQL_DATABASETEST, option_id);
  131. if(g_iHandle == MYSQL_INVALID_HANDLE || mysql_errno(g_iHandle) != 0)
  132. {
  133. print("No se ha podido conectar al servidor mySQL. Se cierra el servidor.");
  134. SendRconCommand("exit");
  135. return 1;
  136. }
  137. print("Conexión mysql good");
  138. mysql_tquery(g_iHandle, "SELECT * FROM `TEXTOS`", "CargarTextos", "");
  139. return 1;
  140. }
  141. public OnFilterScriptExit()
  142. {
  143. mysql_close(g_iHandle);
  144. /* for(new i = 0; i < MAX_MATERIALS; i++)
  145. {
  146. if(Iter_Contains(MatsItr,i))
  147. {
  148. GuardarTextos(i);
  149. Destruir_Texto(i);
  150. }
  151. }*/
  152. return 1;
  153. }
  154. CMD:textocrear(playerid,params[])
  155. {
  156. new string[90];
  157. new Float:x, Float:y, Float:z, Float:a;
  158. GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a);
  159. if(Iter_Count(MatsItr) > MAX_MATERIALS) return SendClientMessage(playerid, -1 , ""MYRED"[MATERIAL]"MYWHITE" El servidor alcanzó el máximo de textos posibles %d "#MAX_MATERIALS");
  160. new id = Iter_Free(MatsItr);
  161. format(string, sizeof(string), ""MYRED"[MATERIAL]"MYWHITE" El texto con ID %d fue creado con éxito.", id);
  162. SendClientMessage(playerid, -1 , string);
  163. SetPVarInt(playerid,"matID",id);
  164. format(matInfo[id][MatText],30,"Texto");
  165. format(matInfo[id][MatFont],30,"Arial");
  166. matInfo[id][MatColor] = MRED;
  167. matInfo[id][MatObjectID] = MAT_DEFAULT_OBJECT;
  168. CrearTexto(playerid, 1,id,x,y,z,0,0,a);
  169. EditDynamicObject(playerid,matInfo[id][MatObj]);
  170. return 1;
  171. }
  172. CMD:textoinfo(playerid, params[])
  173. {
  174. new string[128],count = 0;
  175. for(new i = 0; i < MAX_MATERIALS; i++)
  176. {
  177. if(IsPlayerInRangeOfPoint(playerid, 15.0, matInfo[i][MatX], matInfo[i][MatY], matInfo[i][MatZ]))
  178. {
  179. count = 1;
  180. SendClientMessage(playerid,-1,""MYRED" _________________________________Textos Info _________________________________");
  181. format(string, sizeof(string), ""MYWHITE"ID: %d , Texto: %s , Tamaño de fuente: %d , Nombre de fuente: %s", i, matInfo[i][MatText] , matInfo[i][MatSize],matInfo[i][MatFont]);
  182. SendClientMessage(playerid,-1,string);
  183. SendClientMessage(playerid,-1,""MYRED"_________________________________________________________________________________");
  184. return 1;
  185. }
  186. }
  187. if(count == 0) return SendClientMessage(playerid,-1,""MYRED"[MATERIAL]"MYWHITE" No estás cerca de ningún texto.");
  188. return 1;
  189. }
  190. CMD:textoeditar(playerid, params[])
  191. {
  192. new ID;
  193. if(sscanf(params, "i",ID)) return SendClientMessage(playerid, -1, ""MYRED"[MATERIAL]"MYWHITE" /textoeditar [id]");
  194. if(!Iter_Contains(MatsItr,ID)) return SendClientMessage(playerid, -1, ""MYRED"[MATERIAL]"MYWHITE" La ID de texto introducida no existe.");
  195. ShowPlayerDialog(playerid, DIALOG_MATS , DIALOG_STYLE_LIST, "Textos - v3.0", "Cambiar texto\nCambiar fuente\nCambiar color\nCambiar tamaño fuete\nCambiar color de fondo\nCambiar alineación\nTexto en negrita\nCambiar resolución\nEditar posición de texto\nDuplicar texto\nEliminar texto\nCambiar ID objeto\nCambiar Material Index", "Seleccionar", "Cerrar");
  196. SOID[playerid] = ID;
  197. return 1;
  198. }
  199. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  200. {
  201. new string[356];
  202. new ID = SOID[playerid];
  203. if(dialogid == DIALOG_MATS)
  204. {
  205. if(!response) return 1;
  206. switch(listitem)
  207. {
  208. case 0: ShowPlayerDialog(playerid, DIALOG_TEXT , DIALOG_STYLE_INPUT, "Sistema de textos - Cambio de texto", "Introduzca el nuevo texto.", "Seleccionar", "Atrás");
  209. case 1:
  210. {
  211. for(new a=0; a<sizeof(FontInfo); a++)
  212. {
  213. format(string, sizeof(string), "%s%s\n", string, FontInfo[a][FontName]);
  214. }
  215. ShowPlayerDialog(playerid, DIALOG_FONT , DIALOG_STYLE_LIST, "Sistema de textos - Choose Font", string, "Seleccionar", "Atrás");
  216. }
  217. case 2: ShowPlayerDialog(playerid, DIALOG_FONTCOLOR , DIALOG_STYLE_LIST, "Sistema de textos - Choose Color", ""MYRED"Red\n"MYBLUE"Blue\n"MYYELLOW"Yellow\n"MYORANGE"Orange\n"MYPURPLE"Purple\n"MYGREEN"Green\n"MYLBLUE"Light Blue\n"MYWHITE"White\n"MYBLACK"Black\n"MYCYAN"Cyan\n"MYPINK"Pink\n"MYBROWN"Brown\n"MYLPURPLE"Light Purple\n"MYLGREEN"Light Green\n"MYGREY"Gray", "Seleccionar", "Atrás");
  218. case 3: ShowPlayerDialog(playerid, DIALOG_FONTSIZE , DIALOG_STYLE_INPUT, "Sistema de textos - Font Size","Please enter a font size for your Material\nMust be Numeric.", "Aceptar", "Atrás");
  219. case 4: ShowPlayerDialog(playerid, DIALOG_BGCOLOR , DIALOG_STYLE_LIST, "Sistema de textos - Background Color",""MYRED"Red\n"MYBLUE"Blue\n"MYYELLOW"Yellow\n"MYORANGE"Orange\n"MYPURPLE"Purple\n"MYGREEN"Green\n"MYLBLUE"Light Blue\n"MYWHITE"White\n"MYBLACK"Black\n"MYCYAN"Cyan\n"MYPINK"Pink\n"MYBROWN"Brown\n"MYLPURPLE"Light Purple\n"MYLGREEN"Light Green\n"MYGREY"Gray\nNo Background", "Seleccionar", "Atrás");
  220. case 5: ShowPlayerDialog(playerid, DIALOG_ALLIGNMENT , DIALOG_STYLE_LIST, "Sistema de textos - Choose Allignment", "Left Allignment\nCenter Allignment\nRight Allignment", "Seleccionar", "Atrás");
  221. case 6:
  222. {
  223. format(string, sizeof(string), ""MYRED"[MATERIAL]"MYWHITE" Material Text %s", (matInfo[ID][MatBold] == 1) ? ("Un-Bolded") : ("Bolded"));
  224. SendClientMessage(playerid,-1,string);
  225. matInfo[ID][MatBold] =! matInfo[ID][MatBold];
  226. SetDynamicObjectMaterialText(matInfo[ID][MatObj] , matInfo[ID][MatIndex] , matInfo[ID][MatText] , matInfo[ID][MatRes], matInfo[ID][MatFont], matInfo[ID][MatSize], matInfo[ID][MatBold], matInfo[ID][MatColor], matInfo[ID][MatBGC],matInfo[ID][MatALG]);
  227. ShowPlayerDialog(playerid, DIALOG_MATS , DIALOG_STYLE_LIST, "Sistema de textos", "Cambiar texto\nCambiar fuente\nCambiar color\nCambiar tamaño fuete\nCambiar color de fondo\nCambiar alineación\nTexto en negrita\nCambiar resolución\nEditar posición de texto\nDuplicar texto\nEliminar texto\nCambiar ID objeto\nCambiar Material Index", "Seleccionar", "Cerrar");
  228. }
  229. case 7: ShowPlayerDialog(playerid, DIALOG_RESOLUTION , DIALOG_STYLE_LIST, "Sistema de textos - Choose Resolution", "32x32\n64x32\n64x64\n128x32\n128x64\n128x128\n256x32\n256x64\n256x128\n256x256\n512x64\n512x128\n512x256\n512x512", "Seleccionar", "Atrás");
  230. case 8:
  231. {
  232. EditDynamicObject(playerid,matInfo[ID][MatObj]);
  233. SetPVarInt(playerid,"matID",ID);
  234. }
  235. case 9:
  236. {
  237. new id = Iter_Free(MatsItr);
  238. matInfo[id][MatX] = matInfo[ID][MatX];
  239. matInfo[id][MatY] = matInfo[ID][MatY];
  240. matInfo[id][MatZ] = matInfo[ID][MatZ];
  241. matInfo[id][MatRX] = matInfo[ID][MatRX];
  242. matInfo[id][MatRY] = matInfo[ID][MatRY];
  243. matInfo[id][MatRZ] = matInfo[ID][MatRZ];
  244. matInfo[id][MatSize] = matInfo[ID][MatSize];
  245. matInfo[id][MatBGC] = matInfo[ID][MatBGC];
  246. matInfo[id][MatALG] = matInfo[ID][MatALG];
  247. matInfo[id][MatBold] = matInfo[ID][MatBold];
  248. matInfo[id][MatRes] = matInfo[ID][MatRes];
  249. matInfo[id][MatColor] = matInfo[ID][MatColor];
  250. matInfo[id][MatObjectID] = matInfo[ID][MatObjectID];
  251. matInfo[id][MatIndex] = matInfo[ID][MatIndex];
  252. SetPVarInt(playerid,"matID",id);
  253. format(matInfo[id][MatText],30,matInfo[ID][MatText]);
  254. format(matInfo[id][MatFont],30,matInfo[ID][MatFont]);
  255. CrearTexto(playerid, 2,id,matInfo[ID][MatX],matInfo[ID][MatY],matInfo[ID][MatZ],matInfo[ID][MatRX],matInfo[ID][MatY],matInfo[ID][MatZ]);
  256. EditDynamicObject(playerid,matInfo[id][MatObj]);
  257. format(string,sizeof(string),""MYRED"[MATERIAL]"MYWHITE" Material ID %d has been duplicated on ID: %d !",ID,id);
  258. SendClientMessage(playerid,-1,string);
  259. }
  260. case 10:
  261. {
  262. Destruir_Texto(ID);
  263. format(string,sizeof(string),""MYRED"[MATERIAL]"MYWHITE" Material ID: %d has been deleted !",ID);
  264. SendClientMessage(playerid,-1,string);
  265. format(string, sizeof(string), CarpetaTextos, ID);
  266. fremove(string);
  267. }
  268. case 11: ShowPlayerDialog(playerid, DIALOG_CHANGEOBJECT , DIALOG_STYLE_INPUT, "Sistema de textos - Object ID","Please enter an object ID to change!.", "Aceptar", "Atrás");
  269. case 12: ShowPlayerDialog(playerid, DIALOG_CHANGEINDEX , DIALOG_STYLE_INPUT, "Sistema de textos - Material Index","Please enter an material index to set the Text on, (0 to 15)!.", "Aceptar", "Atrás");
  270. }
  271. }
  272. if(dialogid == DIALOG_TEXT)
  273. {
  274. if(!response) return ShowPlayerDialog(playerid, DIALOG_MATS , DIALOG_STYLE_LIST, "Sistema de textos", "Cambiar texto\nCambiar fuente\nCambiar color\nCambiar tamaño fuete\nCambiar color de fondo\nCambiar alineación\nTexto en negrita\nCambiar resolución\nEditar posición de texto\nDuplicar texto\nEliminar texto\nCambiar ID objeto\nCambiar Material Index", "Seleccionar", "Cerrar");
  275. if(strlen(inputtext) >= MAX_TEXT || strlen(inputtext) <= 0 ) return SendClientMessage(playerid, -1 ,""MYRED"[MATERIAL]"MYWHITE" Text may not be less than 0 or more than "#MAX_TEXT"!");
  276.  
  277. SetDynamicObjectMaterialText(matInfo[ID][MatObj] , matInfo[ID][MatIndex] , inputtext , matInfo[ID][MatRes] , matInfo[ID][MatFont], matInfo[ID][MatSize], matInfo[ID][MatBold], matInfo[ID][MatColor], matInfo[ID][MatBGC],matInfo[ID][MatALG]);
  278. format(matInfo[ID][MatText],128,inputtext);
  279. ShowPlayerDialog(playerid, DIALOG_MATS , DIALOG_STYLE_LIST, "Sistema de textos", "Cambiar texto\nCambiar fuente\nCambiar color\nCambiar tamaño fuete\nCambiar color de fondo\nCambiar alineación\nTexto en negrita\nCambiar resolución\nEditar posición de texto\nDuplicar texto\nEliminar texto\nCambiar ID objeto\nCambiar Material Index", "Seleccionar", "Cerrar");
  280. }
  281. if(dialogid == DIALOG_ALLIGNMENT)
  282. {
  283. if(!response) return ShowPlayerDialog(playerid, DIALOG_MATS , DIALOG_STYLE_LIST, "Sistema de textos", "Cambiar texto\nCambiar fuente\nCambiar color\nCambiar tamaño fuete\nCambiar color de fondo\nCambiar alineación\nTexto en negrita\nCambiar resolución\nEditar posición de texto\nDuplicar texto\nEliminar texto\nCambiar ID objeto\nCambiar Material Index", "Seleccionar", "Cerrar");
  284. matInfo[ID][MatALG] = listitem;
  285. ShowPlayerDialog(playerid, DIALOG_ALLIGNMENT , DIALOG_STYLE_LIST, "Sistema de textos - Choose Allignment", "Left Allignment\nCenter Allignment\nRight Allignment", "Seleccionar", "Atrás");
  286. SetDynamicObjectMaterialText(matInfo[ID][MatObj] , matInfo[ID][MatIndex] , matInfo[ID][MatText] , matInfo[ID][MatRes], matInfo[ID][MatFont], matInfo[ID][MatSize], matInfo[ID][MatBold], matInfo[ID][MatColor], matInfo[ID][MatBGC],matInfo[ID][MatALG]);
  287. }
  288. if(dialogid == DIALOG_RESOLUTION)
  289. {
  290. if(!response) return ShowPlayerDialog(playerid, DIALOG_MATS , DIALOG_STYLE_LIST, "Sistema de textos", "Cambiar texto\nCambiar fuente\nCambiar color\nCambiar tamaño fuete\nCambiar color de fondo\nCambiar alineación\nTexto en negrita\nCambiar resolución\nEditar posición de texto\nDuplicar texto\nEliminar texto\nCambiar ID objeto\nCambiar Material Index", "Seleccionar", "Cerrar");
  291. matInfo[ID][MatRes] = (listitem+1) * 10;
  292. ShowPlayerDialog(playerid, DIALOG_RESOLUTION , DIALOG_STYLE_LIST, "Sistema de textos - Choose Resolution", "32x32\n64x32\n64x64\n128x32\n128x64\n128x128\n256x32\n256x64\n256x128\n256x256\n512x64\n512x128\n512x256\n512x512", "Seleccionar", "Atrás");
  293. SetDynamicObjectMaterialText(matInfo[ID][MatObj] , matInfo[ID][MatIndex] , matInfo[ID][MatText] , matInfo[ID][MatRes], matInfo[ID][MatFont], matInfo[ID][MatSize], matInfo[ID][MatBold], matInfo[ID][MatColor], matInfo[ID][MatBGC],matInfo[ID][MatALG]);
  294. }
  295. if(dialogid == DIALOG_FONTSIZE)
  296. {
  297. if(!response) return ShowPlayerDialog(playerid, DIALOG_MATS , DIALOG_STYLE_LIST, "Sistema de textos", "Cambiar texto\nCambiar fuente\nCambiar color\nCambiar tamaño fuete\nCambiar color de fondo\nCambiar alineación\nTexto en negrita\nCambiar resolución\nEditar posición de texto\nDuplicar texto\nEliminar texto\nCambiar ID objeto\nCambiar Material Index", "Seleccionar", "Cerrar");
  298. if(!IsNumeric(inputtext)) return ShowPlayerDialog(playerid, DIALOG_FONTSIZE , DIALOG_STYLE_INPUT, "Sistema de textos - Font Size","Enter a Font Size\nMust be numeric", "Aceptar", "Cerrar");
  299. matInfo[ID][MatSize] = strval(inputtext);
  300. SetDynamicObjectMaterialText(matInfo[ID][MatObj] , matInfo[ID][MatIndex] , matInfo[ID][MatText] , matInfo[ID][MatRes] ,matInfo[ID][MatFont], matInfo[ID][MatSize] , matInfo[ID][MatBold], matInfo[ID][MatColor], matInfo[ID][MatBGC],matInfo[ID][MatALG]);
  301. ShowPlayerDialog(playerid, DIALOG_MATS , DIALOG_STYLE_LIST, "Sistema de textos", "Cambiar texto\nCambiar fuente\nCambiar color\nCambiar tamaño fuete\nCambiar color de fondo\nCambiar alineación\nTexto en negrita\nCambiar resolución\nEditar posición de texto\nDuplicar texto\nEliminar texto\nCambiar ID objeto\nCambiar Material Index", "Seleccionar", "Cerrar");
  302. }
  303. if(dialogid == DIALOG_FONT)
  304. {
  305. if(!response) return ShowPlayerDialog(playerid, DIALOG_MATS , DIALOG_STYLE_LIST, "Sistema de textos", "Cambiar texto\nCambiar fuente\nCambiar color\nCambiar tamaño fuete\nCambiar color de fondo\nCambiar alineación\nTexto en negrita\nCambiar resolución\nEditar posición de texto\nDuplicar texto\nEliminar texto\nCambiar ID objeto\nCambiar Material Index", "Seleccionar", "Cerrar");
  306. SetDynamicObjectMaterialText(matInfo[ID][MatObj] , matInfo[ID][MatIndex] , matInfo[ID][MatText] , matInfo[ID][MatRes],inputtext, matInfo[ID][MatSize], matInfo[ID][MatBold], matInfo[ID][MatColor], matInfo[ID][MatBGC],matInfo[ID][MatALG]);
  307. format(matInfo[ID][MatFont],128,inputtext);
  308. for(new a=0; a<sizeof(FontInfo); a++)
  309. {
  310. format(string, sizeof(string), "%s%s\n", string, FontInfo[a][FontName]);
  311. }
  312. ShowPlayerDialog(playerid, DIALOG_FONT , DIALOG_STYLE_LIST, "Sistema de textos - Choose Font", string, "Seleccionar", "Atrás");
  313. }
  314. if(dialogid == DIALOG_FONTCOLOR)
  315. {
  316. if(!response) return ShowPlayerDialog(playerid, DIALOG_MATS , DIALOG_STYLE_LIST, "Sistema de textos", "Cambiar texto\nCambiar fuente\nCambiar color\nCambiar tamaño fuete\nCambiar color de fondo\nCambiar alineación\nTexto en negrita\nCambiar resolución\nEditar posición de texto\nDuplicar texto\nEliminar texto\nCambiar ID objeto\nCambiar Material Index", "Seleccionar", "Cerrar");
  317. switch(listitem)
  318. {
  319. case 0: matInfo[ID][MatColor] = MRED;
  320. case 1: matInfo[ID][MatColor] = MBLUE;
  321. case 2: matInfo[ID][MatColor] = MYELLOW;
  322. case 3: matInfo[ID][MatColor] = MORANGE;
  323. case 4: matInfo[ID][MatColor] = MPURPLE;
  324. case 5: matInfo[ID][MatColor] = MGREEN;
  325. case 6: matInfo[ID][MatColor] = MLBLUE;
  326. case 7: matInfo[ID][MatColor] = MWHITE;
  327. case 8: matInfo[ID][MatColor] = MBLACK;
  328. case 9: matInfo[ID][MatColor] = MCYAN;
  329. case 10: matInfo[ID][MatColor] = MPINK;
  330. case 11: matInfo[ID][MatColor] = MBROWN;
  331. case 12: matInfo[ID][MatColor] = MLPURPLE;
  332. case 13: matInfo[ID][MatColor] = MLGREEN;
  333. case 14: matInfo[ID][MatColor] = MGRAY;
  334. }
  335. SetDynamicObjectMaterialText(matInfo[ID][MatObj] , matInfo[ID][MatIndex] , matInfo[ID][MatText] , matInfo[ID][MatRes],matInfo[ID][MatFont], matInfo[ID][MatSize], matInfo[ID][MatBold],matInfo[ID][MatColor], matInfo[ID][MatBGC],matInfo[ID][MatALG]);
  336. ShowPlayerDialog(playerid, DIALOG_FONTCOLOR , DIALOG_STYLE_LIST, "Sistema de textos - Choose Color", ""MYRED"Red\n"MYBLUE"Blue\n"MYYELLOW"Yellow\n"MYORANGE"Orange\n"MYPURPLE"Purple\n"MYGREEN"Green\n"MYLBLUE"Light Blue\n"MYWHITE"White\n"MYBLACK"Black\n"MYCYAN"Cyan\n"MYPINK"Pink\n"MYBROWN"Brown\n"MYLPURPLE"Light Purple\n"MYLGREEN"Light Green\n"MYGREY"Gray", "Seleccionar", "Atrás");
  337. }
  338. if(dialogid == DIALOG_BGCOLOR)
  339. {
  340. if(!response) return ShowPlayerDialog(playerid, DIALOG_MATS , DIALOG_STYLE_LIST, "Sistema de textos", "Cambiar texto\nCambiar fuente\nCambiar color\nCambiar tamaño fuete\nCambiar color de fondo\nCambiar alineación\nTexto en negrita\nCambiar resolución\nEditar posición de texto\nDuplicar texto\nEliminar texto\nCambiar ID objeto\nCambiar Material Index", "Seleccionar", "Cerrar");
  341. switch(listitem)
  342. {
  343. case 0: matInfo[ID][MatBGC] = MRED;
  344. case 1: matInfo[ID][MatBGC] = MBLUE;
  345. case 2: matInfo[ID][MatBGC] = MYELLOW;
  346. case 3: matInfo[ID][MatBGC] = MORANGE;
  347. case 4: matInfo[ID][MatBGC] = MPURPLE;
  348. case 5: matInfo[ID][MatBGC] = MGREEN;
  349. case 6: matInfo[ID][MatBGC] = MLBLUE;
  350. case 7: matInfo[ID][MatBGC] = MWHITE;
  351. case 8: matInfo[ID][MatBGC] = MBLACK;
  352. case 9: matInfo[ID][MatBGC] = MCYAN;
  353. case 10: matInfo[ID][MatBGC] = MPINK;
  354. case 11: matInfo[ID][MatBGC] = MBROWN;
  355. case 12: matInfo[ID][MatBGC] = MLPURPLE;
  356. case 13: matInfo[ID][MatBGC] = MLGREEN;
  357. case 14: matInfo[ID][MatBGC] = MGRAY;
  358. case 15: matInfo[ID][MatBGC] = 0;
  359. }
  360. ShowPlayerDialog(playerid, DIALOG_BGCOLOR , DIALOG_STYLE_LIST, "Sistema de textos - Background Color",""MYRED"Red\n"MYBLUE"Blue\n"MYYELLOW"Yellow\n"MYORANGE"Orange\n"MYPURPLE"Purple\n"MYGREEN"Green\n"MYLBLUE"Light Blue\n"MYWHITE"White\n"MYBLACK"Black\n"MYCYAN"Cyan\n"MYPINK"Pink\n"MYBROWN"Brown\n"MYLPURPLE"Light Purple\n"MYLGREEN"Light Green\n"MYGREY"Gray\nNo Background", "Seleccionar", "Atrás");
  361. SetDynamicObjectMaterialText(matInfo[ID][MatObj] , matInfo[ID][MatIndex] , matInfo[ID][MatText] , matInfo[ID][MatRes],matInfo[ID][MatFont], matInfo[ID][MatSize], matInfo[ID][MatBold] ,matInfo[ID][MatColor], matInfo[ID][MatBGC] ,matInfo[ID][MatALG]);
  362. }
  363. if(dialogid == DIALOG_CHANGEOBJECT)
  364. {
  365. if(!response) return ShowPlayerDialog(playerid, DIALOG_MATS , DIALOG_STYLE_LIST, "Sistema de textos", "Cambiar texto\nCambiar fuente\nCambiar color\nCambiar tamaño fuete\nCambiar color de fondo\nCambiar alineación\nTexto en negrita\nCambiar resolución\nEditar posición de texto\nDuplicar texto\nEliminar texto\nCambiar ID objeto\nCambiar Material Index", "Seleccionar", "Cerrar");
  366. if(!IsNumeric(inputtext)) return ShowPlayerDialog(playerid, DIALOG_CHANGEOBJECT , DIALOG_STYLE_INPUT, "Sistema de textos - Object ID","Please enter an object ID to change!\n{FF0000}ERROR: Must be numeric", "Aceptar", "Atrás");
  367.  
  368. DestroyDynamicObject(matInfo[ID][MatObj]);
  369. matInfo[ID][MatObjectID] = strval(inputtext);
  370. CrearTexto(playerid, 0,ID,matInfo[ID][MatX],matInfo[ID][MatY],matInfo[ID][MatZ],matInfo[ID][MatRX],matInfo[ID][MatRY],matInfo[ID][MatRZ]);
  371. ShowPlayerDialog(playerid, DIALOG_MATS , DIALOG_STYLE_LIST, "Sistema de textos", "Cambiar texto\nCambiar fuente\nCambiar color\nCambiar tamaño fuete\nCambiar color de fondo\nCambiar alineación\nTexto en negrita\nCambiar resolución\nEditar posición de texto\nDuplicar texto\nEliminar texto\nCambiar ID objeto\nCambiar Material Index", "Seleccionar", "Cerrar");
  372. }
  373. if(dialogid == DIALOG_CHANGEINDEX)
  374. {
  375. if(!response) return ShowPlayerDialog(playerid, DIALOG_MATS , DIALOG_STYLE_LIST, "Sistema de textos", "Cambiar texto\nCambiar fuente\nCambiar color\nCambiar tamaño fuete\nCambiar color de fondo\nCambiar alineación\nTexto en negrita\nCambiar resolución\nEditar posición de texto\nDuplicar texto\nEliminar texto\nCambiar ID objeto\nCambiar Material Index", "Seleccionar", "Cerrar");
  376. if(!IsNumeric(inputtext)) return ShowPlayerDialog(playerid, DIALOG_CHANGEINDEX , DIALOG_STYLE_INPUT, "Sistema de textos - Material Index","Please enter an material index to set the Text on, (0 to 15)!\n{FF0000}ERROR: Must be numeric.", "Aceptar", "Atrás");
  377. if(strval(inputtext) > 15 || strval(inputtext) < 0) return ShowPlayerDialog(playerid, DIALOG_CHANGEINDEX , DIALOG_STYLE_INPUT, "Sistema de textos - Material Index","Please enter an material index to set the Text on, (0 to 15)!\n{FF0000}ERROR: Material index ranges from 0 to 15.", "Aceptar", "Atrás");
  378. DestroyDynamicObject(matInfo[ID][MatObj]);
  379. matInfo[ID][MatIndex] = strval(inputtext);
  380. CrearTexto(playerid, 0,ID,matInfo[ID][MatX],matInfo[ID][MatY],matInfo[ID][MatZ],matInfo[ID][MatRX],matInfo[ID][MatRY],matInfo[ID][MatRZ]);
  381. ShowPlayerDialog(playerid, DIALOG_MATS , DIALOG_STYLE_LIST, "Sistema de textos", "Cambiar texto\nCambiar fuente\nCambiar color\nCambiar tamaño fuete\nCambiar color de fondo\nCambiar alineación\nTexto en negrita\nCambiar resolución\nEditar posición de texto\nDuplicar texto\nEliminar texto\nCambiar ID objeto\nCambiar Material Index", "Seleccionar", "Cerrar");
  382. }
  383. return 0;
  384. }
  385.  
  386. public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
  387. {
  388. new string[100];
  389. new editing = GetPVarInt(playerid,"matID");
  390.  
  391. if(response == EDIT_RESPONSE_UPDATE)
  392. {
  393. SetDynamicObjectPos(objectid, x, y, z);
  394. SetDynamicObjectRot(objectid, rx, ry, rz);
  395. }
  396. if(response == EDIT_RESPONSE_CANCEL)
  397. {
  398. if(editing >= 0)
  399. {
  400. SendClientMessage(playerid, -1 , ""MYRED"[MATERIAL]"MYWHITE" Material editing canceled !");
  401. DeletePVar(playerid, "matID");
  402. }
  403. }
  404. if(response == EDIT_RESPONSE_FINAL)
  405. {
  406. SetDynamicObjectPos(objectid, x, y, z);
  407. SetDynamicObjectRot(objectid, rx, ry, rz);
  408. if(editing >= 0)
  409. {
  410. matInfo[editing][MatX] = x;
  411. matInfo[editing][MatY] = y;
  412. matInfo[editing][MatZ] = z;
  413. matInfo[editing][MatRX] = rx;
  414. matInfo[editing][MatRY] = ry;
  415. matInfo[editing][MatRZ] = rz;
  416. format(string, sizeof(string), ""MYRED"[MATERIAL]"MYWHITE" You have succesfully edited ID: %d's Material", editing);
  417. SendClientMessage(playerid, -1, string);
  418. DeletePVar(playerid, "matID");
  419. SetDynamicObjectPos(objectid, x, y, z);
  420. SetDynamicObjectRot(objectid, rx, ry, rz);
  421. }
  422. }
  423. return 1;
  424. }
  425.  
  426. forward CrearTexto(Jugador, type,id,Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz);
  427. public CrearTexto(Jugador, type,id,Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz)
  428. {
  429. if(type == 1)
  430. {
  431. for (new i = 0; i != MAX_MATERIALS; i ++)
  432. {
  433. if(!matInfo[i][TextoExiste])
  434. {
  435. format(matInfo[id][MatCreador], 32, NombreEx(Jugador));
  436. matInfo[id][MatX] = x;
  437. matInfo[id][MatY] = y;
  438. matInfo[id][MatZ] = z;
  439. matInfo[id][MatRX] = rx;
  440. matInfo[id][MatRY] = ry;
  441. matInfo[id][MatRZ] = rz;
  442. matInfo[id][MatSize] = 25;
  443. matInfo[id][MatBGC] = MBLUE;
  444. matInfo[id][MatALG] = 1;
  445. matInfo[id][MatBold] = 0;
  446. matInfo[id][MatRes] = 90;
  447. matInfo[id][MatIndex] = MATERIAL_DEFAULT_INDEX;
  448. matInfo[id][MatObj] = CreateDynamicObject(matInfo[id][MatObjectID], matInfo[id][MatX] , matInfo[id][MatY], matInfo[id][MatZ], matInfo[id][MatRX], matInfo[id][MatRY], matInfo[id][MatRZ], -1);
  449. SetDynamicObjectMaterialText(matInfo[id][MatObj] , matInfo[id][MatIndex] , matInfo[id][MatText] , matInfo[id][MatRes],matInfo[id][MatFont], matInfo[id][MatSize], matInfo[id][MatBold] , matInfo[id][MatColor],matInfo[id][MatBGC],matInfo[id][MatALG]);
  450. mysql_tquery(g_iHandle, "INSERT INTO `TEXTOS` (`MatCreador`) VALUES(0)", "CrearTexto2", "ddd", i, Jugador, type);
  451. }
  452. }
  453. }
  454. }
  455.  
  456. forward CrearTexto2(textoid, playerid, type);
  457. public CrearTexto2(textoid, playerid, type)
  458. {
  459. if(textoid == -1 || !matInfo[textoid][TextoExiste]) return 1;
  460. matInfo[textoid][MatObjectID] = cache_insert_id();
  461. GuardarTextos(textoid);
  462. return 1;
  463. }
  464. forward CargarTextos();
  465. public CargarTextos()
  466. {
  467. static rows;
  468. cache_get_row_count(rows);
  469. for (new i = 0; i < rows; i ++) if(i < MAX_MATERIALS)
  470. {
  471. matInfo[i][TextoExiste] = 1;
  472. cache_get_value_name_int(i, "MatObjectID",matInfo[i][MatObjectID]);
  473. cache_get_value_name_float(i, "MatX", matInfo[i][MatX]);
  474. cache_get_value_name_float(i, "MatY", matInfo[i][MatY]);
  475. cache_get_value_name_float(i, "MatZ", matInfo[i][MatZ]);
  476. cache_get_value_name_float(i, "MatRX", matInfo[i][MatRX]);
  477. cache_get_value_name_float(i, "MatRY", matInfo[i][MatRY]);
  478. cache_get_value_name_float(i, "MatRZ", matInfo[i][MatRZ]);
  479. cache_get_value(i, "MatText", matInfo[i][MatText], MAX_TEXT);
  480. cache_get_value(i, "MatFont", matInfo[i][MatFont], MAX_FONT_NAME);
  481. cache_get_value_name_int(i, "MatColor",matInfo[i][MatColor]);
  482. cache_get_value_name_int(i, "MatSize",matInfo[i][MatSize]);
  483. cache_get_value_name_int(i, "MatBGC",matInfo[i][MatBGC]);
  484. cache_get_value_name_int(i, "MatALG",matInfo[i][MatALG]);
  485. cache_get_value_name_int(i, "MatBold",matInfo[i][MatBold]);
  486. cache_get_value_name_int(i, "MatRes",matInfo[i][MatRes]);
  487. cache_get_value_name_int(i, "MatIndex",matInfo[i][MatIndex]);
  488. cache_get_value(i, "MatCreador", matInfo[i][MatCreador], 32);
  489. }
  490. }
  491. forward GuardarTextos(Texto);
  492. public GuardarTextos(Texto)
  493. {
  494. new query[255];
  495. format(query, sizeof(query), "UPDATE `TEXTOS` SET `MatCreador` = '%s', `MatX` = '%.4f', `MatY` = '%.4f', `MatZ` = '%.4f', `MatRX` = '%.4f', `MatRY` = '%.4f', `MatRZ` = '%.4f', `MatText` = '%d', `MatFont` = '%d', `MatColor` = '%d', `MatSize` = '%d', `MatBGC` = '%d', `MatALG` = '%d', `MatBold` = '%d',`MatRes` = '%d',`MatIndex` = '%d' WHERE `MatObjectID` = '%d'",
  496.  
  497. matInfo[Texto][MatCreador],
  498. matInfo[Texto][MatX],
  499. matInfo[Texto][MatY],
  500. matInfo[Texto][MatZ],
  501. matInfo[Texto][MatRX],
  502. matInfo[Texto][MatRY],
  503. matInfo[Texto][MatRZ],
  504. matInfo[Texto][MatText],
  505. matInfo[Texto][MatFont],
  506. matInfo[Texto][MatColor],
  507. matInfo[Texto][MatSize],
  508. matInfo[Texto][MatBGC],
  509. matInfo[Texto][MatALG],
  510. matInfo[Texto][MatBold],
  511. matInfo[Texto][MatRes],
  512. matInfo[Texto][MatIndex],
  513. matInfo[Texto][MatObjectID]);
  514. return mysql_tquery(g_iHandle, query);
  515. }
  516. forward Destruir_Texto(textoid);
  517. public Destruir_Texto(textoid)
  518. {
  519. if(textoid != -1 && matInfo[textoid][TextoExiste])
  520. {
  521. new string[64];
  522. format(string, sizeof(string), "DELETE FROM `TEXTOS` WHERE `MatObjectID` = '%d'", matInfo[textoid][MatObjectID]);
  523. mysql_tquery(g_iHandle, string);
  524. matInfo[textoid][MatObjectID] = 0;
  525. matInfo[textoid][TextoExiste] = 0;
  526. DestroyDynamicObject(matInfo[textoid][MatObjectID]);
  527. matInfo[textoid][MatIndex] = MATERIAL_DEFAULT_INDEX;
  528. }
  529. return 1;
  530. }
  531.  
  532. stock NombreEx(playerid)
  533. {
  534. new string[24];
  535. GetPlayerName(playerid,string,24);
  536. new str[24];
  537. strmid(str,string,0,strlen(string),24);
  538. for(new i = 0; i < MAX_PLAYER_NAME; i++)
  539. {
  540. if (str[i] == '_') str[i] = ' ';
  541. }
  542. return str;
  543. }
  544.  
  545. IsNumeric(const string[])
  546. {
  547. for (new i = 0, j = strlen(string); i < j; i++)
  548. {
  549. if (string[i] > '9' || string[i] < '0') return 0;
  550. }
  551. return 1;
  552. }
Advertisement
Add Comment
Please, Sign In to add comment