Jump to content

Recomendaciones para scripters iniciados, novatos y nuevos


Otto

Recommended Posts

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! :P

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 :evil:

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 by Guest
Link to comment
  • 3 weeks later...
  • 3 weeks later...
  • 4 months later...
  • 11 months later...
  • 5 months later...
  • 2 weeks later...
  • 1 year later...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...