Гайд Написание скриптов на Lua [0.3.DL]

_razor

t.me/sssecretway | ТГК: t.me/razor_code
Автор темы
Всефорумный модератор
1,952
3,223
Всем привет! В этой теме я бы хотел рассказать как можно писать скрипты для SA:MP 0.3.DL без использования SAMPFUNCS.

Что нам для этого понадобится?

  1. Библиотека SA-MP API (Скачать) - Автор: @LUCHARE
  2. Желательно чистая GTA с установленным CLEO, ASI Loader, MoonLoader 0.26
  3. Руки из того места
Начнем!
Для того, чтобы начать писать скрипт мы должны подключить SA-MP API:
Lua:
local dl = require "lib.SA-MP API.init"
Библиотека имеет несколько функций:

Lua:
dl.GetIsAvailable() -- проверка на загруженность SA:MP
dl.Get() -- загружает струкруты SA:MP 0.3.DL с которыми можно будет работать
dl.SendChat(text) -- отправляет текст в чат (если это в text будет команда, он отправит команду)
dl.ToggleCursor(toggle) -- включение/выключение рендера курсора
dl.RegisterClientCommand(cmd, func, replaceOld) -- регистрирует команду для SA:MP 0.3.DL (всего может быть 144 клиентских команд)
dl.DeleteClientCommand(cmd) -- удаляет команду по ее названию
dl._RegisterClientCommand(cmd, func) -- регистрирует команду, в отличии от RegisterClientCommand, данная функция не может заменять команды
dl.TakeScreenshot() -- делает скриншот
dl.RequestSpawn() -- отправляет RPC о спавне игрока
dl.Spawn() -- спавнит игрока
dl.SetInputMode(mode, disable_cursor) -- открытие/закрытие строки ввода текста SAMP
dl.UnlockActorCam() -- возвращает управление персонажем (использовать если скрыт курсор)
dl.AddMessageToChat(msgType, msg, prefix, msgColor, prefixColor) -- отправляет сообщение в чат
dl.UpdateScoreboardData()-- отправляет RPC UpdateScoreboardData
dl.Say(msg) -- отправляет текст в чат
dl.SendCommand(cmd) -- отправляет команду на сервер
dl.SendInteriorChange(intID) -- отправляет RPC о смене интерьера
dl.RequestClass(classID) -- отправляет RPC о смене класса
dl.DisableScoreboard(enable) -- отключает Tab
dl.SetSpecialAction(actionId) -- выдает игроку специальное действие
Начинает писать скрипт. Сделаем проверку на загруженность SAMP:
Lua:
function main()
    while not dl.GetIsAvailable() do wait(100) end -- пока SAMP не будет загружен, ничего не произойдет
end
Мы сделали проверку на загруженность SAMP, давайте после нее выведем, что нибудь в чат:
Lua:
dl.AddMessageToChat(4, "Hello men", "", 0xFFFFFF, 0xFFFFFF) -- 4 это тип сообщения, Hello men текст, "" префикс (не используется), и последнии два параметра цвет текст и префикса
Так же мы может зарегистрировать команду:

Lua:
dl.RegisterClientCommand("test_cmd", TEST_FUNCTION)

function TEST_FUNCTION()
    dl.AddMessageToChat(4, "Ты использовал команду /test", "", 0xFFFFFF, 0xFFFFFF)
end
Вот вам простой NoStun для примера:
Lua:
local dl = require "lib.SA-MP API.init"
act = false

function main()
    while not dl.GetIsAvailable() do wait(100) end
    dl.RegisterClientCommand("nostun", NoStunAct)
    while true do wait(0) end
end

function NoStunAct()
    act = not act
    if act then
        setCharUsesUpperbodyDamageAnimsOnly(PLAYER_PED, 1)
    else
        setCharUsesUpperbodyDamageAnimsOnly(PLAYER_PED, 0)
    end
end
Если у кого остались вопросы, пишите
Вот пример мультичита для 0.3.DL:
42668

 

Вложения

  • DEMO_03DL.lua
    442 байт · Просмотры: 232
Последнее редактирование:

_razor

t.me/sssecretway | ТГК: t.me/razor_code
Автор темы
Всефорумный модератор
1,952
3,223
Если после перезагрузки скрипта в игре у вас крашит SAMP, добавьте в любое место скрипта:

Lua:
function onExitScript()
    dl.DeleteClientCommand(command_name) -- имя команды которая используется в вашем скрипте
end
 
  • Нравится
Реакции: Kalif

Lobber

Известный
178
57
Привет. Интересная библиотека, впервые вижу подобные функции. Подскажи, где можно глянуть весь её функционал? Как допустим справочник по опкодам из cleo
 
  • Нравится
Реакции: Kalif

_razor

t.me/sssecretway | ТГК: t.me/razor_code
Автор темы
Всефорумный модератор
1,952
3,223
Привет. Интересная библиотека, впервые вижу подобные функции. Подскажи, где можно глянуть весь её функционал? Как допустим справочник по опкодам из cleo
Все функции описаны выше, а так их можно посмотреть в файле SA-MP API/init.lua
 
  • Нравится
Реакции: Lobber

Krueger

Известный
25
3
Что будет запускать все скрипты или некоторые, если они работают, будут работать и для всех версий sa-mp?
 

_razor

t.me/sssecretway | ТГК: t.me/razor_code
Автор темы
Всефорумный модератор
1,952
3,223
Что будет запускать все скрипты или некоторые, если они работают, будут работать и для всех версий sa-mp?
Да, но некоторые функции и библиотеки станут недоступными
 

Hatiko

Известный
Проверенный
1,512
628
А разве Moonloader без сампфункса работает что ли? Чёт для меня это открытие, хотя я слышал что-то подобное, что мунлоадер будет большой альтернативой всего и не будет требовать клео и сф.
На счёт 0.3DL. Да её удалили, поэтому не вижу особого смысла глубоко развивать темы на данную версию. Вон, вроде бы R4 сделали версию, а через год-два и вообще новая версия сампа 0.3.9.А вот тут без шуток пойдёт развитие.
 
  • Ха-ха
Реакции: tinkoir

kyrtion

Известный
978
355
Если без сампфункса, тогда такой немного вопрос.
Как узнать ид у игрока и выставлять в командой? Например
Test_Tester - 6 id
cmd: test [playerid/nickname]
/test 6
/o Игрок Test_Tester обосрался
 

R-Roach

Участник
76
7
Если без сампфункса, тогда такой немного вопрос.
Как узнать ид у игрока и выставлять в командой? Например
Test_Tester - 6 id
cmd: test [playerid/nickname]
/test 6
/o Игрок Test_Tester обосрался
Test_Tester (id)
cmd: test [player/nickname]
/test (id)
/o игрок обосрался cmd fon
Приятного скрипта
 
  • Нравится
Реакции: kyrtion