#2851 25-12-2010 08:07

Resager
Registered: 24-12-2010
Posts: 12

Re: Один вопрос

Den_spb, спасибо!
Апкод и правда простой

0ACA: show_text_box "Hello, world!"

Вот только если ввожу Русски буквы, то не работает (хотя я подразумевал, что не будет работать). Нужно как то по особому задавать строку или из скрипта нет возможности русские символы выводить?

Last edited by Resager (25-12-2010 08:18)


WinHex,

Offline

#2852 25-12-2010 08:22

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

@Resager - тебе надо воспользоваться переводчиком - http://yelmi.com/modules/files/showfile.php?lid=1 как вариант. Работает для gxt/fxt, но по идее в клео4 тоже должен.

Offline

#2853 25-12-2010 09:57

Resager
Registered: 24-12-2010
Posts: 12

Re: Один вопрос

да у меня версия библиотеки клео 4, с офф сайта качал. в сани билдере в последнем, строки

//0ACA: show_text_box "Проигрывается звук!"
0ACA: show_text_box "€ўyk ak¦њўњpoўa®!"

Когда первую раскоменчиваю, там тупо пусто (один воскрицательый знак видно) а во втором кракозябвы в таком же виде (кракозябры получил путём перевода той прогой, что посоветовали)


WinHex,

Offline

#2854 25-12-2010 10:07

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

@Resager - Попробуй через fxt файл вывести, если там выведется нормально, значит cleo не поддерживает кириллицу, если и там нет - надо смотреть сам перевод.

Offline

#2855 25-12-2010 10:16

Seryoga_ati
Registered: 25-12-2010
Posts: 3

Re: Один вопрос

Всем привет я в скриптинге только новичек и есть странные вопросы.
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

#2856 25-12-2010 12:08

Resager
Registered: 24-12-2010
Posts: 12

Re: Один вопрос

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

#2857 25-12-2010 12:33

Seryoga_ati
Registered: 25-12-2010
Posts: 3

Re: Один вопрос

Resager wrote:

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

#2858 25-12-2010 12:44

Resager
Registered: 24-12-2010
Posts: 12

Re: Один вопрос

Мои примеры понятны? Могу ещё кучу привести, логику тоже объяснить могу, всё просто, тут конструкция вида 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

#2859 25-12-2010 13:05

Ruzel
Registered: 03-06-2010
Posts: 61

Re: Один вопрос

Помогите мне пожалуйста. Почему мой скрипт нестабилен?
http://sannybuilder.com/forums/viewtopic.php?id=1107

Offline

#2860 25-12-2010 13:29

Seryoga_ati
Registered: 25-12-2010
Posts: 3

Re: Один вопрос

Resager
Насчет паскаля вы не правы)
ладно поексперементирую над исходниками примеров)


create_thread @my life

Offline

#2861 25-12-2010 14:01

Resager
Registered: 24-12-2010
Posts: 12

Re: Один вопрос

Кто подскажет, как в скриптах некоторых сделано так, что после набора на клавиатуре слова (например в скрипте сохранения SAVE), выполянется код. Т.е. нету (я не могу найти) проверки на нажатие клавиши.

Как это создаётся и как создать свой, кто может подсказать. скрипт-пример могу выложить (качал не помню где, ссылку не найти)

И ещё, есть возможность ввода текстовой строки непосредственно в игре? например как в SA-MP.

Last edited by Resager (25-12-2010 16:04)


WinHex,

Offline

#2862 25-12-2010 18:10

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Один вопрос

@Resager - поиском пользуйся по этому форуму, много интересного можешь найти.

Offline

#2863 26-12-2010 06:16

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

как пользоваться проверками IF..THEN...ELSE.....END

if
     условие
then
     код, который будет выполняться, если условие истинно
else
     код, который будет выполняться, если условие ложно
end

Т.е. нету (я не могу найти) проверки на нажатие клавиши

Проверка на нажатие клавиши - 0AB0 (опкод клео3 и клео4), проверка на ввод слова - 0ADC (клео4)

Last edited by Den_spb (26-12-2010 06:17)

Offline

#2864 26-12-2010 18:43

Resager
Registered: 24-12-2010
Posts: 12

Re: Один вопрос

А чтобы регистрировало именно каждую нажатую клавишу? Как например поле ввода обычное.


WinHex,

Offline

#2865 27-12-2010 12:06

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

Resager wrote:

А чтобы регистрировало именно каждую нажатую клавишу? Как например поле ввода обычное.

я пользуюсь таким способом:

0@ = -229908
008B: 1@ = &0(0@,1i)
0085: 2@ = 1@         
div(1@, 0x100)
mul(1@, 0x100)
0062: 2@ -= 1@

2@ - это номер последней нажатой клавиши
2@s - знак последней нажатой клавиши, т.е. если нажал букву S, то в переменную запишется 'S'


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#2866 27-12-2010 13:37

Ruzel
Registered: 03-06-2010
Posts: 61

Re: Один вопрос

ну помогите мне пожалуйстаааааа
http://sannybuilder.com/forums/viewtopic.php?id=1107

Offline

#2867 29-12-2010 13:19

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Один вопрос

scm-функции правильно работают в клео-миссиях? У меня проблемы возникли, даже не знаю с чем ещё это может быть связанно.


Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Offline

#2868 29-12-2010 15:02

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

DK22Pac, у меня вроде работает всё....


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#2869 30-12-2010 04:41

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

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

#2870 30-12-2010 15:27

Ruzel
Registered: 03-06-2010
Posts: 61

Re: Один вопрос

А как заставить машину ехать в определенную точку игнорируя дорогу, т.е. напрямик?
Car.setanimation не подойдет))

Offline

#2871 30-12-2010 15:36

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

car.DriveTo($CAR, 1@, 2@ ,3@)

Возможно это подойдёт. А если нет, то можно создать scm путь и поставить на него машину...


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#2872 30-12-2010 17:53

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Car.SetDriverBehaviour($Car,Nowhere) - устанавливает тип езды для машины, 0 или Nowhere - никуда не ехать,1 или FollowRoad - следовать дороге, 2 - ездить за игроком, 4 - ездить за игроком,8 - ехать напрямик,не обращая внимания на дорогу.

Offline

#2873 31-12-2010 07:09

Ruzel
Registered: 03-06-2010
Posts: 61

Re: Один вопрос

Мне нужно, чтобы машина проехала через несколько точек-чекпоинтов. Если дать ей команду Car.DriveTo она опять на дорогу сворачивает. А в команде SetDriverBeaviour нельзя указать точку, куда надо ехать) Составлять весь путь машины из множества точек с интервалом ~10 игровых метров тоже не хочется...
Как быть то?

Offline

#2874 31-12-2010 10:11

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

хмм...если у тебя "несколько точек-чекпоинтов", то путь машины будет не сложно составить...

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)


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#2875 31-12-2010 11:09

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Один вопрос

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

Board footer

Powered by FluxBB