Информация Гайд Создание подключаемых файлов исходного кода для SB

Статус
В этой теме нельзя размещать новые ответы.

LUCHARE

Известный
Автор темы
Друг
545
687
Все знают что в SB есть директива {$INCLUDE}, но не все знают как она работает и как её использовать. Начнём с того, что данная директива подключает к исходнику "кусок" кода из другого файла, это очень полезно т.к в клео часто приходится писать одно и то же.

То, как правильно использовать директиву и где хранить инклуды вы прочтёте в "Справка Sanny Builder->Кодинг->Директивы->{$INCLUDE}"

Очень важно то, что файлы с константами (const...end) и переменными (var...end) стоит подключать в начале файла или перед участком кода в котором они используются (в циклах лучше не использовать), а файлы с функциями стоит подключать в конце кода или пропускать их с помощью данной конструкции:

CLEO:
jump @__calls_end

// код инклуда

:__calls_end
by FYP

Итак, чтобы создать свой подключаемый файл мы открываем любой текстовый редактор и вставлем туда код, который ранее написали в SB и сохраняем. Чтобы не писать расширение при подключении файла можно стереть его из названия.

У меня будет два файла - "consts" и "calls"
consts:
CLEO:
const
PLAYERPED = $PLAYER_ACTOR
CHAR      = $PLAYER_CHAR
end

const
VK_SHIFT = 16
end

calls:
CLEO:
:is_ped_driver
if Actor.Driving(0@)
then
1@ = Actor.CurrentCar(0@)
046C: 2@ = car 1@ driver
    if 003B:   0@ == 2@
    then return_true
    end
end
ret 0

:is_racecp_active // by Romelo
if 0AA2: 0@ = loadlib "samp.dll"
then 0A8E: 1@ = 0@ + 0x21A10C
0A8D: 1@ = readMem 1@ sz 4 vp 0
1@ += 0x49
0A8D: 1@ = readMem 1@ sz 4 vp 0
if 1@ == true
then 0485: return_true
else 059A: return_false
end
0AA3: freelib 0@
end
ret 0

:get_racecp_pos // by Romelo
if 0AA2: 0@ = loadlib "samp.dll"
then 0A8E: 1@ = 0@ + 0x21A10C
0A8D: 1@ = readMem 1@ sz 4 vp 0
1@ += 0x2C
0A8D: 2@ = readMem 1@ sz 4 vp 0
1@ += 0x4
0A8D: 3@ = readMem 1@ sz 4 vp 0
1@ += 0x4
0A8D: 4@ = readMem 1@ sz 4 vp 0
0AA3: freelib 0@
end
ret 3 2@ 3@ 4@

Рассмотрим простой пример:

CLEO:
{$CLEO}
0000:

{$INCLUDE consts}

const
hMyCar = 0@
X      = 1@
Y      = 2@
Z      = 3@
end

while true
    wait 0
    if Player.Defined(CHAR)
    then
        if key_down VK_SHIFT
        then
            if call @is_ped_driver 1 PLAYERPED
            then
                if call @is_racecp_active 0
                then
                    call @get_racecp_pos 0 X Y Z
                    hMyCar = Actor.CurrentCar(PLAYERPED)
                    Car.PutAt(hMyCar, X, Y, Z)
                    while key_down VK_SHIFT
                        wait 100
                    end
                end
            end
        end
    end
end

{$INCLUDE calls}

Может быть интересно:
Создание собственных классов для SB

Sanny Builder (описание, макросы, кейворды)


**Инклуды пришлось залить в txt т.к. заливать файлы без расширения нельзя
 

Вложения

  • calls.txt
    741 байт · Просмотры: 6
  • consts.txt
    112 байт · Просмотры: 8
  • tp to cp.txt
    693 байт · Просмотры: 8
Последнее редактирование:

FYP

Известный
Администратор
1,757
5,684
Очень важно то, что подключать файлы исходного кода с вызываемыми функциями стоит в конце кода
CLEO:
jump @__consts_end

// код инклуда

:__consts_end
чтобы код инклуда случайно не выполнился, если его вставить не туда.
 
  • Нравится
Реакции: eiuhuth и LUCHARE
Статус
В этой теме нельзя размещать новые ответы.