Итак,вы научились делать оружие,и терперь вы научитесь делать скриптовый аддон. Для этого мы используем хуки. Хуки - это коды которые изменяют или реагируют на события игры/движка. Хуки позолят вам контролировать игровой процесс по вашему вкусу. Хуки могут быть серверными или клиентскими,а также могут быть и серверными и клиентскими. (Шаг 1)Создадим в папке addons папку с нашим скриптом,и затем в этой папке создадим папку lua,и затем в папке lua создадим папку autorun,и в этой папке создадим папку server. Для новых версий игры нам не нужен addon.txt. Если у вас старая версия,тогда вам придется его создать.Подробнее здесь. Скрипты можно положить и использовать в папках autorun,server,client. В autorun можно запустить и клиентские коды и серверные.В папке server илм client можно положить только клиентские или серверные скрипты. Создадим в папке server наш луа скрипт.
(Шаг 2)Теперь приступим к скриптингу. Вписываем в луа скрипт наш код: function HookTest() // Название нашей функции которую будет вызывать хук. print("Привет") // Вывод текста в консоль. end // Конец функции
hook.Add("Think", "HookId", HookTest) // Код хука.
Где "Think" - Название события.В кавычках. Где "HookId" - Название хука добавляемого хука.В кавычках. Где HookTest - Название функции которую будет вызывать хук.Без кавычек.
Теперь нужно сделать так чтобы гмод читал наш текст. Для этого нужен NotePad++. Выделите весь код. Жмите на Кодировки/Преобразовать в UTF-8 (без BOM).
Затем сохраните.
(Шаг 3)Теперь проверим это в игре и мы увидим:
Событие "Think" будет постоянно вызывать код, который мы указали в функции. Некоторые события имеют свои значения для функции.Например для определения игрока.
function HelloSpawn( ply ) // Обратите внимание на код ply в скобках,это игрок который спавнится после подключения. ply:PrintMessage(HUD_PRINTTALK,"Здравствуйте!Вы зашли на наш сервер.Хорошей игры!") // Выводим в чат появившегося игрока,наш текст. end hook.Add( "PlayerInitialSpawn", "HelloSpawnId", HelloSpawn ) // Событие "PlayerInitialSpawn" вызывается когда игрок подключается.
"PlayerSpawn" - Событие когда игрок возрождается после смерти.(Значения.(ply)) "EntityTakeDamage" - Событие когда какой-нибудь объект получает урон(Значения.(target,dmginfo)). "PlayerDeath" - Событие когда игрок умирает.(Значения.(victim, inflictor, attacker)) "EntityRemoved" - Событие когда какой-нибудь объект удаляется.(Значения.(ent)) "OnEntityCreated" - Событие когда какой-нибудь объект появляется.(Значения.(ent))
Ну вот,вы научились создавать скриптовый аддон для Garry's Mod'а. В следующем туториале будет пример по созданию целого мода с консольными командами и тд.
Вы можете помочь мне материально по WebMoney. Ru-Кошелек: R236462443208
Пишите в комментах если у вас появились ошибки или есть предложения.
Volkus-Borodatus (-.-) писал:О, а можно ли настроить вывод инфы жирным шрифтом в центр экрана, тип сколько урона нанёс попаданием пули/ударом?
Да конечно. Вот: function HPText( target, dmginfo ) // Значения для события "EntityTakeDamage".target - объект который получает урон.dmginfo - все что связано с уроном(yрон,тип,нападающий и тд.) // Условия для того чтобы не вылезали ошибки.Только игрок может получить текст. // И если игрок нападет на НПС или другого игрока. if IsValid(target) and IsValid(dmginfo:GetAttacker()) and dmginfo:GetAttacker():IsPlayer() and (target:IsNPC() or target:IsPlayer()) then // Вывод текста нападающему игроку.HUD_PRINTCENTER - это вывод текста в центре экрана. dmginfo:GetAttacker():PrintMessage(HUD_PRINTCENTER,"Вы нанесли " .. math.Round( dmginfo:GetDamage() ) .. " урона") // math.Round - Округляем урон до целого числа. end end hook.Add( "EntityTakeDamage", "HPTextId", HPText ) Не забудь преобразовать весь код в UTF-8 (без BOM).