Lua для гаррис мода
Набор условных операторов и циклов довольно типичен:
Код на Lua:
— условные операторы (ветки else может не быть)
if a == 0 then
print(«a is zero»)
else
print(«a is not zero»)
end
— сокращенная форма if/elseif/end (вместо switch/case)
if a == 0 then
print(«zero»)
elseif a == 1 then
print(«one»)
elseif a == 2 then
print(«two»)
else
print(«other»)
end
— цикл со счетчиком
for i = 1, 10 do
print(i)
end
— цикл с постусловием
repeat
b = b + 1
until b >= 5
В выражениях можно использовать такие вот операторы над переменными:
= (не-равно, да-да, вместо привычного «!=»)
* конкатенация строк (оператор «..»), напр.: s1=»hello»; s2=»world»; s3=s1..s2
* длина/размер (оператор #): s=»hello»; a = #s (‘a’ будет равно 5).
* получение элемента по индексу, напр.: s[2]
Битовых операций в языке долгое время не было, но в версии 5.2 появилась библиотека bit32, которая их реализует (как функции, не как операторы).
Я вам соврал, когда сказал что у языка один тип данных. Их у него много (как и у каждого серьезного языка):
* nil (ровным счетом ничего)
* булевы числа (true/false)
* числа (numbers) — без деления на целые/вещественные. Просто числа.
* строки — кстати, они очень похожи на строки в паскале
* функции — да, переменная может быть типа «функция»
* поток (thread)
* произвольные данные (userdata)
* таблица (table)
Если с первыми типами все понятно, то что же такое userdata? Вспомним о том, что Lua — язык встраиваемый, и обычно тесно работает с компонентами программ, написанными на других языках. Так вот, эти «чужие» компоненты могут создавать данные под свои нужды и хранить эти данные вместе с lua-объектами. Так вот, userdata — и есть подводная часть айсберга, которая с точки зрения языка lua не нужна, но и просто не обращать внимания на нее мы не можем.
А теперь самое важное в языке — таблицы.
Я вам снова соврал, когда сказал, что у языка 8 типов данных. Можете считать что он один: всё — это таблицы (это, кстати, тоже неправда). Таблица — это очень изящная структура данных, она сочетает в себе свойства массива, хэш-таблицы («ключ»-«значение»), структуры, объекта.
Код на Lua:
— Итак, вот пример таблицы как массива:
a = <1, 2, 3>— массив из 3-х элементов
print(a[2]) — выведет «2», потому что индесы считаются с единицы
— А таблица в виде разреженного массива (у которого есть не все элементы)
a = <> — пустая таблица
a[1] = 1
a[3] = 5
ПОДУМАЙТЕ: чему равно a[2] в случае разреженного массива?
В примере выше таблица ведет себя как массив, но на самом деле — у нас ведь есть ключи (индексы) и значения (элементы массива). И при этом ключами могут быть какие угодно типы, не только числа:
Код на Lua:
a = <>
a[«hello»] = true
a[«world»] = false
a[true] = 1
— или так:
a = <
hello = 123,
world = 456
>
print(a[«hello»])
print(a.hello) — то же самое, что и a[«hello»], хотя выглядит как структура с полями
Кстати, раз уж у таблицы есть ключи и значения, то можно в цикле перебрать все ключи и соответствующие им значения:
Код на Lua:
t = <
a = 3,
b = 4
>
for key, value in pairs(t) do
print(key, value) — выведет «a 3», потом «b 4»
end
А как же объекты? О них мы узнаем чуть позже, вначале — о функциях.
Вот пример обычной функции.
Код на Lua:
function add(a, b)
return a + b
end
print(add(5, 3)) — напечатает «8»
Функции языка позволяют принимать несколько аргументов, и возвращать несколько аргументов. Так аргументы, значения которых не указаны явно, считаются равными nil.
ПОДУМАЙТЕ: зачем может понадобиться возвращать несколько аргументов?
Код на Lua:
function swap(a, b)
return b, a
end
Функции могут принимать переменное количество аргументов:
Код на Lua:
— в прототипе переменное число аргументов записывается как троеточие
function sum(. )
s = 0
for _, n in pairs(arg) do — в функции обращаются к ним, как к таблице «arg»
s = s + n
end
return a
end
sum(1, 2, 3) — вернет 6
sum(1, 2, 3, 4) — вернет 10
Поскольку функции — это полноценный тип данных, то можно создавать переменные-функции, а можно передавать функции как аргументы других функций
Код на Lua:
a = function(x) return x * 2 end — функция, умножающая на 2
b = function(x) return x + 1 end — функция, увеличивающая на 1
function apply(table, f)
result = <>
for k, v in pairs(table) do
result[k] = f(v) — заменяем элемент на какую-то функцию от этого элемента
end
end
— ПОДУМАЙТЕ: что вернут вызовы
t = <1, 3, 5>
apply(t, a)
apply(t, b)
Объекты = функции + таблицы
Раз мы можем сохранять функции в переменных, то и в полях таблиц тоже сможем. А это уже получаются как-бы-методы. Для тех, кто не знаком с ООП скажу, что основная его польза (по крайней мере в Lua) в том, что функции и данные, с которыми они работают находятся рядом — в пределах одного объекта. Для тех, кто знаком с ООП скажу, что классов здесь нет, а наследование прототипное.
Перейдем к примерам. Есть у нас объект, скажем, лампочка. Она умеет гореть и не гореть. Ну а действия с ней можно сделать два — включить и выключить:
Код на Lua:
lamp = <
on = false
>
function turn_on(l)
l.on = true
end
function turn_off(l)
l.on = false
end
— это просто функции для работы со структурой
turn_on(lamp)
turn_off(lamp)
А если лампочку сделать объектом, и функции turn_off и turn_on сделать полями объекта, то получится:
Код на Lua:
lamp = <
on = false
turn_on = function(l) l.on = true end
turn_off = function(l) l.on = false end
>
lamp.turn_on(lamp)
lamp.turn_off(lamp)
Мы вынуждены передавать сам объект лампочки в качестве первого аргумента, потому что иначе наша функция не узнает с какой именно лампочкой надо работать, чтобы сменить состояние on/off. Но чтобы не быть многословными, в Lua есть сокращенная запись, которую обычно и используют — lamp:turn_on(). Итого, мы уже знаем несколько таких упрощений синтаксиса:
Код на Lua:
lamp:turn_on() — самая общепринятая запись
lamp.turn_on(lamp) — то с точки зрения синтаксиса это тоже правильно
lamp[«turn_on»](lamp) — и это
Продолжая говорить о сокращениях, функции можно описывать не только явно, как поля структуры, но и в более удобной форме:
Код на Lua:
lamp = <
on = false
>
Garry’s Mod: Чит-Мод/Cheat-Mode (Пак lua скриптов)
Всем привет. Я немножко покопался в интернете и нашел в открытом доступе пак луа читов для гарис мода.:D
Пак содержит 35 lua читов. И да я проверял не все. (Есть даже те которые могут выдать вам супер админку на серверах и просто разорвать их в клочья, а могут и заставить вас вести себя как придурка (Когда нажмешь на кнопку НЕ НАЖИМАТЬ в Defqonsploit).
По поводу установки
1) Скачиваем файл
2) Все lua файлы закидываем в папку (вот ее адрес) SteamLibrary\steamapps\common\GarrysMod\garrysmod\lua
3) Вуаля, все ваши скачанные файлы готовы к использованию
По поводу активации (лично я так делаю)
1) Открываем garrys mod
2) Заходим в одиночный режим и открываем консоль
3) В консоли пишем: sv_allowcslua 1337229 и так же sv_cheats 1337229 (тут может быть другое любое число, но важно чтобы оно было большое. Большое потому, что его будет легче найти прогой Cheat Engine)
4) Запускаем Cheat Engine и ищем там наши заветные циферки : 1337229
5) Находим результаты (Их должно быть 2) и добавляем в таблицу.
6) Сохраняем и заходим на абсолютно любой сервер в гмод
7) Открываем Cheat Engine с нашими результатами в таблице (видим что значения стали 0)
8) Меняем Значения с 0 на 1 в обоих строках.
9) Прописываем в консоль команду lua_openscript_cl (Название вашего скрипта) Например я предпочитаю Defqonsploit.lua
10) Чтобы открыть меню чита defqonsploita например, нужно просто ввестив консоли Defqon
P.S. Есть даже такие lua скрипты которые могут ддосить сервер или даже положить его на некоторое время. Есть такие которые не работают без лицензии. А есть такие которые могут вам выдать суперадминку и другие приколы. Например Deathnote.
Большинство этих читов не палит скринграб, я проверял некоторые.
И если вам понравилось, то поддержите лайком пожалуйста. :З
Скачать Cheat Engine с нашего сервера Вы сможете здесь.
Lua для гаррис мода
What can Lua do on Gmod? Lua can help you create add-ons like the ones in the workshop. You can use it to control objects in-game, create an admin system, or anything you want, as long as you know how to do it.
If you would like some help with Lua, or any other programming language, come join my server on Guilded, a fellow programmer, or I will help you as much as possible. Do not private message me on Guilded, ask your questions on the programming group, if you do I will ignore it.
Or if your running a server, you can put it in there.
Now you need to enable the console on Garry’s Mod if you already haven’t.
1.) Start Garry’s Mod.
2.) Go to Options.
3.) Go to the Keyboard Tab.
4.) Click the Advanced button.
5.) Check Enabled developer console, then click Okay.
6.) Click Okay again. Now your console will open when you press «
Now, start a game, after that open the console, and you can put lua_openscript fileName.lua to start it server side, to start it client side put lua_openscript_cl fileName.lua in the console. It should run unless you have errors, the errors will appear if that file does not exist, or theres a problem in your lua file.
These will not work if your on someon else’s server, it can be only on your own, unless you have some kind of special access to their server.
What printing does is that it prints to a developer console to post a message, this is basically used to print out errors in the console so developers can fix the issues. But it can also be used for anything. The cool thing is that print(); can take in any variable, bellow i will show you examples.
Printing normal text
Adding variables along with text
Today we will be learning about Variables, now the first thing I need to show you is different Variable Types. Below is an example of all them.
Firstly to make a Variable itself just make a name without spaces, or any special characters, but to replace spaces, use «_» ( Underscore ). Then make an equals sign after that, and make it equal anything that is specified up-top in the Variable Types.
String Variable Rules
In string variables, when you make it equal text, make sure you put quotations around the text, otherwise it doesn’t work. The reason for this is so that the interpreter [en.wikipedia.org] knows it’s not code, but just normal text.
Boolean Variable Rules
In boolean variables they can only equal true, or false. They do not require quotations because they are not normal text.
Number Variable Rules
Now this works for all Number Variable Types, they do not also require quotations because they are not normal text, and they are to be only numbers!
When using variables all you have to do to use them is reference the name, but make sure they are exactly the same! In programming it is «Caps Sensetive», meaning it has to have capitals if the variable has capital letters in it. Same with everything else which we will be learning! When referencing variables it does not need Quotations, otherwise it thinks your writing normal text, but really your trying to use a variable in code.
To add to a variable?
In this we will be learning how to use the If then Statement for making checks in your programs. First of all what is an If Then Else statement? Well they are pieces of code used to check numbers, booleans, and text to do certain things, below is an example of how it works!
Okay so one thing we need to talk about are Semi-Colons, usually you need semi-colons to end a line of code, but if it’s a grouping such as the if then else statement, or methods, etc. then they are not required. Another thing to talk about is how to end groupings ( if then else statement, or methods, etc. ), always when your using groupings you need to end it with «end» otherwise the code will not work properly, and could most likely output errors.
Now in this we will learn how to use else, which is used to do something else if it doesn’t equal.
Now what this does is that if Health does not equal 0 then it puts him as alive. You can also do else if, although the else if is part of the if then up-top it still need another end because its another grouping. below is an example.
Alright so basically what a function is, is it’s a group of code that can be started as many times as you like without re-writing the code multiple times, very suggested that you use this! By the way a method, and a function is the same thing just that in Object-Orientated Programming a method is contained in a class.
Okay so remember how I said that functions are also groupings? Well if you remember, groupings have to have endings just like If Then Statements! What is the parameters in the parentheses? Well in there is what you want to pass, so that the function can use that value. All it really is, is that it’s a variable in those parentheses. An example of how it works should help you!
Why did I reference a function in print? Well the reason I did that is because when you make a function return something shown up-top, it acts like a variable, this is very useful! Go ahead and try this for yourself, it will help give you a better understanding of how it works! Here is another example by the way.
-Output: Hello World!
You don’t need to return anything, this is your choice to do.
Arrays are variables with lists, arrays can be 1-D, 2-D, or 3-D. 1-D Arrays mean they only have 1 list, 2-D Arrays have more than 2 lists, 3-D Arrays are just cluster ♥♥♥♥♥, quite literally most people get stuck at this point because it’s hard to think about. Anyways just think of a 3-D graph as for a 3-D Array. Heres how it’s setup.
Really confusing huh? I know how you felt when I first started. Anyways to get the values, you need to label the index for example.
Okay so heres something important you need to know, try to lessen the use of while loops, they can be a problem! Usualy while loops are to loop unless an arguement returns the opposite in the arguemnts, I’ll show you an example!
Now this while loop will loop forever because true is true. Here will be another example of toggling loops.
This will loop constantly until Tof is false.
For loops are the most common used loop. Mostly they are used to get every individual index in an Array, which you will learn how later. Here is example of how it works.
Okay so here is how it works, i = 1 is the starting value, 10 is the max number it will go to, 1 is how many it will add or subtract to the i variable. Now here is an example how to work it with arrays in 2 different ways.
-Output:
1: Aaron
2: Denis
3: Dave
4: Cherell
Here is another way.
-Output:
1: Aaron
2: Denis
3: Dave
4: Cherell
Garry’s Mod Lua
Repositories
Royal-Derma-Designer
Ingame derma/vgui creator
0 Updated Jul 30, 2021
gmod-menu-plugins
This will readd menu plugins to the game
0 Updated Jul 4, 2021
A script that automatically adds workshop addons to the client download list.
0 Updated May 1, 2021
Common Admin Mod Interface. Unifies admin mods and provides an abstract interface to third party addons.
0 Updated Dec 16, 2020
gm_voxelate
A module for voxel support in Garry’s Mod
1 Updated Jun 2, 2019
John-Lua-Quotes
Soothing extracts from John Lua’s memoir «Eat, Pray, Code» to guide through your programming tribulations
0 Updated May 21, 2019
clientside-lua-viewer
0 Updated Oct 7, 2018
gm_roc
Brings the cool little function RunOnClient back into the menu state!
1 Updated Oct 7, 2018
LuaJIT
Mirror of the LuaJIT git repository
0 Updated Jul 11, 2018
gm_fshook
Hooks into IFileSystem / IBaseFileSystem to hide files in Garry’s Mod
1 Updated Apr 26, 2018
terrortown_gold
0 Updated Dec 5, 2017
toyshop
0 Updated Nov 29, 2017
gm_f1atgrass
Testbed map/script for gm_voxelate
0 Updated Oct 23, 2017
gm_securerandom
A module for generating secure random numbers and strings in Garry’s Mod
0 Updated Aug 9, 2017
SourceEngine2007
0 Updated Jul 25, 2017
SourceSDK
Stripped down copy of Valve’s Source SDK 2013 with (partial) Premake5 support.
1 Updated Jul 18, 2017
RevertTheForumsRP
RevertTheForumsRP, a non-serious roleplay gamemode for Garry’s Mod.
0 Updated Jul 9, 2017
voxtex
Texture utility for gm_voxelate
0 Updated Jun 5, 2017
glua.github.io
1 Updated May 13, 2017
pointshop3
PointShop is a shop system for Garry’s Mod 13 developed by _Undefined
0 Updated Apr 25, 2017
xavante
Xavante is a Lua HTTP 1.1 Web server that uses a modular architecture based on URI mapped handlers.
0 Updated Apr 23, 2017
obscure-information
Repository of dumb things Garry’s Mod
0 Updated Nov 11, 2016
lua-quiz
test your lua skills for bragging rights
1 Updated Oct 31, 2016
0 Updated Aug 28, 2016
load-seed
⌛ Garry’s Mod loading screen skeleton to help developers quickly get started in building their own.
0 Updated Aug 7, 2016
gm_geoip
GModule for acquiring GeoIP data using libmaxminddb
0 Updated Jun 16, 2016
nsgui
nsgui is an all around solution for creating appealing user interfaces for content in the game garry’s mod. It’s still a work in progress, so calm your jimmies.
0 Updated Apr 11, 2016
propwalking
Willox’ propwalking addon that he doesn’t want on his GitHub
0 Updated Feb 16, 2016
luaserverbrowser
updated legacy server browser
0 Updated Dec 19, 2015
gm_mount
Mount content to your GMod virtual filesystem
0 Updated Dec 19, 2015
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Эффективная разработка в Garry’s Mod
_AMD_
Основатель trigon.im и gm-donate.ru. Интересуюсь айти, текстами, продажами. Меломан, интроверт, альтруист

_AMD_
Я занимаюсь Garry’s Mod’ом с 2015 года, начиная с администрирования чужого сервера и до создания своего проекта, где большинство разработок были самописны (не куплены), а сервера проекта в свое время были в топ-10 мира по рейтингу GameTracker.
Инструменты, которые я использую позволили мне ускорить разработку в сравнении с банальным редактированием файлов через FTP в десятки раз. То, что написано ниже требует немного времени на изучение, но это время уже за неделю окупится за счет гораздо большего скорости разработки и удобства в целом.
Я старался сделать пост максимально сжатым, поэтому некоторые детали по установке или настройке упустил. Если возникнут вопросы, вы можете задать их мне в t.me/gmodev
Софт, который будем использовать
Плагины для SublimeText
Плагины будут показывать нам на ошибки в коде прямо в процессе его написания, будут заниматься синхронизацией файлов сервера с локальным компом и ускорять навигацию в коде
Все плагины устанавливаются через один единственный плагин PackageControl, который устанавливается одной командой и позволяет сделать из простого текстового редактора красивую и мощную IDE
GLua синтаксис
GmodLua (glua) немного отличается от чистого Lua. В нем есть особенности синтаксиса, а также функции, которых нет в чистом Lua. Плагин сделает ваш код визуально красивее.

