Czy wiesz, że... rejestracja trwa tylko 20 sekund?
Strona główna forum Szukaj Rejestracja
Witaj, nieznajomy!
Poprzedni 1 Następny
Postów: 6 Dołączył: 2009-02-18
#
Witam.

ostatnio postanowiłem pobawić się cleo, itd. konto tam kiedyś dawno założone ;D

dobra do rzeczy. Otóż mam pewnego moda "Auto Driver"

Kod:
// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007


{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------

thread 
'ZAD' 

:ZAD_11
wait 
0 
if 
   
Player.Defined($PLAYER_CHAR)
else_jump 
@ZAD_11 
if 
   
Player.Controllable($PLAYER_CHAR)
else_jump 
@ZAD_11 
if 
   
Actor.Driving($PLAYER_ACTOR)
else_jump 
@ZAD_11 
if 
0AB0:   key_pressed 114 
else_jump 
@ZAD_11 
0AB6: store_target_marker_coords_to 1@ 2@ 3@ // IF and SET 

03C0: 0@ = actor $PLAYER_ACTOR car 
02C2: car 0@ drive_to 1@ 2@ 3@ 
03E5: show_text_box 'ZAD_A1' 
09B3: get_car 0@ door_status 14@ 
01F7: set_player $PLAYER_CHAR ignored_by_cops 1 

:ZAD_137
wait 

00AE: set_car 0@ traffic_behaviour_to 2 
0423: set_car 0@ improved_handling_to 2.0 // (float) 

Car.SetMaxSpeed(0@, 35.0)
Car.Health(0@) = 1000
Car.DoorStatus(0@) = 2
Car.SetImmunities(0@, 1, 1, 1, 1, 1)
wait 
100 
wait 
0 
if 
   
Actor.Driving($PLAYER_ACTOR)
else_jump 
@ZAD_245 
if 
0AB0:   key_pressed 114 
else_jump 
@ZAD_385 
072A: put_actor $PLAYER_ACTOR into_car 0@ driverseat 

:ZAD_245
wait 

03E5: show_text_box 'ZAD_A2' 
01F7: set_player $PLAYER_CHAR ignored_by_cops 0 
03C0: 0@ = actor $PLAYER_ACTOR car 
Car.DoorStatus(0@) = 14@
Car.SetImmunities(0@, 0, 0, 0, 0, 0)
wait 
100 
jump 
@ZAD_11 
wait 
0 
if 
0AB0:   key_pressed 68 
else_jump 
@ZAD_385 
0501: set_player $PLAYER_CHAR driveby_mode 1 
0563: set_player $PLAYER_CHAR driveby_ammo_to 1E11 
0713: actor $PLAYER_ACTOR driveby_actor $PLAYER_ACTOR car -1 point 0.0 0.0 0.0 radius -2 -1 -1 firing_rate 100 
jump 
@ZAD_385 

:ZAD_385
wait 
0 
if 
0AB0:   key_pressed 65 
else_jump 
@ZAD_137 
0AB6: store_target_marker_coords_to 1@ 2@ 3@ // IF and SET 

02C2: car 0@ drive_to 1@ 2@ 3@ 
018C: play_sound 1058 at 0.0 0.0 0.0 
jump 
@ZAD_137 


I teraz chciałbym aby "Auto" zamiast jechać do markera który zaznaczę na mapie, jechało do markera takiego jak są "wyscigi" czyli taki kwadracik na mini mapce.
Jeżeli nie da sie czegoś takiego to czy moge prosić o edycje i wskazanie miejsca w które wkleić kordy, chodzi mi o 17 miejsc :D

2 sprawa.

Chodzi mi o pomoc w napisaniu prostego skryptu nadającego 100 ammo do broni która mam aktualnie w ręce :D

3 sprawa. :D

też prosta... chodzi mi o skrypt który po naciśnięciu danego przycisku zmieni mi w danym samochodzie Handling.


Za wszelką pomoc dziękuje...

PS:jeśli nie chce wam sie skryptu pisać czy coś. to prosze chociaż o nakierowanie jak to zrobić.
Postów: 878 Dołączył: 2009-01-20
#
Przede wszystkim, na przyszłość dawaj kod SCM w znacznik bbcode scm, ułatwi to nam czytanie :) Daje to kolorowanie składni i identyfikatory opcodów są klikalne i przenoszą do szczegółowych opisów w naszej bazie.

