#1 Re: Вопросы по скриптингу » Один вопрос » 05-01-2011 17:58

Можно в клео сриптах задать пути, по которым ездили бы авто?

#2 Re: Вопросы по скриптингу » Один вопрос » 26-12-2010 18:43

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

#3 Re: Работа с памятью, EXE » Вопрос по памяти » 26-12-2010 08:45

у меня только 2 вагона постоянно + сам тягач по умолчанию. За ссылку спасибо!

#4 Re: Модификации » Здоровье машины (NEW!) » 25-12-2010 17:19

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

#5 Re: Вопросы по скриптингу » Один вопрос » 25-12-2010 14:01

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

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

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

#6 Re: Вопросы по скриптингу » Один вопрос » 25-12-2010 12:44

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

#7 Re: Вопросы по скриптингу » Один вопрос » 25-12-2010 12:08

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
//тут уже что хочешь дальше пиши, что делать после того, как тачка взорвана

#8 Re: Вопросы по скриптингу » Один вопрос » 25-12-2010 09:57

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

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

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

#9 Re: Работа с памятью, EXE » Вопрос по памяти » 25-12-2010 09:38

Sergey81, спасибо!
Про поезда тоже интересно. Если найду сам, обязательно отпишусь

#10 Re: Работа с памятью, EXE » Вопрос по памяти » 25-12-2010 08:22

Как изменить текущую строку имен миссии (используется для названия сохранения). И вообще делается ли это через редактирование памяти или есть опкод? (не нашёл оного)

+для самообучения:
А есть ли где список участков памяти, которые можно редактировать под свои нужды (т.е. какой участок памяти за что отвечает), например изменить цвет звёздочек уровня преступности (это я нашёл), изменить стандартный текст мисии и т.д.? (ещё был мод, которые изменял количество поездов, но тогда просто патчился ЕХЕ, а в памяти же абсолютно другие области по идее, хотя можно было бы найти значения, но вот знать бы что искать).

#11 Re: Вопросы по скриптингу » Один вопрос » 25-12-2010 08:07

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

0ACA: show_text_box "Hello, world!"

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

#12 Re: Вопросы по скриптингу » Один вопрос » 24-12-2010 20:59

Раньше писал скрипты для SA, но когда всё было в одном файле main.scm, однако как появилось Cleo, заинтересовался, начал писать, кое что получается, но вот с редактированием памяти и т.д. не всегда. Так вот, нашёл в скрипте сохранения следующий кусок (вроде он выводит на экран текст):

thread 'SAVE_ANYWHERE' 
wait 5000 
0AB1: call_scm_func @SAVE_ANYWHERE_389 1 -454 
wait 5000 
0AB1: call_scm_func @SAVE_ANYWHERE_389 1 -509 
jump @SAVE_ANYWHERE_142 
0662: NOP "SAVE_ANYWHERE_MOD" 
0662: NOP "VERSION_1.1" 
0662: NOP "COPYRIGHT_2008-2009_ANDERSON_BRESSAN" 

...


:SAVE_ANYWHERE_337
wait 0 
if 
03D9:   save_done 
jf @SAVE_ANYWHERE_337 
fade 1 500 
gosub @SAVE_ANYWHERE_578 
Actor.LockInCurrentPosition($PLAYER_ACTOR) = False
Player.CanMove($PLAYER_CHAR) = True
jump @SAVE_ANYWHERE_142 

:SAVE_ANYWHERE_389
0A9F: 1@ = current_thread_pointer 
1@ += 16 
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 
0062: 1@ -= 0@ // (int) 
1@ += 4 
0AA5: call 5802976 4 pop 4 0 0 0 1@ 
0AB2: ret 0 
0900: unknown_set_object "Welcome to ~h~SAVE ANYWHERE MOD~w~ by ~h~Rapier~w~." 
0900: unknown_set_object "Type ~h~SAVE~w~ in your keyboard to display the save game menu." 
0000: NOP 

:SAVE_ANYWHERE_578
wait 0 
if 
   not fading 
jf @SAVE_ANYWHERE_578 
return

Но это у меня не работает (игра вылетает сразу). А впихнул я его в свой пробный код так:

{$CLEO .cs}
:SETSTATS
03A4: name_thread "SETSTATS"
wait 1000
0@ = 304531
0004: $BEEFYBARON_SCORE = 'TEXT'

:SETSTATS_1
wait 0
&0(0@,1i) == 0x00FF0000
jf @SETSTATS_1
wait  0
jump @SETSTATS_2

:SETSTATS_2
0@ = 362041
&0(0@,1i) = 0xFFFF0000
0627: change_stat 24 to 1000.0
Actor.Health($PLAYER_ACTOR) = 1000
02AB: set_actor $PLAYER_ACTOR immunities  1  1  1  1  1
if and
Actor.Driving($PLAYER_ACTOR)
jf @SETSTATS_1
0811: $10932 = actor $PLAYER_ACTOR car
02AC: set_car $10932 immunities  1  1  1  1  1
//0384: show_text_1string GXT 'AREA_1' Set  ~h~ACTOR AND CAR~w~ STATS to ~h~MAX~w~. 'IE16' time 5000 1
//wait 6000
//03C4: set_status_text $BEEFYBARON_SCORE type 0 GXT 'ZER2_43' 
0AB1: call_scm_func @SETSTATS_3 1 -454 
wait 5000 
0AB1: call_scm_func @SETSTATS_3 1 -509 
jump @SETSTATS_1

:SETSTATS_3
0A9F: 1@ = current_thread_pointer 
1@ += 16 
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 
0062: 1@ -= 0@ // (int) 
1@ += 4 
0AA5: call 5802976 4 pop 4 0 0 0 1@ 
0AB2: ret 0 
0900: unknown_set_object "WWelcome to ~h~SAVE ANYWHERE MOD~w~ by ~h~Rapier~w~." 
0900: unknown_set_object "Type ~h~SAVE~w~ in your keyboard to display the save game menu." 
0000: NOP 

:SETSTATS_4
wait 0
return

Цель - вывести текст, находящийся непосредственно в скрипте. а не в файле *.гфх

Board footer

Powered by FluxBB