[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Игры серии GTA » GTA III » Вопросы по скриптингу GTA 3
Вопросы по скриптингу GTA 3
Drs36
Проверенные
23.01.14 13:37
Offline
Здесь обсуждаются вопросы по скриптингу GTA 3.

---------------------------------------------------------------------
Как сделать чтобы охранник появлялся рядом с игроком

Код
thread '1GUARD'    

:1GUARD_10
Model.Load(#CRIMINAL01)

:1GUARD_18
wait 0    
if    
05EE:  key_pressed 50 //VK_...    
jf @1GUARD_18    
$1498 = Actor.Create(CivMale, #CRIMINAL01, 870.0, -308.1875, -100.0)
01B2: give_actor $1498 weapon 2 ammo 999    
011A: set_actor $1498 flags 64    
Actor.Health($1498) = 850
01DF: tie_actor $1498 to_player $PLAYER_CHAR    
02E2: set_actor $1498 weapon_accuracy_to 100    

03C4: set_status_text_to $1498 1 'TEXT4'    

:1GUARD_149
wait 0    
if    
      Actor.Dead($1498)
jf @1GUARD_149    
Actor.DestroyWithFade($1498)

HYPERMUV
Проверенные
23.01.14 14:49
Offline
Drs36, если тебе надо, чтобы появлялся рядом с тобой то, тогда:
Код
actor.StorePos($PLAYER_ACTOR,1@,2@,3@) // записываем наши координаты
1@ += 5.0 // плюсуем, чтобы не появился в тебе  
$1498 = Actor.Create(CivMale, #CRIMINAL01, 1@,2@,3@) //как я помню должен появится правее от тебя

Добавлено (23.01.14, 13:45)
---------------------------------------------
это для SA

Добавлено (23.01.14, 13:49)
---------------------------------------------
Если для GTA3
Тогда так должно быть

Код
00A0: store_actor $PLAYER_ACTOR position_to 1@ 2@ 3@
1@ += 5.0  
009A: $1498 = create_actor 1 #CRIMINAL01 at 1@ 2@ 3@

Точно не знаю, не работал в GTA3

SINGER
Проверенные
23.01.14 20:48
Offline
Классная тема. Вот только о скриптинге GTA3 маловато инфы в инете.

wmysterio
Администраторы
Скриптер
23.01.14 21:03
Offline
Цитата SINGER ()
Классная тема. Вот только о скриптинге GTA3 маловато инфы в инете.

Будем исследовать smile
if( robots->EvilFlag = true ) {
robots->KillHumans();
}

Drs36
Проверенные
23.01.14 23:30
Offline
Проблема со скриптом охраны

Код
thread '1GUARD'

:1GUARD_10
Model.Load(#CRIMINAL01)

:1GUARD_18
wait 0
if
05EE: key_pressed 50 //VK_...
jf @1GUARD_18
$1498 = Actor.Create(CivMale, #CRIMINAL01, 870.0, -308.1875, -100.0)
01B2: give_actor $1498 weapon 2 ammo 999
011A: set_actor $1498 flags 64
Actor.Health($1498) = 850
01DF: tie_actor $1498 to_player $PLAYER_CHAR
02E2: set_actor $1498 weapon_accuracy_to 100

:1GUARD_149
wait 0
if
Actor.Dead($1498)
jf @1GUARD_149
Actor.DestroyWithFade($1498)


Как к этому скрипту прикрутить полосу жизни охранника ?
Отредактировал Drs36 - Четверг, 23.01.14, 23:31

wmysterio
Администраторы
Скриптер
24.01.14 16:54
Offline
Цитата Drs36 ()
Как к этому скрипту прикрутить полосу жизни охранника ?
Нужно использовать статус-текст:
Код
03C4: set_status_text_to $RC_BUGGY_KILLS 0 'KILLS'

$RC_BUGGY_KILLS - это жизнь охранника.
0 - полоска или цифры(0 или 1, пока не знаю какие в гта3 цифры отвечают за полоску)
'KILLS' - текст, который будет выведен возле полоски
if( robots->EvilFlag = true ) {
robots->KillHumans();
}

Drs36
Проверенные
24.01.14 17:10
Offline
Вывел в виде цифр но они не уменьшаются,а как бы заморожены когда в охранника стреляют.

wmysterio
Администраторы
Скриптер
24.01.14 17:44
Offline
Цитата Drs36 ()
Вывел в виде цифр но они не уменьшаются,а как бы заморожены когда в охранника стреляют.
Это потому, что переменную $RC_BUGGY_KILLS нужно обновлять в циклах.
Код
Actor.Health($1498) = 850
$1444 = Actor.Health($1498)
03C4: set_status_text_to $1444 0 'KILLS'

while not Actor.Dead($1498)
wait 0
$1444 = Actor.Health($1498)
end
if( robots->EvilFlag = true ) {
robots->KillHumans();
}

Drs36
Проверенные
24.01.14 17:53
Offline
За это спасибо,но как убрать текст когда охранник умер.

wmysterio
Администраторы
Скриптер
24.01.14 18:15
Offline
Цитата Drs36 ()
но как убрать текст когда охранник умер.
После выполнения цикла пишешь
Код
0151: remove_status_text $1444
if( robots->EvilFlag = true ) {
robots->KillHumans();
}

Drs36
Проверенные
30.01.14 18:35
Offline
Код
thread 'ACTOR'
Model.Load(#CRIMINAL01)

:ACTOR_14
wait 0
if

Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)
1@ += 5.0 // floating-point values
$1498 = Actor.Create(CivMale, #CRIMINAL01, 1@, 2@, 3@)
$1444 = Marker.CreateAboveActor($1498)
01B2: give_actor $1498 weapon 6 ammo 999
01DF: tie_actor $1498 to_player $PLAYER_CHAR
02E2: set_actor $1498 weapon_accuracy_to 100
Actor.Health($1498) = 9999
02AB: set_actor $1498 immunities 1 1 1 1 1
$1444 = Actor.Health($1498)
03C4: set_status_text_to $1444 0 'TEXT'

0243: set_actor $1498 ped_stats_to 6
0350: unknown_actor $1498 not_scared_flag 1
011A: set_actor $1498 flags 64
011A: set_actor $1498 flags 16

:ACTOR_189
not Actor.Dead($1498)
01DE: tie_actor $1498 to_actor $PLAYER_ACTOR
01DF: tie_actor $1498 to_player $PLAYER_CHAR
else_jump @ACTOR_236
wait 0
$1444 = Actor.Health($1498)
jump @ACTOR_189

[code]:ACTOR_236
0151: remove_status_text $1444   

:ACTOR_241
wait 0   
if   
     Actor.Dead($1498)
else_jump @ACTOR_241   
Actor.DestroyWithFade($1498)
wait 1000   
jump @ACTOR_14


Скрипт зависает в чем может быть проблема ?

Добавлено (30.01.14, 17:35)
---------------------------------------------
Тут разобрался.

Отредактировал Drs36 - Четверг, 30.01.14, 14:17

Vital
Друзья
Скриптер
30.01.14 18:38
Offline
Drs36, модель #CRIMINAL01 нужно не только объявить, но и загрузить опкодом 038B (после model.load), а также выгрузить после использования (создания актёра с такой моделью) с помощью model.destroy.
Также у тебя в ACTOR_14 в if ничего нету, а в ACTOR_189 вообще нету if, а сразу идёт условный опкод.
Это пока то, что я увидел в коде, игры нету на компе, проверить не смогу.
Кстати, два момента:
1) Зачем выводить здоровье охранника, если у него все иммунитеты? Оно не будет уменьшаться в любом случае тогда. Если иммунитеты будут не все, то ещё можно, но в данном случае это бессмысленно.
2) Лучше выкладывай исходный код, а не декомпилированный, а то неудобно читать с метками, который оформлены так. Если пишешь метками, то всё равно видно, что это декомпиляция, так как имена меток характерные.
2109: create_special_actor $VITAL in_front_of_computer

Drs36
Проверенные
02.02.14 18:41
Offline
Код
thread 'ACTOR'  

:ACTOR_10
Model.Load(#GANG03)

:ACTOR_14
wait 0  
if  
05EE:  key_pressed 49 //VK_...  
else_jump @ACTOR_14  
Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)
1@ += 5.0 // floating-point values  
$FACTORY_TRIAD1 = Actor.Create(Gang2, #GANG03, 1@, 2@, 3@)
$1307 = Marker.CreateAboveActor($FACTORY_TRIAD1)
01B2: give_actor $FACTORY_TRIAD1 weapon 6 ammo 999  
01DF: tie_actor $FACTORY_TRIAD1 to_player $PLAYER_CHAR  
02E2: set_actor $FACTORY_TRIAD1 weapon_accuracy_to 100  
03C4: set_status_text_to $1444 0 'TEXT'
02AB: set_actor $FACTORY_TRIAD1 immunities 1 1 1 1 1  

   
01CB: actor $FACTORY_TRIAD1 kill_actor $FACTORY_TRIAD1  
8320:   not actor $FACTORY_TRIAD1 in_range_of_player $PLAYER_CHAR  
0243: set_actor $FACTORY_TRIAD1 ped_stats_to 6  
0350: unknown_actor $FACTORY_TRIAD1 not_scared_flag 1  
011A: set_actor $FACTORY_TRIAD1 flags 64  
011A: set_actor $FACTORY_TRIAD1 flags 16
$1444 = Actor.Health($FACTORY_TRIAD1)  
Actor.Health($FACTORY_TRIAD1) = 9999

$1444 = Actor.Health($FACTORY_TRIAD1)

   
while not Actor.Dead($FACTORY_TRIAD1)
wait 0
$1444 = Actor.Health($FACTORY_TRIAD1)
end

:ACTOR_196
    not Actor.Dead($FACTORY_TRIAD1)
01DE: tie_actor $FACTORY_TRIAD1 to_actor $PLAYER_ACTOR  
01DF: tie_actor $FACTORY_TRIAD1 to_player $PLAYER_CHAR  
wait 0  
$1444 = Actor.Health($FACTORY_TRIAD1)
jump @ACTOR_196  
0151: remove_status_text $1444  

:ACTOR_241
wait 0  
if  
    Actor.Dead($FACTORY_TRIAD1)
else_jump @ACTOR_241  
wait 10  
jump @ACTOR_10


Что надо добавить в этот скрипт чтобы у охраниика появился автомобиль,и чтобы он ехал на нем за игроком как-бы сопровождая ?

Slivkin-Sergey
Модераторы
02.02.14 19:41
Offline
Блин, ты что, прикалываешься что ли? А давай за тебя весь скрипт напишем! А?

...

Извините. Понимаю, сам ещё не так доставал.

Ну разве трудно догадаться: создаёшь машину, садишь в неё актёра и заставляешь следовать за игроком. В VC я почти не скриптовал, но либо просто tie-ишь его, либо попроубй 01D1 или 01D2.
Отредактировал Slivkin-Sergey - Воскресенье, 02.02.14, 19:49

Drs36
Проверенные
02.02.14 22:50
Offline
Машину создал но как создать случайную машину ?

Код
thread 'CAR'
   

:CAR_10
wait 0  
if  
    Player.Defined(0)

:CAR_22
jf @CAR_10  
if and
    not Actor.Dead($PLAYER_ACTOR)
    not Actor.Driving($PLAYER_ACTOR)
05EE:  key_pressed 50 //VK_...  
jf @CAR_10  
model.load(#MANANA)

038B: load_requested_models  
Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)
1@ += 5.0 // floating-point values  

  $1497 = car.Create(#MANANA, 1@, 2@, 3@)
  Car.SetImmunities($1497 , 1, 1, 1, 1, 1)  
model.destroy(#MANANA)
wait 2500  
jump @CAR_10

DK22Pac
Друзья
TOP Скриптер
03.02.14 02:03
Offline
Drs36, random в помощь.

Slivkin-Sergey
Модераторы
03.02.14 11:07
Offline
DK22Pac, в ВС вроде нету опкода для создания машины со случайной моделью.

Форум » Игры серии GTA » GTA III » Вопросы по скриптингу GTA 3
Страница 1 из 11
Поиск: