#1 Re: Вопросы по скриптингу » Один вопрос » 26-02-2018 11:03

Shag wrote:

egor230
Ответил здесь.

спасибо большое,  Вы очень помогли.

#2 Re: Вопросы по скриптингу » Один вопрос » 23-02-2018 12:38

Здравствуйте, всем.
Хочу сделать гараж, где был гараж Джонса Кэма в миссии "работе".
Не получается, подскажите, пожалуйста.

{$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 правый дальный угол

#3 Re: Вопросы по скриптингу » Один вопрос » 23-02-2018 07:49

Для 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

#4 Re: Вопросы по скриптингу » Один вопрос » 15-09-2017 10:00

Здравствуйте, 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       

#5 Re: Вопросы по скриптингу » Один вопрос » 13-09-2017 14:43

Спасибо, уважаемый wmysterio, что уделили время моего вопросу.
Вы очень много сделали для скриптинга, здесь выложен Ваш учебник http://ru-script.3dn.ru/forum/7-98-1#3399
К сожалению, не мог скачать ссылка не рабочая.
Если написать 0AB1: call_scm_func @fun 3 0@ 1@ 2@ // var_ret 0   то переключения оружия не происходит, нужно вернуть значения переменной @1, чтобы переключить на следующее оружие.

#6 Re: Вопросы по скриптингу » Один вопрос » 13-09-2017 08:35

Подскажите, пожалуйста, уважаемые..
Как правильно пользоваться 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    

#7 Re: Вопросы по скриптингу » $Вопросы по пикапом$ » 15-07-2017 11:47

Здравствуйте.
Подскажите, пожалуйста, хочу создать пачку денег на точке, а игра вылетает.
Помогите, пожалуйста, разобраться, где ошибка.
{$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

Board footer

Powered by FluxBB