Все знают что в SB есть директива {$INCLUDE}, но не все знают как она работает и как её использовать. Начнём с того, что данная директива подключает к исходнику "кусок" кода из другого файла, это очень полезно т.к в клео часто приходится писать одно и то же.
То, как правильно использовать директиву и где хранить инклуды вы прочтёте в "Справка Sanny Builder->Кодинг->Директивы->{$INCLUDE}"
Очень важно то, что файлы с константами (const...end) и переменными (var...end) стоит подключать в начале файла или перед участком кода в котором они используются (в циклах лучше не использовать), а файлы с функциями стоит подключать в конце кода или пропускать их с помощью данной конструкции:
by FYP
Итак, чтобы создать свой подключаемый файл мы открываем любой текстовый редактор и вставлем туда код, который ранее написали в SB и сохраняем. Чтобы не писать расширение при подключении файла можно стереть его из названия.
У меня будет два файла - "consts" и "calls"
Рассмотрим простой пример:
Может быть интересно:
Создание собственных классов для SB
Sanny Builder (описание, макросы, кейворды)
**Инклуды пришлось залить в txt т.к. заливать файлы без расширения нельзя
То, как правильно использовать директиву и где хранить инклуды вы прочтёте в "Справка Sanny Builder->Кодинг->Директивы->{$INCLUDE}"
Очень важно то, что файлы с константами (const...end) и переменными (var...end) стоит подключать в начале файла или перед участком кода в котором они используются (в циклах лучше не использовать), а файлы с функциями стоит подключать в конце кода или пропускать их с помощью данной конструкции:
CLEO:
jump @__calls_end
// код инклуда
:__calls_end
Итак, чтобы создать свой подключаемый файл мы открываем любой текстовый редактор и вставлем туда код, который ранее написали в SB и сохраняем. Чтобы не писать расширение при подключении файла можно стереть его из названия.
У меня будет два файла - "consts" и "calls"
consts:
calls:
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 т.к. заливать файлы без расширения нельзя
Вложения
Последнее редактирование: