Туториал по созданию скриптового аддона.

0
Посетители
0
Активный участник
Hds46
08:19, 17.05.2015
Итак,вы научились делать оружие,и терперь вы научитесь делать скриптовый аддон.
Для этого мы используем хуки.
Хуки - это коды которые изменяют или реагируют на события игры/движка.
Хуки позолят вам контролировать игровой процесс по вашему вкусу.
Хуки могут быть серверными или клиентскими,а также могут быть и серверными и клиентскими.
(Шаг 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" вызывается когда игрок подключается.
Прикрепленная картинка
Вот пара других событий: 
Hooks

Ну вот,вы научились создавать скриптовый аддон для Garry's Mod'а.
В следующем туториале будет пример по созданию целого мода с консольными командами и тд.

Вы можете помочь мне материально по WebMoney.
Ru-Кошелек: R236462443208

Пишите в комментах если у вас появились ошибки или есть предложения.
Mega Upload.
V.I.P.
0
Всё в маске
Hds46 (17.05.2015, 10:18) писал:"EntityTakeDamage" - Событие когда какой-нибудь объект получает урон(Значения.(target,dmginfo)).

О, а можно ли настроить вывод инфы жирным шрифтом в центр экрана, тип сколько урона нанёс попаданием пули/ударом?
Посетители
0
Активный участник
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).
Прикрепленная картинка
Mega Upload.
 
Доступ закрыт.
  • Вам запрещено отвечать в темах данного форума.