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