Otto Posted February 10, 2013 Share Posted February 10, 2013 (edited) Hace poco Renkon escribió un post, dando link a un post en ingles hecho por Qais, un amigo mío. Escrito a las apuradas. Me estoy llendo de viaje por 15días y bueno, escribo esto para intentar ayudar a los novatos en este infinito mundo del scripting.Seré corto y conciso (lo más facil para mi). He notado que hay varios iniciados que andan solicitando ayuda y pues, encontre este thread muy interesante, que NO TRATA DE SCRIPTING, si no de ORGANIZACION DE ÉL. No aprenderás nada nuevo acerca del scripteo. Aprenderás a organizar y mejorar el nivel de entendimiento de tu código, haciéndolo más legible para otras personas. Les dejo el link. Está en inglés. viewtopic.php?f=148&t=41066 Un saludo. Nos vemos en 15 días Me tomé un tiempo para traducirlo, ya que el Google Translator traduce mal, así que aquí lo tienen. ______________________________________________________________ Para hacer que su codigo sea más fácil de entender y modificar, les recomiendo tomarse un tiempo para leer las siguientes recomendaciones: Diseño de códigos recomendado Cuando estás scripteando, es recomendado dejar espacios (usando el tabulador o cuatro espacios en blanco) para identificar mejor las lineas. Vea el ejemplo a continuación. local scope1 = math.random(3) local debug = 1 if scope1 == 1 then-- new scope if debug == 1 then outputDebugString("Testing feature 'balls'") if balls then outputDebugString('Balls were ripped') else outputDebugString('Balls survived') end end end Comentando el código Si usted va a presentar el código al resto de la comunidad, comentar su código es un paso primordial para que el resto de la comunidad lo entienda. No es necesario para todas las lineas, solo para aquellas que podrían ser difíciles de entender. Otra razón por la cual comentar las lineas de tu código, es para organizar y separar el código en diferentes partes. Observe el siguiente ejemplo. -------------------------- -- RANDOM COMMANDS -- -------------------------- local trainText = '%s likes trains.' function trainCommand() if type(text) == 'string' then -- check if text var is a string -- Format text to include player name outputChatBox( trainText:format( getPlayerName(source) ), root, 255, 0, 0 ) --[[ outputServerLog( "CMD: "..getPlayerName(source) .. " likes trains." ) ]] end end addCommandHandler('trains', trainCommand) Para comentar una línea debe poner dos guiones al comienzo de la frase, sin embargo, si usted desea comentar un fragmento del código, sólo necesita poner un --[[ and ]] Organizando su código En un supermercado, todas las botellas de cerveza, vinos, vodka, están en una única sección de "Alcohol", ¿Cierto? Al trabajar con códigos para recursos en MTA, usted debe asegurar que el código sea legible, por lo que tendrá que poner ciertos componentes en el orden correcto. Agregar un evento - utilizando addEvent para permitir llamadas de custom event handlers. Variables - definiendo las variables PRESET, por ejemplo una tabla de idioma ID o opciones. Funciones - creando funciones. Handlers - usando AddEventHandler, esto debe estar justo después de la función. Vea el siguiente ejemplo: -- EVENTS addEvent('loadSpecialVehicle', true) -- VARIABLES local specialModel = 411 function SpecialVehicle( ) txd = engineLoadTXD ( "data/infernus.txd" ) engineImportTXD ( txd, specialModel ) dff = engineLoadDFF ( "data/infernus.dff", specialModel ) engineReplaceModel ( dff, specialModel ) end addEventHandler ( 'loadSpecialVehicle', root, SpecialVehicle ) NO TE DESESPERES! No haga variables como reallycoolfeatureenablebooleanvalue para habilitar una característica realmente buena que sólo es un boolean value. En su lugar debe usar algo corto y claro, por ejemplo, en lugar del nombre de la variable anterior, se puede utilizar enableCoolFeature. Registros de scripting (logs) Todas las lineas de debug (es decir, INFO, WARNING, ERROR) se registran, y se guardan en un archivo específico dependiendo de donde la línea de debug fue ejecutada, en el cliente o en el servidor. Server log: \deathmatch\logs\server.log (esto puede ser o no el caso si se desactiva o modificar esto en el conf). Client log: \MTA\clientscript.log Usted debería limpiar los registros (log) periódicamente, si está interesado en ahorrar espacio en el disco. MI CÓDIGO NO FUNCIONA Si su código no está funcionando como usted lo deseaba, utilice el comando /debugscript 3 y tenga en cuenta que algunos servidores habilitan esto para todos los usuarios, sin embargo, en la mayoría de los servidores y los servidores predeterminados se requiere ser administrador(*?). Hay tres tipos de errores: • ERROR • WARNING • INFO A continuación se muestran el número de mensajes debug que son generalmente estructurados: ERROR: devil/666.lua:666 attempt to index a nil value Errors and warnings are structed as per above, info messages are just structured with the 'INFO: ' prefix. devil/666.lua explains that the error is in the resource named devil and the file named 666.lua :666 explains that the error is on line 666 after that, the actual error is output. Si el evento que utilizas NO da errores, debe revisar su código. Por ejemplo, si lo que quieres hacer comienza con un comando. Ve a la linea que contiene el comando y luego ir a su función, y comprobar los errores de cada línea. Si el recurso sigue sin funcionar, compruebe el archivo de meta.xml, es posible que su meta.xml tenga errores de sintaxis o no agregó el script al archivo. Si usted está cansado o harto de entrar en el juego sólo para encontrar otro error, entonces un poco software de 3ra parte no está mal, y podrá utilizarlo. Tenga en cuenta que estos enlaces no pueden analizar y mostrar los errores en las funciones, sólo de sintaxis (si faltan paréntesis, etc.) El software: • Notepad++ • LuaEdit • MTA Script editor Para más información Visita la wiki en español en el siguiente link: viewtopic.php?f=122&t=30847 (*?) = el creador del post no está seguro en cuanto a eso El post fue creado por el usuario @qaisjp_ por lo que todo el material es de su autoría, esto es solo una traducción, cualquier duda se la envían a él en ingles. Edited February 10, 2013 by Guest Link to comment
Arsilex Posted February 10, 2013 Share Posted February 10, 2013 (edited) estaria bien que este post no bajara, osea pegarlo arriba Edited August 12, 2016 by Guest Link to comment
zero Posted February 10, 2013 Share Posted February 10, 2013 Gracias por tomarte tu tiempo Otto, les servirá a muchos nuevos y no tan nuevos. Link to comment
AlvareZ_ Posted February 11, 2013 Share Posted February 11, 2013 Bien Otto, Sera de muchas ayuda a aquellos que no saben mucho ingles ( yo u.u ) Link to comment
iFoReX Posted February 27, 2013 Share Posted February 27, 2013 Buen trabajo Otto, Aqui te doy mi premio : Link to comment
Otto Posted February 27, 2013 Author Share Posted February 27, 2013 A disfrutar del pastel Link to comment
JuliDiablo Posted March 15, 2013 Share Posted March 15, 2013 ¿tenes alguna guía referida a lo que sería el cliente? Es decir, comandos por defecto y demás. A los que venimos del otro multi jugador nos vendría bien Link to comment
Castillo Posted March 15, 2013 Share Posted March 15, 2013 Aqui lo tenes el manual del cliente: https://wiki.multitheftauto.com/index.ph ... Deathmatch Link to comment
JuliDiablo Posted March 16, 2013 Share Posted March 16, 2013 Muchas gracias Solid. No lo había visto porque siempre entro desde /funcion y no al indice. Seguramente encontrare otras cosas que me sirvan en la wiki mirando desde la main_page. Saludos! Link to comment
Anyelberth Posted July 17, 2013 Share Posted July 17, 2013 Gracias Otto, Es De Mucha Ayuda Link to comment
UserToDelete Posted July 8, 2014 Share Posted July 8, 2014 Buen aporte Otto,... podrías ayudarme, quiero poner una opción en mi server para que un jugador dispare solamente con la mano izquierda. Creo que eso no es posible, es cosa de GTA (creo) Link to comment
Digore Posted January 2, 2015 Share Posted January 2, 2015 Grandísimo post, Otto. Pienso que tu trabajo ayudará a mucha gente. Buen trabajo!! Link to comment
soft driver Posted January 14, 2015 Share Posted January 14, 2015 Es impresionante ver como se lo trabajan algunos, enhorabuena por toda la información aportada. Link to comment
huguito76 Posted April 27, 2016 Share Posted April 27, 2016 Muchas gracias, muy util el thread Link to comment
Recommended Posts