Вопросы по CLEO-скриптингу

Woofing Giraffe

Активный
402
49
Спасибо.
Я знаю, что вот эти цифры
C++:
call @KeyPress 1 30
- это передаваемые параметры. 1 цифра - это сколько параметров будет передаваться, а второй - сам параметр. А как сделать чтобы метку KeyPress можно было повторить несколько раз, допустим 2,3 или 4 раза и более?

Заранее спасибо за ответ.
Циклом for
 

Bogach

Активный
558
27
Я с циклом фор не разу не работал, можешь привести пример пожалуйста. И насколько я знаю, цикл фор имеет ограниченное кол-во итераций, а если мне надо 1000 раз повторить? Я клоню к тому что, хочу научится делать клео скилл кач
 

hnnssy

Известный
Друг
2,684
2,768
Я с циклом фор не разу не работал, можешь привести пример пожалуйста. И насколько я знаю, цикл фор имеет ограниченное кол-во итераций, а если мне надо 1000 раз повторить? Я клоню к тому что, хочу научится делать клео скилл кач
Если надо 1000 раз повторить, то делаешь предел 1000, логично? А вообще для кача скиллов лучше юзать бесконечный цикл с каким-нибудь условием для выхода из него.
 
  • Нравится
Реакции: Vovich

unInstance

Новичок
Проверенный
311
224
А где можно прочитать о блоке...
CLEO:
hex

end
Или может кто расскажет(о том, зачем он и его возможностях)?
 

DarkP1xel

Сила воли наше всё.
BH Team
3,637
5,024
??? Можно подробнее(пжлст)???
HEX..END
Sanny Builder поддерживает прямую запись данных в выходной файл. Все значения внутри этой конструкции записываются без какой-либо обработки и проверки.

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

Синтаксис:
hex
< любый шестнадцатиричные значения>
end

Пример:

hex
04 00 02 0800 04 01
end


Эта последовательность байтов представляет собой скомпилированный опкод 0004: $2 = 1, поэтому игра корректно прочитает его и установит значение переменной $2 равным 1.

Вы должны использовать 2 цифры в шестнадцатиричном формате для каждого байта, который собираетесь записать в файл. Все пробелы игнорируются. Компилятор рассматривает две подряд идущих цифры с пробелом между ними как одиночный байт. К одиночной цифре (0..F) слева дописывается 0. Например, A B C будет записано как число 0xAB0C.

В конструкции HEX..END также можно использовать строки, метки, глобальные переменные, имена моделей. Они компилируются без предшествующего байта, указывающего на тип данных.



:get_offset
hex
04 00 02 $PLAYER_CHAR 01 @get_offset
end


Это точная копия опкода 0004: $PLAYER_CHAR = @get_offset

Строки компилируются как последовательность символов, заключенных между двойными кавычками.



hex
"This is a string"
end


В строках допускается использование следующих управляющих символов:

  • \0 - пустой символ - 0
  • \b - возврат на шаг - 8
  • \t - табуляция - 9
  • \n - перевод строки - 10
  • \r - возврат каретки - 13
  • \x<nn> - любой байт - nn
  • \<char> - любой символ - <char>
Пример:

hex
"\0\b\t\n\r\xDD"
end


Это даст следующую последовательность байтов: 00 08 09 0A 0D DD.
В настоящее время несколько подряд идущих пробелов в строке конвертируются в один пробел. Например, строка "This is a string" будет сконвертирована в "This is a string". Используйте символ \ чтобы добавить дополнительные пробелы в строку: "This \ \ \ is \ a \ \ \ \ string".

Также вы можете использовать тип данных aDMA, чтобы записать число в выходной файл. Число после знака & может быть как положительным, так и отрицательным, в десятичном формате или шестнадцатиричном.



hex
&1000 &-0xA33500
end


Этот пример даст следующую последовательность байтов: E8 03 00 CB 5C FF.
 
  • Нравится
Реакции: p1cador

Bogach

Активный
558
27
1. Ребят, скажите пожалуйста, для записи и чтения с .txt файлов используются те же опкоды , что и для .ini или есть для этого какие - то другие опкоды ?
2. Как я понял, .ini файлы дополняются этим опкодом:
C++:
0AD8: write_string_to_file $hFile from 0@v //IF and SET
Содержание .ini файлов такое:

C++:
[Main]
Parametr=Value
(Ну как - то так :trollface:)
Как можно дополнять .ini файл по такой же схеме? например:

C++:
[Main1]
Paramtr=Value
[Main2]
Parametr=Value
Конечно самому можно в .ini файле прописать как надо, а потом сделать считывание, а если не выходя из игры?
Ну я надеюсь достаточно понятно обьяснил.