Пример файла настройки и инструкция находится здесь
Чтобы работали сочетания клавиш, нужно добавить в ваши key bindings (ищите в панели инструментов Sublime) нужные сочетания:
Плагин сделает ваш код чище, а также сэкономит время на исправлении случайных синтаксических ошибок (ох уж эти скобочки). Он прямо в процессе написания кода будет подсвечивать участки, которые не соответствуют стилю или вовсе содержат ошибки.

Перед установкой плагина сначала нужно скачать glualint.exe «модуль», закинуть его в удобную папку и прописать путь к ней в PATH системы (как это сделать?). После этого откройте командную строку Win+R > cmd.exe и введите там glualint. Если появляется ошибка, то плагин для саблайма работать не будет. Именно этот модуль отвечает за определение ошибок в коде.
Только теперь можно открывать саблайм и устанавливать сам плагин. В Ctrl + Shift + P пишем Install Package, затем ищем glualint (SublimeLinter-contrib-glualint). Чтобы этот плагин работал, необходимо установить еще SublimeLinter. Он так и называется. Подробнее процесс установки Glualint описан тут.
Если возникли вопросы или нужна помощь с установкой и настройкой, напишите мне в t.me/gmodev
Еще для SublimeText
Особенности разработки
Еще скрипты для сервера
В статье собраны не все инструменты, которые я использовал при разработке и администрировании своего проекта, чтобы статья получилась не слишком громадной. Если вам интересно узнать что-то еще, то можете спросить у меня в t.me/gmodev.
Также я буду рад, если кто-то подскажет еще какие-то интересности. Так что не стесняйтесь и пишите мне 🙂
Subscribe to Блог _AMD_
Get the latest posts delivered right to your inbox









