You are not logged in.
Den_spb, спасибо!
Апкод и правда простой
0ACA: show_text_box "Hello, world!"
Вот только если ввожу Русски буквы, то не работает (хотя я подразумевал, что не будет работать). Нужно как то по особому задавать строку или из скрипта нет возможности русские символы выводить?
Last edited by Resager (25-12-2010 08:18)
WinHex,
Offline
@Resager - тебе надо воспользоваться переводчиком - http://yelmi.com/modules/files/showfile.php?lid=1 как вариант. Работает для gxt/fxt, но по идее в клео4 тоже должен.
Offline
да у меня версия библиотеки клео 4, с офф сайта качал. в сани билдере в последнем, строки
//0ACA: show_text_box "Проигрывается звук!" 0ACA: show_text_box "€ўyk ak¦њўњpoўa®!"
Когда первую раскоменчиваю, там тупо пусто (один воскрицательый знак видно) а во втором кракозябвы в таком же виде (кракозябры получил путём перевода той прогой, что посоветовали)
WinHex,
Offline
@Resager - Попробуй через fxt файл вывести, если там выведется нормально, значит cleo не поддерживает кириллицу, если и там нет - надо смотреть сам перевод.
Offline
Всем привет я в скриптинге только новичек и есть странные вопросы.
1
как пользоваться проверками IF..THEN...ELSE.....END
я не уверен что так
:proverka IF and //условия например актер $MYAct мертв them Jump @dead //или вместо прыжка на метку можно писать код скрипта? else Jump @elive end :dead //код если актер мертв :elive //а тут типа если условие актер мертв не выполнено
пс я учу не клео
2 и как правильно сделать так.
внести тачку в переменую в которой сидел карл но чтобы другие тачки не добавлялись в переменную пока не уничтожено или утоплено первое ТС.
и сделать чтобы например за уничтожение тачки давались скажем деньги
и после убиения тачки выносить ее с переменной. и так в замкнутом цыкле.
Last edited by Seryoga_ati (25-12-2010 10:37)
create_thread @my life
Offline
1) Условия формируются так:
if and //if and-команда начала условия,все подусловия которого выполняются. 80E1: NOT key_pressed 0 19 // Подусловие 0256: player $PLAYER_ACTOR defined // Подусловие 00DF: actor $PLAYER_ACTOR driving // Подусловие jf @Test_2 // Аналог ELSE - то есть если 3 условия не выполнены, то переходим на метку ЗДЕСЬ уже будет располагаться код, который должен быть выполнен в случае, когда все 3 условия верны
Если условие одно, можно писать просто "if" или если нужно выполение одного из условий, то вместо AND пишешь OR. Вообще почитай справку по основам скриптинга для main.scm
То что ты описал сделать просто, логически так:
В начале скрипта (например по нажатию клавиши, сохраняешь в переменную, и потом проверяешь, пока не взорвана тачка) а там хоть денги, хоть что делай!
{$CLEO .cs} :DEMO 03A4: name_thread "DEMO" wait 1000 :DEMO_1 wait 0 if and 80E1: key_pressed 0 19 0256: player $PLAYER_ACTOR defined jf @DEMO_1 // запоминаем в переменную тачку 0811: $10932 = actor $PLAYER_ACTOR car // переходим на проверку не уничтожена ли тачка Jump @DEMO_2 :DEMO_2 if ТУТ ОПКОД, возвращающий не разрушена ли тачка, вот его я не помню jf @DEMO_2 //тут уже что хочешь дальше пиши, что делать после того, как тачка взорвана
Last edited by Resager (25-12-2010 12:20)
WinHex,
Offline
1) Условия формируются так:
if and //if and-команда начала условия,все подусловия которого выполняются. 80E1: NOT key_pressed 0 19 // Подусловие 0256: player $PLAYER_ACTOR defined // Подусловие 00DF: actor $PLAYER_ACTOR driving // Подусловие jf @Test_2 // Аналог ELSE - то есть если 3 условия не выполнены, то переходим на метку ЗДЕСЬ уже будет располагаться код, который должен быть выполнен в случае, когда все 3 условия верныЕсли условие одно, можно писать просто "if" или если нужно выполение одного из условий, то вместо AND пишешь OR. Вообще почитай справку по основам скриптинга для main.scm
То что ты описал сделать просто, логически так:
В начале скрипта (например по нажатию клавиши, сохраняешь в переменную, и потом проверяешь, пока не взорвана тачка) а там хоть денги, хоть что делай!
{$CLEO .cs} :DEMO 03A4: name_thread "DEMO" wait 1000 :DEMO_1 wait 0 if and 80E1: key_pressed 0 19 0256: player $PLAYER_ACTOR defined jf @DEMO_1 // запоминаем в переменную тачку 0811: $10932 = actor $PLAYER_ACTOR car // переходим на проверку не уничтожена ли тачка Jump @DEMO_2 :DEMO_2 if ТУТ ОПКОД, возвращающий не разрушена ли тачка, вот его я не помню jf @DEMO_2 //тут уже что хочешь дальше пиши, что делать после того, как тачка взорвана
извеняюсь за не коректность. я знаю как пишутся условия и проверки я путаюсь именно в конструкции
if then else end логически вроди понятно но понятных примеров не встречал.
create_thread @my life
Offline
Мои примеры понятны? Могу ещё кучу привести, логику тоже объяснить могу, всё просто, тут конструкция вида IF ELSE THEN. я так понимаю вы знаете паскаль и от знаний, полученных при его изучении собираетесь отталкиваться? По хорошему для понимания нужно как минимум 2 языка выучить (например паскаль и с++). По поводу END как такового тут нет, здесь есть потоки и метки. Метки как и в паскале используются, а поток, по идее, это 1 файл (в main.scm потоков несколько), поэтому делая логическое END, ты по сути закрываешь весь поток (соответственно проверка на то, взорвана ли тачка не будет).
Закрыть поток можно так (в CLEO скриптах)
0A93: end_custom_thread
Про опкоды - взорвана ли машина вот тебе:
1)Пример
2)Использование
3)Объяснение
02BF: car @51 sunk 02BF: car $машина sunk Авто тонет, т.е. упало в воду (проверка). 0119: car @0 wrecked 0119: car $машина wrecked Машина разбита/взорвана/уничтожена (проверка). 03C9: car @73 damaged 03C9: car $машина damaged Авто повреждено (проверка).
Last edited by Resager (25-12-2010 12:49)
WinHex,
Offline
Помогите мне пожалуйста. Почему мой скрипт нестабилен?
http://sannybuilder.com/forums/viewtopic.php?id=1107
Offline
Resager
Насчет паскаля вы не правы)
ладно поексперементирую над исходниками примеров)
create_thread @my life
Offline
Кто подскажет, как в скриптах некоторых сделано так, что после набора на клавиатуре слова (например в скрипте сохранения SAVE), выполянется код. Т.е. нету (я не могу найти) проверки на нажатие клавиши.
Как это создаётся и как создать свой, кто может подсказать. скрипт-пример могу выложить (качал не помню где, ссылку не найти)
И ещё, есть возможность ввода текстовой строки непосредственно в игре? например как в SA-MP.
Last edited by Resager (25-12-2010 16:04)
WinHex,
Offline
@Resager - поиском пользуйся по этому форуму, много интересного можешь найти.
Offline
как пользоваться проверками IF..THEN...ELSE.....END
if условие then код, который будет выполняться, если условие истинно else код, который будет выполняться, если условие ложно end
Т.е. нету (я не могу найти) проверки на нажатие клавиши
Проверка на нажатие клавиши - 0AB0 (опкод клео3 и клео4), проверка на ввод слова - 0ADC (клео4)
Last edited by Den_spb (26-12-2010 06:17)
Offline
А чтобы регистрировало именно каждую нажатую клавишу? Как например поле ввода обычное.
WinHex,
Offline
А чтобы регистрировало именно каждую нажатую клавишу? Как например поле ввода обычное.
я пользуюсь таким способом:
0@ = -229908 008B: 1@ = &0(0@,1i) 0085: 2@ = 1@ div(1@, 0x100) mul(1@, 0x100) 0062: 2@ -= 1@
2@ - это номер последней нажатой клавиши
2@s - знак последней нажатой клавиши, т.е. если нажал букву S, то в переменную запишется 'S'
Offline
ну помогите мне пожалуйстаааааа
http://sannybuilder.com/forums/viewtopic.php?id=1107
Offline
scm-функции правильно работают в клео-миссиях? У меня проблемы возникли, даже не знаю с чем ещё это может быть связанно.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
DK22Pac, порядок передачи параметров правильный?
0@ = 0 1@ = 1 0AB1: call_scm_func @func 3 20 1@ 0@ ... @func // нумерация лок. переменных блока скм-фукции соответствует порядку переданных параметров 0@ *= 2 // 20*2 =40 1@ *= 2 // 1*2=2 2@ *= 2 // 0*2=0 0AB2: ret 0
Вообще scm-функции являются аналогом gosub. Достоинство scm-функции в том, что она позволяет сэкономить локальные переменные (внутри функции используется собственный блок локальных переменных). Недостаток - ресурсоёмкость (при последовательном вызове нескольких scm-функций без wait может зависнуть игра).
В миссии проблем с переменными возникать не должно (их там 1024 штуки), так может проще использовать gosub?
Offline
А как заставить машину ехать в определенную точку игнорируя дорогу, т.е. напрямик?
Car.setanimation не подойдет))
Offline
Car.SetDriverBehaviour($Car,Nowhere) - устанавливает тип езды для машины, 0 или Nowhere - никуда не ехать,1 или FollowRoad - следовать дороге, 2 - ездить за игроком, 4 - ездить за игроком,8 - ехать напрямик,не обращая внимания на дорогу.
Offline
Мне нужно, чтобы машина проехала через несколько точек-чекпоинтов. Если дать ей команду Car.DriveTo она опять на дорогу сворачивает. А в команде SetDriverBeaviour нельзя указать точку, куда надо ехать) Составлять весь путь машины из множества точек с интервалом ~10 игровых метров тоже не хочется...
Как быть то?
Offline
хмм...если у тебя "несколько точек-чекпоинтов", то путь машины будет не сложно составить...
05D6: clear_scmpath 05D7: add_point_to_scmpath 372.0 -120.1 1000.5 05D7: add_point_to_scmpath 372.0 -130.1 1000.5 05D7: add_point_to_scmpath 372.0 -140.1 1000.5 05D7: add_point_to_scmpath 372.0 -150.1 1000.5 06BB: set_actor -1 drive_car 64@ speed 10.0 along_SCM_path
не ленись потратить время на скрипт, других вариантов скорее всего нет, заставить ехать по чекпоинтам её невозможно, а если и возможно, то только с помощью того что я тебе указал.
Last edited by Voron295 (31-12-2010 10:14)
Offline
Den_spb, я использовал ф-цию getScreenXYFrom3DCoords (была опубликована на gtaforums)
Проблему решил написанием скрипта, в который передавал параметры из миссии. В отдельном скрипте всё прекрасно работает.
Last edited by DK22Pac (31-12-2010 11:11)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline