Postów:
294
Dołączył:
2011-07-27
Napisano dnia: 2012-12-05 18:14:00
Witam, potrzebuję opcode na to, aby pojazd po wcześniejszym zatrzymaniu ruszył i jechał z prędkością, taką samą jaką miał przed zatrzymaniem. Z góry dzięki za pomoc
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2012-12-05 18:17:57
Spróbuj użyć na nim
PLAY_CAR_ANIM z ID 0, 1 lub 2. Nie jestem pewien co pojazd zrobi po czasie, który wskażesz w funkcji - być może ruszy ponownie. Jeśli nie ruszy, nadaj mu parametry jazdy ponownie (cel, Vmax).
___________________
Moderator
Postów:
294
Dołączył:
2011-07-27
Napisano dnia: 2012-12-05 19:41:15
Niestety PLAY_CAR_ANIM nic nie dało, nie ma żadnej reakcji, pojazd dalej stoi w miejscu. Jedynie po zastosowaniu 00AD pojazd rusza, ale z prędkością z góry zadaną (chyba?), a ja chciałbym żeby miał on różną prędkość w zależności na jakiej drodze się znajduje, tak jak jest to normalnie w grze.
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2012-12-05 19:44:23
To spróbuj zamienić to na
CAR_WANDER_RANDOMLY.
___________________
Moderator
Postów:
294
Dołączył:
2011-07-27
Napisano dnia: 2012-12-05 20:43:53
Już wcześniej próbowałem i też nic, ani na psycho_driver, ani na normal_driver...
Bo zasadniczo to chodzi mi o coś takiego, że np. wsiadam do jakiegoś napotkanego samochodu jako pasażer i właśnie nie wiem jak zrobić żeby ten samochód ruszył z miejsca jak już wsiądę i jechał byle gdzie z normalną prędkością. Dodam, że pojazd jest zatrzymywany opcodem 00AD (podaję prędkość 0.0).
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2012-12-05 21:02:52
CAR_WANDER_RANDOMLY resetuje wymuszoną prędkość nadaną przez
SET_CAR_CRUISE_SPEED, więc w sumie powinno zadziałać.
Wklej tu swój kod, chyba powinienem to przetestować samemu.
___________________
Moderator
Postów:
294
Dołączył:
2011-07-27
Napisano dnia: 2012-12-08 14:01:44
Nie ukrywam, że wzorowałem się na kilku podobnych modach więc może być tu dla Ciebie wiele niejasności ;-) Byłbym wdzięczny gdybyś mógł go poprawić. Skrypt po dekompilacji wygląda następująco i dalej pojazd nie rusza z miejsca (możliwe że coś źle połączyłem):
Kod:
//-------------MAIN---------------
0000: NOP
:NONAME_2
wait 0
4@ = -1
5@ = -1
if
Player.Defined($PLAYER_CHAR)
else_jump @NONAME_2
if
8449: not actor $PLAYER_ACTOR in_a_car
else_jump @NONAME_1338
if
0AB0: key_pressed 66
else_jump @NONAME_2
jump @NONAME_74
:NONAME_74
Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)
073E: get_car_in_sphere 1@ 2@ 3@ radius 8.0 model -1 handle_as 5@
if
not 5@ == -1
else_jump @NONAME_2
046C: 4@ = car 5@ driver
if
not 4@ == -1
else_jump @NONAME_172
if
87D6: not 4@ == $PLAYER_ACTOR // integer vars
else_jump @NONAME_172
:NONAME_172
05CA: AS_actor $PLAYER_ACTOR enter_car 5@ passenger_seat -1 100000 ms
01EA: 7@ = car 5@ max_passengers
if
7@ == 1
else_jump @NONAME_255
if
8431: not car 5@ passenger_seat_free 0
else_jump @NONAME_378
0432: 6@ = get_actor_handle_from_car 5@ passenger_seat 0
0526: set_actor 6@ stay_in_car 1
jump @NONAME_378
:NONAME_255
if
7@ == 3
else_jump @NONAME_378
if
8431: not car 5@ passenger_seat_free 0
else_jump @NONAME_308
0432: 6@ = get_actor_handle_from_car 5@ passenger_seat 0
0526: set_actor 6@ stay_in_car 1
:NONAME_308
if
8431: not car 5@ passenger_seat_free 1
else_jump @NONAME_343
0432: 8@ = get_actor_handle_from_car 5@ passenger_seat 1
0526: set_actor 8@ stay_in_car 1
:NONAME_343
if
8431: not car 5@ passenger_seat_free 2
else_jump @NONAME_378
0432: 9@ = get_actor_handle_from_car 5@ passenger_seat 2
0526: set_actor 9@ stay_in_car 1
:NONAME_378
wait 0
if
not Actor.Dead($PLAYER_ACTOR)
else_jump @NONAME_2
if
not Car.Wrecked(5@)
else_jump @NONAME_2
if
0202: actor $PLAYER_ACTOR near_car 5@ radius 6.0 6.0 flag 0
else_jump @NONAME_2
if and
80E1: not player 0 pressed_key 0
80E1: not player 0 pressed_key 1
80E1: not player 0 pressed_key 15
else_jump @NONAME_2
if
Actor.InCar($PLAYER_ACTOR, 5@)
else_jump @NONAME_378
046C: 4@ = car 5@ driver
if
87D6: not 4@ == $PLAYER_ACTOR // integer vars
else_jump @NONAME_2
:NONAME_520
10@ = 0
11@ = -1
12@ = 0.0
Car.StorePos(5@, 1@, 2@, 3@)
if
not Actor.Dead($PLAYER_ACTOR)
else_jump @NONAME_2
if
not Car.Wrecked(5@)
else_jump @NONAME_2
046C: 4@ = car 5@ driver
if
not 4@ == -1
else_jump @NONAME_1338
if
Actor.InCar($PLAYER_ACTOR, 5@)
else_jump @NONAME_1302
if
00E1: player 0 pressed_key 18
else_jump @NONAME_659
jump @NONAME_520
:NONAME_659
wait 0
Car.SetToNormalDriver(5@)
if
not Actor.Dead($PLAYER_ACTOR)
else_jump @NONAME_2
if
not Car.Wrecked(5@)
else_jump @NONAME_2
046C: 4@ = car 5@ driver
if
87D6: not 4@ == $PLAYER_ACTOR // integer vars
else_jump @NONAME_1338
if
80E1: not player 0 pressed_key 18
else_jump @NONAME_893
Car.StorePos(5@, 13@, 14@, 15@)
0509: 16@ = distance_between_XY 1@ 2@ and_XY 13@ 14@
16@ /= 15.0
005B: 12@ += 16@ // (float)
Car.StorePos(5@, 1@, 2@, 3@)
008C: 17@ = float 12@ to_integer
if
Actor.InCar($PLAYER_ACTOR, 5@)
else_jump @NONAME_1302
if
10@ == 1
else_jump @NONAME_659
04B8: get_weapon_data_from_actor $PLAYER_ACTOR weapon_group 5 weapon 18@ ammo 11@ model 19@
if
11@ == 0
else_jump @NONAME_659
jump @NONAME_1132
:NONAME_893
if
00E1: player 0 pressed_key 18
else_jump @NONAME_1338
if or
Actor.HasWeapon($PLAYER_ACTOR, 28)
Actor.HasWeapon($PLAYER_ACTOR, 29)
Actor.HasWeapon($PLAYER_ACTOR, 32)
else_jump @NONAME_1036
04B8: get_weapon_data_from_actor $PLAYER_ACTOR weapon_group 5 weapon 18@ ammo 11@ model 19@
if
not 11@ == 0
else_jump @NONAME_1036
if
10@ == 0
else_jump @NONAME_1132
0713: actor $PLAYER_ACTOR driveby_actor -1 car -1 point 0.0 0.0 0.0 radius 300.0 8 1 firing_rate 100
10@ = 1
:NONAME_1036
if
not Actor.Dead($PLAYER_ACTOR)
else_jump @NONAME_2
if
00E1: player 0 pressed_key 18
else_jump @NONAME_1080
wait 0
jump @NONAME_1036
:NONAME_1080
046C: 4@ = car 5@ driver
if
not 4@ == -1
else_jump @NONAME_1338
if
87D6: not 4@ == $PLAYER_ACTOR // integer vars
else_jump @NONAME_1338
jump @NONAME_659
:NONAME_1132
10@ = 0
0432: 6@ = get_actor_handle_from_car 5@ passenger_seat 0
if
87D6: not 6@ == $PLAYER_ACTOR // integer vars
else_jump @NONAME_1251
if
7@ == 3
else_jump @NONAME_1080
0432: 8@ = get_actor_handle_from_car 5@ passenger_seat 1
if
87D6: not 8@ == $PLAYER_ACTOR // integer vars
else_jump @NONAME_1268
0432: 9@ = get_actor_handle_from_car 5@ passenger_seat 2
if
87D6: not 9@ == $PLAYER_ACTOR // integer vars
else_jump @NONAME_1285
jump @NONAME_1080
:NONAME_1251
072B: put_actor $PLAYER_ACTOR into_car 5@ passengerseat 0
jump @NONAME_1036
:NONAME_1268
072B: put_actor $PLAYER_ACTOR into_car 5@ passengerseat 1
jump @NONAME_1036
:NONAME_1285
072B: put_actor $PLAYER_ACTOR into_car 5@ passengerseat 2
jump @NONAME_1036
:NONAME_1302
wait 0
Car.SetMaxSpeed(5@, 0.0)
0633: AS_actor $PLAYER_ACTOR exit_car
wait 3000
Car.SetToNormalDriver(5@)
jump @NONAME_2
:NONAME_1338
03C0: 5@ = actor $PLAYER_ACTOR car
if
not Actor.Dead($PLAYER_ACTOR)
else_jump @NONAME_2
if
not Car.Wrecked(5@)
else_jump @NONAME_2
046C: 4@ = car 5@ driver
if
87D6: not 4@ == $PLAYER_ACTOR // integer vars
else_jump @NONAME_2
if
4@ == -1
else_jump @NONAME_520
if
80E1: not player 0 pressed_key 18
else_jump @NONAME_893
if
8AB0: not key_pressed 66
else_jump @NONAME_1302
if
80E1: not player 0 pressed_key 15
else_jump @NONAME_1302
if
Actor.InCar($PLAYER_ACTOR, 5@)
else_jump @NONAME_1302
jump @NONAME_1338
Silent i jak tam sprawdziłeś? Wiesz może co tu jest nie tak?
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2012-12-13 22:38:34
Trochę dziwne że nie rusza, ale skoro skaczesz do początku skryptu i dalej nie musisz przejmować się tym pojazdem, potraktuj go
MARK_CAR_AS_NO_LONGER_NEEDED.
___________________
Moderator
Postów:
294
Dołączył:
2011-07-27
Napisano dnia: 2012-12-15 10:59:32
Nie wiem, może to jest trochę dziwne, ale z powyższym opcode pojazd w dalszym ciągu nie rusza z miejsca. Spróbuję jeszcze trochę lepiej ułożyć ten skrypt, a jak w dalszym ciągu nie będzie działać to zastosuję 00AD i niestety narzucę jakąś prędkość, bo tylko po zastosowaniu tego opcode pojazd rusza.
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2012-12-15 11:02:34
Możesz narzucić mu prędkość i oflagować go jako niepotrzebny. Przy odrobinie szczęścia powinno pomóc.
No i rzeczywiście, skrypt wymaga poprawek, ma kilka miejsc które nie mają sensu.
Edit:
A czy w dalszym ciągu nie próbowałeś zamienić
SET_CAR_CRUISE_SPEED zatrzymujące pojazd na
PLAY_CAR_ANIM? Czas 3000ms i akcja 0, 1 lub 2 powinny pasować.
Edit2:
Teraz zauważyłem - czemu na końcu użyłeś
CAR_SET_IDLE? Zamień to na
CAR_WANDER_RANDOMLY i nie przejmuj się tym, że w Sannym nazywa się to 'psycho driver'. Sanny ma sporo niepoprawnych definicji - w sascm.ini v2 na GTAG zostanie to poprawione.
___________________
Moderator
Postów:
294
Dołączył:
2011-07-27
Napisano dnia: 2012-12-17 17:12:34
Cytat:
A czy w dalszym ciągu nie próbowałeś zamienić SET_CAR_CRUISE_SPEED zatrzymujące pojazd na PLAY_CAR_ANIM? Czas 3000ms i akcja 0, 1 lub 2 powinny pasować.
O tym pisałem na początku, a w sumie podczas wsiadania do pojazdu jest on zatrzymywany opcodem 05CA (chyba), i to może ten opcode trzeba jakoś odwołać? Bo gracz pomimo, że wejdzie do pojazdu to pojazd nie rusza.
Cytat:
Teraz zauważyłem - czemu na końcu użyłeś CAR_SET_IDLE? Zamień to na CAR_WANDER_RANDOMLY i nie przejmuj się tym, że w Sannym nazywa się to 'psycho driver'. Sanny ma sporo niepoprawnych definicji - w sascm.ini v2 na GTAG zostanie to poprawione.
Jak już wcześniej napisałem ani CAR_SET_IDLE, ani CAR_WANDER_RANDOMLY nic nie dały. Próbowałem jeden i drugi...