Postów:
32
Dołączył:
2012-07-15
Napisano dnia: 2014-12-21 19:08:29
Czy da się ustawić kilka spawnów dla danego pojazdu wraz z postacią?
Mianowicie gracz wciska odpowiedni klawisz po czym wyciąga komórkę i ją chowa (na tym skończyłem skrypt) po chwili pojawia się na radarze (i mapie) ikona w kształcie broni (Emmet), a w tym miejscu gdzie jest ta ikona pojawia się na mapie samochód (w tym przypadku PONY), a w środku na miejscu kierowcy aktor (w tym przypadku Emmet). Natomiast obok, przed lub za (to już sam sobie ustawię) pojawia się czerwony znacznik i gdy w niego wejdziemy to:
1. Emmet wysiada z auta i idzie na tyły furgonetki po czym otwiera tylne drzwi i odwraca się do gracza.
2. Gracz automatycznie wysiada z samochodu i idzie w stronę Emmeta (do tylnych drzwi).
I potem wyświetla się menu broni itp ale mi chodzi tylko o to co jest u góry napisane.
Jeśli chodzi o skrypt to skończyłem na pojawieniu się ikonki i samochodu i mogę pokazać zawartość skryptu.
Pytania są następujące:
1. Jak zrobić, by po schowaniu telefonu gra wybierała LOSOWE nam miejsce dla spawnu pojazdu.
2. Jaki jest opcod na to, by obydwa aktorzy (gracz i aktor) szli w wyznaczone miejsce?
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2014-12-22 17:54:02
1. Wylosuj liczbę całkowitą przez
GENERATE_RANDOM_INT_IN_RANGE i uzależnij wykonanie określonego kodu spawnu od wylosowanej wartości. Albo stwórz tablicę z koordynatami miejsc spawnu i użyj wylosowanej wartości jako indeksu.
2.
TASK_GO_STRAIGHT_TO_COORD
___________________
Moderator
Postów:
32
Dołączył:
2012-07-15
Napisano dnia: 2014-12-22 19:22:46
Silent napisał(a):
1. Wylosuj liczbę całkowitą przez GENERATE_RANDOM_INT_IN_RANGE i uzależnij wykonanie określonego kodu spawnu od wylosowanej wartości. Albo stwórz tablicę z koordynatami miejsc spawnu i użyj wylosowanej wartości jako indeksu.
U mnie to wygląda tak:
Kod:
:EMMET_6
0729: AS_actor
$PLAYER_ACTOR hold_cellphone 1
wait 500
0729: AS_actor
$PLAYER_ACTOR hold_cellphone 0
:EMMET_7
wait 500
0209: generate_random_int_in_range 0 10 store_to
23@
23@ = 413
Nie ogarniam za bardzo tego opcodu 0209. Gdy Użyję zmiennej lokalnej 23@ i pod nią przypiszę liczbę 413 (id pojazdu czyli PONY) to gra crashuje, gdy tylko CJ wyjmie komórkę. A wszystkie modele już wcześniej załadowałem i sprawdziłem, więc to nie tego wina. Aczkolwiek wydaje mi się, że wina leży po stronie zmiennej.
I nie wiem też jak zrobić, by po pojawieniu się pojazdu pojawiała się ikona na mapie. Miałem na myśli opcod 04CE, ale tam trzeba podawać współrzędne. Chyba, że bym użył zmiennej lokalnej i wtedy ustawił wartość samochodu.
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2014-12-22 21:10:57
Czemu generujesz liczbę i ją od razu nadpisujesz?
___________________
Moderator
Postów:
32
Dołączył:
2012-07-15
Napisano dnia: 2014-12-22 21:17:11
Silent napisał(a):
Czemu generujesz liczbę i ją od razu nadpisujesz?
A co mam przed tym jeszcze wykonać?
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2014-12-22 21:27:07
Hmmm... chyba celem losowania jest sprawdzenie, co wylosowałeś, żeby w zależności od tej zmiennej wykonać inny kod?
___________________
Moderator
Postów:
32
Dołączył:
2012-07-15
Napisano dnia: 2014-12-22 22:00:02
Silent napisał(a):
Hmmm... chyba celem losowania jest sprawdzenie, co wylosowałeś, żeby w zależności od tej zmiennej wykonać inny kod?
Jakbyś tylko mógł mi to rozpisać, bo nadal nie czaję o co chodzi z tym opcodem xd Ale forum jest chyba od pomagania, nie?
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2014-12-22 22:58:01
Nie żebym był złośliwy, ale niedawno na GTAF napisałeś, że SCM to dla Ciebie pestka ;)
Nie rozumiem co objaśnić. Opcode losuje liczbę i zapisuje ją do zmiennej. Ty ją odczytujesz i na podstawie tej wartości ustalasz spawn, za pomocą ifów albo tablicy koordynatów.
___________________
Moderator
Postów:
32
Dołączył:
2012-07-15
Napisano dnia: 2014-12-23 12:57:55
Nie wiem w którym miejscu dać ten opcod:
Kod:
{
$CLEO .cs}
thread 'EMMET'
:LOAD
04ED: load_animation
"CAR_CHAT"
0247: load_model #CELLPHONE
0247: load_model #PONY
023C: load_special_actor
'EMMET' as 1
:LOAD_CHECK
wait 10
if and
04EE: animation
"CAR_CHAT" loaded
0248: model #CELLPHONE available
0248: model 413 available
023D: special_actor 1 loaded
jf @LOAD_CHECK
:EMMET_1
wait 10
if
Player.Defined(
$PLAYER_CHAR)
jf @EMMET_1
:EMMET_2
wait 10
if
0AB0: key_pressed 0x78
jf @EMMET_1
:EMMET_3
wait 10
if
0A32: unknown_actor
$PLAYER_ACTOR in_car
jf @EMMET_6
0107: $phone = create_object #CELLPHONE at 0.0 0.0 0.0
070A: unknown_action_sequence
$PLAYER_ACTOR $phone 0.0 0.0 0.0 6 16
"NULL" "NULL" 0
0605: actor
$PLAYER_ACTOR perform_animation_sequence
"carfone_in" IFP_file
"CAR_CHAT" 4.0 loop 0 0 0 0 time -1
:EMMET_4
wait 0
if
8611: not actor
$PLAYER_ACTOR performing_animation
"carfone_in"
jf @EMMET_4
0605: actor
$PLAYER_ACTOR perform_animation_sequence
"carfone_loopA" IFP_file
"CAR_CHAT" 4.0 loop 0 0 0 0 time 5000
wait 500
0605: actor
$PLAYER_ACTOR perform_animation_sequence
"carfone_out" IFP_file
"CAR_CHAT" 4.0 loop 0 0 0 0 time -1
:EMMET_5
wait 0
if
8611: not actor
$PLAYER_ACTOR performing_animation
"carfone_out"
jf @EMMET_5
:EMMET_6
0729: AS_actor
$PLAYER_ACTOR hold_cellphone 1
wait 500
0729: AS_actor
$PLAYER_ACTOR hold_cellphone 0
04CE: $MARKER_EMMETS_GUN = create_icon_marker_without_sphere 18 at 2343.0818 -1245.1227 22.5
00A5: 17@ = create_car #PONY at 2343.0818 -1245.1227 22.5
04CE: $MARKER_EMMETS_GUN = create_icon_marker_without_sphere 18 at 2484.3376 -1538.9581 23.9927
00A5: 17@ = create_car #PONY at 2484.3376 -1538.9581 23.9927
04CE: $MARKER_EMMETS_GUN = create_icon_marker_without_sphere 18 at 2263.936 -1015.9934 55.3291
00A5: 17@ = create_car #PONY at 2263.936 -1015.9934 55.3291
04CE: $MARKER_EMMETS_GUN = create_icon_marker_without_sphere 18 at 2407.5669 -1205.7992 29.1926
00A5: 17@ = create_car #PONY at 2407.5669 -1205.7992 29.1926
:EMMET_7
wait 500
0209: generate_random_int_in_range 0 10 store_to
17@
:NOP
0000: NOP
0A93: end_custom_thread
Silent napisał(a):
Nie żebym był złośliwy, ale niedawno na GTAF napisałeś, że SCM to dla Ciebie pestka ;)
Proste skrypty to dla mnie pestka, a takie coś to już szkoła wyższa.
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2014-12-23 13:55:29
Nie. Używaj. Własnych. Zmiennych. Globalnych. W. CLEO. W zasadzie poza $PLAYER_ACTOR, $PLAYER_CHAR i $ONMISSION odradzałbym używanie jakichkolwiek zmiennych globalnych, chyba że chcesz rozpieprzyć ludziom save'y.
I zależy co chcesz losować. Chodzi o te 4 markery? Jeśli tak, to wylosuj liczbę przed ich spawnowaniem i sprawdź wartość:
Kod:
if 10@ == 0
then
if 10@ == 1
then
if 10@ == 2
then
end
end
___________________
Moderator
Postów:
32
Dołączył:
2012-07-15
Napisano dnia: 2014-12-23 14:24:41
Silent napisał(a):
Chodzi o te 4 markery?
Chodzi o te 4 markery, 4 furgonetki i 4 ikony.
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2014-12-23 14:35:02
No to masz już szablon, i wstaw do niego to, co potrzebujesz. I pozbądź się zmiennych globalnych jak najszybciej.
___________________
Moderator
Postów:
32
Dołączył:
2012-07-15
Napisano dnia: 2014-12-23 15:08:28
Może jeszcze raz powiem jak ja chcę..
Kod:
{
$CLEO .cs}
thread 'EMMET'
:LOAD
04ED: load_animation
"CAR_CHAT"
0247: load_model #CELLPHONE
0247: load_model #PONY
023C: load_special_actor
'EMMET' as 1
:LOAD_CHECK
wait 10
if and
04EE: animation
"CAR_CHAT" loaded
0248: model #CELLPHONE available
0248: model 413 available
023D: special_actor 1 loaded
jf @LOAD_CHECK
:EMMET_1
wait 10
if
Player.Defined(
$PLAYER_CHAR)
jf @EMMET_1
:EMMET_2
wait 10
if
0AB0: key_pressed 0x78
jf @EMMET_1
:EMMET_3
wait 10
if
0A32: unknown_actor
$PLAYER_ACTOR in_car
jf @EMMET_6
0107: 24@ = create_object #CELLPHONE at 0.0 0.0 0.0
070A: unknown_action_sequence
$PLAYER_ACTOR 24@ 0.0 0.0 0.0 6 16
"NULL" "NULL" 0
0605: actor
$PLAYER_ACTOR perform_animation_sequence
"carfone_in" IFP_file
"CAR_CHAT" 4.0 loop 0 0 0 0 time -1
:EMMET_4
wait 0
if
8611: not actor
$PLAYER_ACTOR performing_animation
"carfone_in"
jf @EMMET_4
0605: actor
$PLAYER_ACTOR perform_animation_sequence
"carfone_loopA" IFP_file
"CAR_CHAT" 4.0 loop 0 0 0 0 time 5000
wait 500
0605: actor
$PLAYER_ACTOR perform_animation_sequence
"carfone_out" IFP_file
"CAR_CHAT" 4.0 loop 0 0 0 0 time -1
:EMMET_5
wait 0
if
8611: not actor
$PLAYER_ACTOR performing_animation
"carfone_out"
jf @EMMET_5
:EMMET_6
0729: AS_actor
$PLAYER_ACTOR hold_cellphone 1
wait 500
0729: AS_actor
$PLAYER_ACTOR hold_cellphone 0
04CE: $MARKER_EMMETS_GUN = create_icon_marker_without_sphere 18 at 2343.0818 -1245.1227 22.5
00A5: 0@ = create_car #PONY at 2343.0818 -1245.1227 22.5
04CE: $MARKER_EMMETS_GUN = create_icon_marker_without_sphere 18 at 2484.3376 -1538.9581 23.9927
00A5: 0@ = create_car #PONY at 2484.3376 -1538.9581 23.9927
04CE: $MARKER_EMMETS_GUN = create_icon_marker_without_sphere 18 at 2263.936 -1015.9934 55.3291
00A5: 0@ = create_car #PONY at 2263.936 -1015.9934 55.3291
04CE: $MARKER_EMMETS_GUN = create_icon_marker_without_sphere 18 at 2407.5669 -1205.7992 29.1926
00A5: 0@ = create_car #PONY at 2407.5669 -1205.7992 29.1926
:EMMET_7
0209: generate_random_int_in_range 0 10 store_to
17@
wait 500
if 0@ == 0
then
04CE: $MARKER_EMMETS_GUN = create_icon_marker_without_sphere 18 at 2343.0818 -1245.1227 22.5
00A5: 0@ = create_car #PONY at 2343.0818 -1245.1227 22.5
else
if
0@ == 1
then
04CE: $MARKER_EMMETS_GUN = create_icon_marker_without_sphere 18 at 2484.3376 -1538.9581 23.9927
00A5: 0@ = create_car #PONY at 2484.3376 -1538.9581 23.9927
else
if
0@ == 2
then
04CE: $MARKER_EMMETS_GUN = create_icon_marker_without_sphere 18 at 2263.936 -1015.9934 55.3291
00A5: 0@ = create_car #PONY at 2263.936 -1015.9934 55.3291
else
if
0@ == 3
then
04CE: $MARKER_EMMETS_GUN = create_icon_marker_without_sphere 18 at 2407.5669 -1205.7992 29.1926
00A5: 0@ = create_car #PONY at 2407.5669 -1205.7992 29.1926
end
end
end
end
Chcę, aby po pętli EMMET_6 w DOWOLNYM miejscu na mapie pojawiała się furgonetka z kierowcą w środku i ikoną na mapie. Nie ogarniam w ogóle tego opcodu 0209, nie wiem nawet za co odpowiadają te cyfry 0 10. Dałeś mi ten szablon, ale nie wiem w którym dokładnie miejscu go wstawić.. Tak samo jest z opcodami 04CE i 00A5. Nie wiem czy wstawić te opcody przed opcodem 0209 czy już po. Dlatego ja bym wolał jakbyś mi od razu tutaj wstawił poprawiony skrypt jak to powinno prawidłowo wyglądać. A jak mi tu będziesz mówił o jakichś zmiennych to nici z tego.
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2014-12-23 16:26:11
0 10 to przedział, z którego losujesz liczby...
Ustawianie furgonetki w dowolnym miejscu na mapie to nie jest zbyt dobry pomysł, ale jeśli naprawdę chcesz to zrobić, to wygeneruj losowe koordynaty (z przedziału -3000.0 - 3000.0) przez
GENERATE_RANDOM_FLOAT_IN_RANGE, a potem znajdź najbliższą ścieżkę za pomocą
GET_CLOSEST_CAR_NODE:
Kod:
0208: 0@ = random_float_in_ranges -3000.0 3000.0
0208: 1@ = random_float_in_ranges -3000.0 3000.0
02C1: store_to
0@ 1@ 2@ car_path_coords_closest_to
0@ 1@ 0.0
Grooviec4 napisał(a):
Dlatego ja bym wolał jakbyś mi od razu tutaj wstawił poprawiony skrypt jak to powinno prawidłowo wyglądać. A jak mi tu będziesz mówił o jakichś zmiennych to nici z tego.
Wysil się troszkę, to nie są zaawansowane rzeczy. Pytasz o podstawy.
___________________
Moderator
Postów:
32
Dołączył:
2012-07-15
Napisano dnia: 2014-12-23 17:26:50
Silent napisał(a):
Ustawianie furgonetki w dowolnym miejscu na mapie to nie jest zbyt dobry pomysł
Dlaczego? A jakby lepiej pasowało? Jakby wóz do gracza przyjeżdżał?