Garry's Mod

Garry's Mod

Not enough ratings
Cómo usar lua_run en hammer. (Garrysmod)
By Oitnemood
This guide will cover the basic and advanced ways lua_run can be used.

guía en inglés por "snipe 2.0"
https://gtm.steamproxy.vip/sharedfiles/filedetails/?id=2921800961
   
Award
Favorite
Favorited
Unfavorite
Primeros pasos
Muy bien, si estás buscando esto entonces voy a suponer que usted sabe cómo abrir los archivos del juego y el uso de martillo, también necesitará algún editor de texto como Notepad + + + [notepad-plus-plus.org][notepad-plus-plus.org], pero voy a recomendar Visual Studio [visualstudio.microsoft.com] con el mod de Garry Lua [marketplace.visualstudio.com] plugin.

Para empezar spawn una entidad lua_run.


Si quieres que lua_run se ejecute al iniciar el mapa, dale un nombre y usa un logic_auto y envía un comando a lua_run para que se ejecute al spawnear el mapa.
Ejecución de comandos de consola
Si has estado mapeando sabrás que point_servercommand para poner comando de consola, no funciona en Garry's mod pero usando lua_run puedes evitarlo.

La entidad lua_run puede ser tratada como la consola donde puedes ejecutar comandos, aunque no he mirado mucho en ella los comandos que afectan a los jugadores no parecen funcionar.

En la entidad lua_run en la casilla "code" pon RunConsoleCommand('command', number)[wiki.facepunch.com] donde "command" es una cadena[en.wikipedia.org] del comando que quieras y "number" es un float[en.wikipedia.org] del número que quieras

En la entidad lua_run en código pon este comando como en la imagen
RunConsoleCommand('comando', numero)
Ejecución de scripts
Ahora ejecutar comandos es genial y todo eso pero como probablemente notaste hacer scripts en esa cajita es difícil. Así que te voy a mostrar cómo ejecutar archivos de secuencia de comandos a continuación.

Para empezar en la entidad run_lua en código pon include()


Ahora la diferencia con este comando es que necesitas configurar una estructura de archivos para que sepa donde encontrar el archivo script.

1) Abre los archivos del juego Garry's mod.
2) Ir a (Ubicación del juego)\GarrysMod\garrysmod\addons
3) Crea una nueva carpeta y llámala "mapcontent".



4) En "mapcontent" hacer un archivo llamado "lua"


5) En lua haga un archivo de texto y renómbrelo "Nombre de archivo.lua" y RECUERDE. Siempre necesita tener ".lua" al final del nombre del archivo, para que el juego pueda usarlo.


Ahora copia el nombre del archivo, luego vuelve a hammer y añade el nombre del archivo en el campo
include('NombreArchivo.lua')


Por último, si tienes experiencia con la programación de addons, te irá bien, ya que los scripts de los mapas son muy similares; si no la tienes, ahora es un buen momento para aprender.
Recursos didácticos y ejemplos
La programación de scripts de mapas puede ser difícil para empezar ya que hay muy poca información sobre "lua_run" como me tomó 4 horas para investigar todo esto.

Nota al margen: Descubrí que no se puede usar " para cadenas, en su lugar se usa '


La wiki de Garry's mod es un buen recurso, ya que proporciona información sobre los comandos que puedes utilizar.
Garry's mod wiki[wiki.facepunch.com]

También existen tutoriales en vídeo.
Valve Hammer Tutorial - lua_run (entidad exclusiva de gmod)
Omni Games Garry's mod: Tutorial Lua
<CODE AZUL> Garry's mod Lua



Nota al margen - 1: No he probado a ejecutar scripts de mapas en un servidor, pero voy a suponer que la estructura de archivos es la misma o estaría en la carpeta lua en alguna parte.

Nota al margen - 2: Debería ser posible utilizar archivos lua de addons, pero en mis pruebas limitadas no he conseguido que funcione.

Ejemplo básico de comentarios en código, variables, impresión en consola y chat.
-- Vars local NumA = 42 local NumB = 7 -- Principal print('Hola Mundo') print(NumA - NumB) PrintMessage(HUD_PRINTTALK, 'Hola Chat')

Ejemplo de comentarios multilínea, bucles for, búsqueda de entidades por clase y nombre
--[[ -- Vars NumA = 42 NumB = 7 -- Principal print('Hola Consola') print(NumA - NumB) PrintMessage(HUD_PRINTTALK, 'Hola Chat') --]] for k, v in ipairs( ents.FindByClass('Jugador') ) do PrintMessage(HUD_PRINTTALK, v:Nombre()) end
La clase 'Player' puede encontrarse en la wiki del mod de Garry en Classes
2 Comments
Oitnemood  [author] 14 Nov, 2023 @ 3:33pm 
@snipe 2.0 good :cleankey:
snipe 2.0 14 Nov, 2023 @ 12:32pm 
Traductor de Google: Hola, solo quería informarte que actualicé la versión en inglés de la guía para tener más recursos de aprendizaje.