You are not logged in.
Pages: 1
Здравствуйте, всем.
Хочу сделать гараж, где был гараж Джонса Кэма в миссии "работе".
Не получается, подскажите, пожалуйста.
{$CLEO} 0000: :1 wait 0 if 0AB0: key_pressed 0x41 // a jf @1 0219: 0@ = create_garage_type 2 door -852.82 -898.73 11.103 to -901.78 -904.66 14.103 depth -852.830 -897.225 gosub @open 03BB: set_garage 0@ door_type_to_swing_open 03DA: set_garage 0@ camera_follows_player //057A: set_garage 0@ max_cars_to 1 //02FA: garage 0@ change_to_type 16 jump @1 :open 0AE3: 3@ = random_object_near_point -836.77 -901.84 12.05 in_radius 5.0 find_next 0 //IF and SET for 4@ = 1 to 100 034E: move_object 3@ to -837.13 -901.67 15.95 speed 0.0 0.0 0.05 collision_check 0 wait 4 end return /* 1 конец гаража коор x 2 начала гаража правая сторона коор y то 1 начала гаража коор x то 2 начала гаража левая сторона коор y depth правый дальный угол
Для sa есть адреса функцией для загрузки слота и сохранение в него без входа в меню.
Возможно, нужно поискать его в базе.
Для vc нашел.
{$CLEO .cs}
0000:
:1
wait 0
if and
0038: $onmission == 0 // integer values
80DF: not actor $player_actor driving
0AB0: key_pressed 0x74 // f5
jf @1
05E1: call 6412464 num_params 1 pop 0 0 // 0 это первый слот
wait 500 ms 0acd: show_text_high_priority "Save game" time 1000
jump @1
Здравствуйте, wmysterio.
Спасибо за Ваш ответ уважаемый wmysterio.
Все прекрасно понимаю, Вы очень занятой человек.
Скачал Вашу программу, хотел посмотреть уроки, она не запустила, очень жаль.
Вы мне очень помогли Вашим советом.
Решил проблему, сделав скрипт путем увеличения порядкового номера модели ход. оружия (они расположены последовательно начиная 258 и закачивая 269). Старался сделать скрипт компактным высокоуровневым кодом. Все работает! По нажатию клавиши 1 идет переключения оружия ближнего боя. Хотел, чтобы по нажатию клавиши 2 переключались пистолеты (colt45 и python), но почему-то не работает. Никак не могу понять причину! Если у Вас будет свободное время, подскажите, пожалуйста, очень Вашего ответа.
{$CLEO .cs} 0000: 0006: 0@ = 258 // начало диапазона ход. оружия 0006: 1@ = 0 // начало диапазона типа ход. оружия 0006: 3@ = 273 // начало диапазона пистолета 0006: 4@ = 16 // начало диапазона типа пистолета :1 while true wait 0 if // (1 ветка) 0256: player $PLAYER_CHAR defined // игрок жив then if // (2 ветка) 0AB0: key_pressed 0x31 // клавиши 1 нажата then gosub @sab // сдвиг модели ход. оружия на 1 перед if // (3 ветка) 8039: not 0@ == 270 //проверка это конец диапазона ход. оружия then gosub @sab1 // функция загр. модели ход. оружия else gosub @sab2 // возврат начала диапазона ход. оружия if // (4 ветка) 0AB0: key_pressed 0x32 // клавиши 1 нажата then gosub @sab11 // сдвиг модели пистолетов на 1 перед if // (4 ветка) 8039: not 3@ == 276 // проверка это конец диапазона ход. оружия then gosub @sab22 // функция загр. пистолетов else gosub @sab33 // возврат начала диапазона пистолетов end end end end end end jump @1 :sab11 000A: 3@ += 1 000A: 4@ += 1 0006: 5@ = 200 return :sab22 // функция загр. пистолетов 0AB1: call_scm_func @fun 3 3@ 4@ 5@ wait 900 // задержка между переключениями оружия return :sab33 0006: 3@ = 273 0006: 4@ = 16 return :sab 000A: 0@ += 1 000A: 1@ += 1 0006: 2@ = 0 return :sab1 // функция загр. модели ход. оружия 0AB1: call_scm_func @fun 3 0@ 1@ 2@ wait 900 // задержка между переключениями оружия return :fun repeat wait 0 Model.Load(0@) until Model.Available(0@) 01B2: give_actor $PLAYER_ACTOR weapon 1@ ammo 2@ Model.Destroy(0@) 0AB2: ret 0 :sab2 0006: 0@ = 258 0006: 1@ = 0 return
Спасибо, уважаемый wmysterio, что уделили время моего вопросу.
Вы очень много сделали для скриптинга, здесь выложен Ваш учебник http://ru-script.3dn.ru/forum/7-98-1#3399
К сожалению, не мог скачать ссылка не рабочая.
Если написать 0AB1: call_scm_func @fun 3 0@ 1@ 2@ // var_ret 0 то переключения оружия не происходит, нужно вернуть значения переменной @1, чтобы переключить на следующее оружие.
Подскажите, пожалуйста, уважаемые..
Как правильно пользоваться scm функцией с возвратом параметров? Ее использую, что сделать более компактным код. Делаю, скрипт меняющий оружия одного типа, по нажатию клавиши 1. В vc выбор оружия неудобный, нельзя нажать 6 и взять снайперку, как в других играх.
Решил исправить, для удобства использую SCM функция с возвратом параметров, но она не работает.
Не пойму в чем причина? Подскажите, пожалуйста.
Вот сделать часть для холодного оружия без SCM функции, она выглядит тогда слишком громоздкий код получится.
Приклепаю исходник скрипта с полным кодом, он содержит 119 строк, что очень много.
{$CLEO .cs} 0000: 0006: 1@ = 7 :1 wait 0 if 0AB0: key_pressed 0x31 jf @1 if 0039: 1@ == 7 jf @2 0006: 0@ = #cleaver // integer values 0006: 1@ = 8 // integer values 0006: 2@ = 0 // integer values gosub @sab jump @1 :2 if 0039: 1@ == 8 jf @3 0006: 0@ = #machete // integer values 0006: 1@ = 9 // integer values 0006: 2@ = 0 // integer values gosub @sab jump @1 :3 if 0039: 1@ == 9 jf @4 0006: 0@ = #katana // integer values 0006: 1@ = 10 // integer values 0006: 2@ = 0 // integer values gosub @sab jump @1 :4 if 0039: 1@ == 10 jf @5 0006: 0@ = #bat // integer values 0006: 1@ = 6 // integer values 0006: 2@ = 0 // integer values gosub @sab jump @1 :5 if 0039: 1@ == 6 jf @6 0006: 0@ = #chnsaw // integer values 0006: 1@ = 11 // integer values 0006: 2@ = 0 // integer values gosub @sab jump @1 :6 if 0039: 1@ == 11 jf @7 0006: 0@ = #brassknuckle // integer values 0006: 1@ = 1 // integer values 0006: 2@ = 0 // integer values gosub @sab jump @1 :7 if 0039: 1@ == 1 jf @8 0006: 0@ = #screwdriver // integer values 0006: 1@ = 2 // integer values 0006: 2@ = 0 // integer values gosub @sab jump @1 :8 if 0039: 1@ == 2 jf @9 0006: 0@ = #golfclub // integer values 0006: 1@ = 3 // integer values 0006: 2@ = 0 // integer values gosub @sab jump @1 :9 if 0039: 1@ == 3 jf @10 0006: 0@ = #nitestick // integer values 0006: 1@ = 4 // integer values 0006: 2@ = 0 // integer values gosub @sab jump @1 :10 if 0039: 1@ == 4 jf @11 0006: 0@ = #knifecur// integer values 0006: 1@ = 5 // integer values 0006: 2@ = 0 // integer values gosub @sab jump @1 :11 if 0039: 1@ == 5 jf @1 0006: 0@ = #hammer// integer values 0006: 1@ = 7 // integer values 0006: 2@ = 0 // integer values gosub @sab jump @1 :sab 0AB1: call_scm_func @fun 3 0@ 1@ 2@ var_ret 0 wait 900 // задержка между переключениями оружия return :fun repeat wait 0 Model.Load(0@) until Model.Available(0@) 01B2: give_actor $PLAYER_ACTOR weapon 1@ ammo 2@ Model.Destroy(0@) 0AB2: ret 0
С помощью SCM функции хочу сделать более удобный и читаемый код скрипта. Помогите, пожалуйста, мне.
Как правильно пользоваться scm функции с возвратом параметров? Ее использую, что сделать более компактным.
Мы передаем в call_scm_func @fun params_count 3 параметра модель оружия, его тип, кол-во патронов, чтобы они записались в переменные 0@ 1@ 2@ и в дальнейшим их использовать в другой функции, где создается и выдается оружия игроку. Но я получаю вылет.
{$CLEO .cs} 0000: 0006: 1@ = 7 :1 wait 0 if 0AB0: key_pressed 0x31 jf @1 if 0039: 1@ == 7 jf @2 05F6: call_scm_func @fun params_count 3 #cleaver 8 0 0@ 1@ 2@ gosub @sab jump @1 :2 if 0039: 1@ == 8 jf @1 05F6: call_scm_func @fun params_count 3 #machete 9 0 0@ 1@ 2@ gosub @sab jump @1 :fun repeat wait 0 Model.Load(0@) until Model.Available(0@) 01B2: give_actor $PLAYER_ACTOR weapon 1@ ammo 2@ Model.Destroy(0@) 0AB2: ret 3 0@ 1@ 2@ :sab wait 900 // задержка между переключениями оружия return
Здравствуйте.
Подскажите, пожалуйста, хочу создать пачку денег на точке, а игра вылетает.
Помогите, пожалуйста, разобраться, где ошибка.
{$CLEO .cs}
//-------------MAIN---------------
004F: create_thread @Noname_12
:Noname_12
wait 0
00D6: if
0256: player $PLAYER_CHAR defined
04A6: 3@ = create_asset_money_pickup_at 109.39 -808.28 10.46 money 1 1
:2
wait 0
if
0214: pickup 3@ picked_up
004D: jump_if_false @2
0215: destroy_pickup 3@
0109: player $PLAYER_CHAR money 1+= 4@
jump @Noname_12
004E: end_thread
Pages: 1