1. Musisz zrobić 17 pętli uruchamianych po kolei, przed każdą tworzysz kolejny marker. Szkielet:
Kod:
// tworzysz marker1

:maker1
wait 
0
  if
    
01AD: car 0@ sphere 0 near_point 252@ 253@ radius 4.0 4.0
jf 
@marker1

// niszczysz marker1

// tworzysz marker2


:maker2
wait 
0
  if
    
01AD: car 0@ sphere 0 near_point 252@ 253@ radius 4.0 4.0
jf 
@marker2

// niszczysz marker2

// tworzysz marker3


:maker3
wait 
0
  if
    
01AD: car 0@ sphere 0 near_point 252@ 253@ radius 4.0 4.0
jf 
@marker3

itd.

2. Musisz odczytać ID bieżącej broni gracza, następnie odczytać liczbę amunicji, zwiększyć tę liczbę i ustawić na nowo ilość amunicji.
Kod:
0470: 3@ = actor $PLAYER_ACTOR current_weapon
041A: 4@ = actor $PLAYER_ACTOR weapon 3@ ammo
4@ += 100
017B: set_actor $PLAYER_ACTOR weapon 3@ ammo_to 4@


3. Odnośnie handlingu, to raczej niemożliwe, żeby dynamicznie zmienić na inny zdefiniowany w plikach *.dat/*.cfg, przynajmniej nie bez zabawy w nadpisywanie pamięci i ingerencji w silnik gry. W SCM jest jeden opcode na zmodyfikowanie handlingu przez współczynnik:
Kod:
0423: set_car 96@ improved_handling_to 2.0

___________________
Administrator
Postów: 6 Dołączył: 2009-02-18
#
Dzięki,z ammo poradziłem sobie śpiewająco, lecz mam problem z tymi markerami ;/.
Wiem że tróje tyłek, ale czy mógł byś mi dokładnie podać który podałem z edytowany przez ciebie w którym są te markery i wystarczy podać cordy? ponieważ nie mogę sobie z tym rady dać

z Góry thx
Postów: 878 Dołączył: 2009-01-20
#
Podałem ci gotowy kod, który trzeba tylko powielić i uzupełnić dodając opcody na tworzenie u usuwanie markera, które możesz znaleźć w naszej bazie opcodów lub we wbudowanej wyszukiwarce Sanny Buildera.

Możesz zapytać o konkretną rzecz, której nie rozumiesz, ale nie będę za ciebie tworzył skryptów.

___________________
Administrator
Postów: 6 Dołączył: 2009-02-18
#
Chodzi mi o to że nie moge ogarnąc opcoda na stworzenie markeru na
np 2505.53 -1688.46 13.56

Kod:
0167: 149@(256@,33i) = create_marker_at 50@(256@,33f) 50@(256@,33f) 50@(256@,33f) flags 0 2

Chyba tego nie ogarniam..
mam coś takiego
Kod:
018A: 1@ = create_checkpoint_at 2505.53 -1688.46 13.56
02C2: car 0@ drive_to 1@ 1@ 1@


a także nie wiem gdzie zrobić pętle w tym kodzie który podesłałem jako 1

PS:
Jak zwiększyć żeby móc używać większych liczb niż 33@ ponieważ gdy wpisze więcej to mi jakis error wyskakuje
Postów: 878 Dołączył: 2009-01-20
#
wader9009 napisał(a):
Jak zwiększyć żeby móc używać większych liczb niż 33@ ponieważ gdy wpisze więcej to mi jakis error wyskakuje

Nie da się, w CLEO jest tylko zakres do 33@ z tym że 32@ i 33@ są zarezerwowane na wewnętrzne timery, więc nadpisywanie ich to nie jest najlepszy pomysł. Więcej o zmiennych tutaj. Powinny ci wystarczyć 32 zmienne, zawsze możesz je nadpisywać. Jeżeli na początku korzystasz z 0@ i później nie jest ci już potrzebna, to zapisz tam co innego.

Odnośnie tego pierwszego opcode'a na stworzenie markera, musisz po prostu wprowadzić swoje dane:
Kod:
0167: 0@ = create_marker_at 2505.53 -1688.46 13.56 flags 0 2


Jest też jeszcze jedna opcja, bez oddzielnego tworzenia checkpointów. W pętlach sprawdzających, czy samochód jest w danym punkcie zmień flagę sphere z 0 na 1. Wtedy czerwona sfera będzie widoczna w danym punkcie tak długo, jak wykonywana jest pętla.
Kod:
:maker1
wait  
0
  if
     
01AD: car 0@ sphere 1 near_point 252@ 253@ radius 4.0 4.0
jf  
@marker1

___________________
Administrator
Postów: 628 Dołączył: 2009-01-22
#
Wygląda na to, że chcesz napisać coś działającego jak misja. Może powinieneś rozważyć przejście na starter w pliku .cs + właściwy skrypt w pliku .cm - w misjach masz 1024 zmiennych lokalnych, nie ma możliwości by ich Ci nie starczyło.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 6 Dołączył: 2009-02-18
#
nie, Chodzi mi żeby na podstawie skryptu w 1 poscie
auto zamiast jechać do markera który robie na mapie.
jechało z punktu A czekało 2 sec.. potem jechało do punktu B czekało 2 sec..Do A.. Do B.. i tak w koło
oraz też żeby jeżdziło tak samo tylko że A>B>C>D>E>F>G>H>I>J>K>O>P>R>S>T>U>A>B>C>D>E>F>G>H>I......
Postów: 878 Dołączył: 2009-01-20
#
Już 2 razy podałem ci kod na to, wystarczy tylko wkleić i powielić...

Alternatywnym sposobem są nagrane ścieżki RRR. Poradnik znajdziesz tutaj.

___________________
Administrator
Postów: 878 Dołączył: 2009-01-20
#
W twoim kodzie to będzie tak:

Kod:
// poprzedni twój kod aż do procedury ZAD_385


:ZAD_385
wait  
0  
if 
0AB0:   key_pressed 65  
else_jump  
@ZAD_137 

:GO
02C2: car 0@ drive_to 1@ 2@ 3@ // Punkt A


:maker1
wait  
0
  if
     
01AD: car 0@ sphere 1 near_point 1@ 2@ radius 4.0 4.0 // Punkt A

jf  
@marker1

02C2: car 0@ drive_to 1@ 2@ 3@ // Punkt B


:maker2
wait  
0
  if
     
01AD: car 0@ sphere 0 near_point 1@ 2@ radius 4.0 4.0 // Punkt B

jf  
@marker2

02C2: car 0@ drive_to 1@ 2@ 3@ // Punkt C


:marker3
wait  
0
  if
     
01AD: car 0@ sphere 0 near_point 1@ 2@ radius 4.0 4.0 // Punkt C

jf  
@marker3

02C2: car 0@ drive_to 1@ 2@ 3@ // Punkt D


:marker4
wait  
0
  if
     
01AD: car 0@ sphere 0 near_point 1@ 2@ radius 4.0 4.0 // Punkt D

jf  
@marker4

// jeżeli to ostatni punkt, skaczemy na początek ruchu


jump 
@GO


Zmienne 1@, 2@, 3@ to twoje współrzędne kolejnych punktów, możesz dać bezpośrednio jako liczby.

___________________
Administrator
Poprzedni 1 Następny
Zaloguj się lub zarejestruj się, żeby pisać na forum.
Created & Powered by MakG