Гайд Пишем свои функции в скрипте с помощью SA-MP API

S E V E N

Проверенный
Автор темы
Проверенный
378
208
Всем привет. Люди меня спрашивали: "Как пользоваться module.Get() в SA-MP API?" В этой теме я покажу и расскажу как пользоваться данной функцией.

Давайте сначала я вам расскажу, что делает данная функция. Данная функция позволяет делать любые изменения и действия в структурах SA:MP. Теперь покажу как пользоваться функцией.

Для начала давайте сделаем простенький скрипт и подключим к нему библиотеку "SA-MP API"

Lua:
local dl = require "SA-MP API.init" -- подключаем библиотеку

function main()
     while not dl.GetIsAvailable() do wait(0) end
     wait(-1)
end
Мы сделали простой скрипт и подключили библиотеку, к примеру я хочу получить свой ник, давайте это сделаем! Но для начала перейдем в папку lib/SA-MP API/samp/*ВЕРСИЯ САМП ПОД КОТОРУЮ ВЫ ПИШИТЕ СКРИПТ*/. В папке мы увидим все структуры с которыми мы можем работать, самая главная в данной библиотеке структура stSAMP.lua именно она прописывается в самом начале нашей функции. Всего библиотека включает в себя 7 главных структур от которых мы можем "отталкиваться" для поиска нужной нам структуры и значения:
Lua:
pChat = stChatInfo
pChatInput = stInputInfo
pKillList = stKillInfo
pBase = stSAMP
pScoreboard = stScoreboardInfo
pRecentDialog = stDialogInfo
pMisc = stGameInfo
Как мы видим "stSAMP" названа в библиотеке как "pBase", именно это название нам и нужно будет. Наш ник хранится в структуре "stPlayerPool" (можно конечно его взять и из "stLocalPlayer", но я буду его брать из "stPlayerPool"), давайте я покажу как из "pBase" перейти в "stPlayerPool":
Lua:
local dl = require "SA-MP API.init" -- подключаем библиотеку


function main()
     while not dl.GetIsAvailable() do wait(0) end
     local this = dl.Get().pBase -- сейчас мы находимся в pBase
     if ( this == nil ) then -- проверка на существование структуры, если функция Get() возвращает 0, то крашим скрипт с ошибкой
         error("pBase = nil")
     end
     wait(-1)
end
Откроем файл "stSAMP.lua" и увидим такую картину:
43410

Наша задача перейти в stSAMPPools (там хранятся все пулы SA:MP), обратим внимание на эту строчку:
43411

Мы видим, что тут "stSAMPPools" назван как pPools, давайте перейдем в "stSAMPPools" по примеру выше:

Lua:
local dl = require "SA-MP API.init" -- подключаем библиотеку

function main()
     while not dl.GetIsAvailable() do wait(0) end
     local this = dl.Get().pBase.pPools -- ПРИПИСАЛИ К pBase "pPools"
     if ( this == nil ) then -- проверка на существование структуры, если функция Get() возвращает 0, то крашим скрипт с ошибкой
         error("pBase = nil")
     end
     wait(-1)
end
Теперь откроем файл "stSAMPPools" и увидим там вот такую строчку:
43412

Мы уже почти добрались до структуры "stPlayerPool", она названа как "pPlayer", снова припишем ее в коде:

Lua:
local dl = require "SA-MP API.init" -- подключаем библиотеку

function main()
     while not dl.GetIsAvailable() do wait(0) end
     local this = dl.Get().pBase.pPools.pPlayer -- ПРИПИСАЛИ К pPools "pPlayer"
     if ( this == nil ) then -- проверка на существование структуры, если функция Get() возвращает 0, то крашим скрипт с ошибкой
         error("pBase = nil")
     end
     wait(-1)
end
Теперь мы находимся в "stPlayerPool", тут и хранится наш ник, а именно в этой строке:
43413

Можем вывести наш ник на экран, делается это так:
Lua:
local dl = require "SA-MP API.init" -- подключаем библиотеку

function main()
     while not dl.GetIsAvailable() do wait(0) end
     local this = dl.Get().pBase.pPools.pPlayer -- ПРИПИСАЛИ К pPools "pPlayer"
     if ( this == nil ) then -- проверка на существование структуры, если функция Get() возвращает 0, то крашим скрипт с ошибкой
         error("pBase = nil")
     end
     MyNickName = this.strLocalPlayerName -- записали ник из структуры в переменную
     printStringNow(MyNickName, 5000) -- вывели этот ник
     wait(-1)
end


Заключение: Как вы наверно могли понять, с помощью этой функции можно делать очень крутых вещей. Я надеюсь, что я довольно понятно все объяснил, если у кого-то будут вопросы, пишите в тему :)
 

Oreshka23

Известный
312
126
Как жаль только что DL умирает, вот Hosted для него отключили