Czy wiesz, że... na forum możesz uzyskać pomoc nt. modowania GTA?
Strona główna forum Szukaj Rejestracja
Witaj, nieznajomy!
Poprzedni 1 2 3 4 5 6 7 8 9 10 ... 20 Następny
Postów: 294 Dołączył: 2011-07-27
#
Próbowałem wiele sposobów, ale wciąż nic z tego. Mój kod zamieszczam poniżej. Pomoże mi ktoś znaleźć tu błąd?

Kod:

{$CLEO}

0000:
0A95: enable_thread_saving 

while  
true
    0001:  wait  100 ms 
    if
         
Player.Defined($PLAYER_CHAR) 
    then
         
if  and
             
Actor.Driving($PLAYER_ACTOR)
             0AB0:  key_pressed 49       // 1 

        then
            
03C0: 0@ = actor $PLAYER_ACTOR car 
            0441: 1@ = car 0@ model 
            09EF: set_behind_camera_autoposition_mode_for_car_model 1@ distance 1.0 altitude_multiplier 1.0 angle_X 0.25
            0001:  wait  500 ms
        else 
           
if  or
               
not Actor.Driving($PLAYER_ACTOR)
               0AB0:  key_pressed 50   // 2

           then
                
09F0: restore_behind_camera_autoposition_mode_for_all_car_models 
                0001:  wait  500 ms
           end     
        
end
     end 
end

Postów: 294 Dołączył: 2011-07-27
#
Silent napisał(a):
Zrobiłem to w formie funkcji SCM do odczytywania i zapisywania stanu paliwa. W momencie, gdy odczyt zwróci -1 oznacza to że pojazd nie ma przypisanego do siebie stanu paliwa (np. dopiero co został stworzony) i należy mu go przypisać.

Całość kodu najlepiej umieścić na samym dole skryptu.

Kod:

:ODCZYT_STANU_PALIWA
{
    Parametry:
    1) uchwyt pojazdu

    Zwracane:
    1) stan paliwa (-1 jeśli pojazd nie ma przypisanego stanu paliwa)
}0B10: 1@ = 0@  AND  0xFF
0B15: 2@ = 0@ SHR 8
0AC6: 3@ = label @STAN_PALIWA offset
2@ *= 3
005A: 3@ += 2@
0A8D: 4@ = read_memory 3@ size 1 virtual_protect 0 
if  803B:    not  1@ == 4@ 
then
     0AB2: ret 1 -1 
end
3@ += 1
0A8D: 5@ = read_memory 3@ size 2 virtual_protect 0
0AB2: ret 1 5@


:ZAPIS_STANU_PALIWA
{
    Parametry:
    1) uchwyt pojazdu
    2) stan paliwa
}0B10: 2@ = 0@  AND  0xFF
0B15: 3@ = 0@ SHR 8
0AC6: 4@ = label @STAN_PALIWA offset
3@ *= 3
005A: 4@ += 3@
0A8C: write_memory 4@ size 1 value 2@ virtual_protect 0
4@ += 1
0A8C: write_memory 4@ size 2 value 1@ virtual_protect 0
0AB2: ret 0


:STAN_PALIWA 
hex
00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000
00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000
00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000
00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000
00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000
00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000
00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000
00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000
00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000
00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000
00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 00 0000 
end


Jak dobrze pamiętam ten kod pisany był dla liczb całkowitych. A jak wyglądałby ten kod dla liczb float ? Dużo należałoby zmienić?

Postów: 294 Dołączył: 2011-07-27
#
Też nie działa.

Z tego co wiem to opcode 09EF może być zastosowany tylko do jednego modelu jednocześnie. I rzeczywiście gdy przesiadam się na inny model pojazdu to w nim kamera jest "normalna", a nie taka jaką ustawiłem przy pomocy danego klawisza. Pytanie tylko dlaczego jeśli przez wciśnięcie danego klawisza zmienię ustawienie kamery na model pojazdu taki którym akurat się nie poruszam to kamera i tak się nie dezaktywuje z mojego modelu pojazdu?
Postów: 294 Dołączył: 2011-07-27
#
Mam pytanko, w jaki sposób można dezaktywować opcode 09EF ? Po zastosowaniu tego opcode można podnieść kamerę, tak że niektóre pojazdy lepiej się prowadzi. Aktywuję go jakimś klawiszem i wszystko jest OK, tylko problem w tym, że w żaden sposób nie mogę go dezaktywować. Opcode 09F0, który teoretycznie powinien go dezaktywować, u mnie nie wnosi żadnej zmiany.
Postów: 294 Dołączył: 2011-07-27
#
Szkoda. A dało by radę zrobić tak, żeby wpakować te wszystkie pliki do jednego, nowego archiwum img (albo archiwum o jakimś innym rozszerzeniu), a później to nowe archiwum wrzucić do istniejącego gta3.img?
Postów: 294 Dołączył: 2011-07-27
#
Nowe modele mają być dodane jako nowe, nie będą podmieniane za istniejące. Jeszcze nie wiem ile ich dokładnie wyjdzie, ale tak około 30.
Postów: 294 Dołączył: 2011-07-27
#
Robię takiego moda w którym trzeba dodać sporo nowych modeli i chciałbym po prostu żeby zamiast dodawać dziesiątki nowych plików, dodać tylko jeden z każdego rodzaju (dff, txd i col). Limity nie stanowią dla mnie w tym przypadku żadnego problemu. Jak możesz to opisz tą metodę. Może akurat mi się spodoba.
Postów: 294 Dołączył: 2011-07-27
#
Mam pytanie, czy w GTA SA jest możliwość zrobienia archiwum z plikami .dff które to archiwum dało by się umieścić w archiwum .img jako jeden plik zawierający wiele modeli? Chodzi mi o coś takiego jak to jest z plikami kolizji.

Jeżeli się da to jak takie coś zrobić, tzn. jak zmieścić kilka modeli dff w jednym?
Postów: 294 Dołączył: 2011-07-27
#
Mam taki problem, pobrałem sobie model domu i wstawiłem go do gry. Dodałem markery wejścia i wyjścia i wszystko działa jak trzeba. Lecz gdy dodaje drzwi (sam model miał zostawioną "dziurę" w miejscu drzwi) to wewnątrz budynku po wejściu w marker wyjściowy CJ spada w dół, tak jakby od razu wyłączałyby się kolizje. Wie ktoś może w czym problem? Bez drzwi wszystko jest ok.
Postów: 294 Dołączył: 2011-07-27
#
Nie wiem jak rozumieć zapis typu: -1.74846e-007

Czy jest to:

-1,74846 * (e^-0,07)
-1,74846 * (e^-7)
-1,74846 * (e-0,07)
-1,74846 * (10^-7)
czy jeszcze inaczej?
Postów: 294 Dołączył: 2011-07-27
#
Próbowałem wiele sposobów i na pewno się da to zrobić też na zewnątrz. Częściowo mi to wyszło, tylko że lustro powstało ponad głową CJ'a, ale nawet nieźle to wyglądało. Innym razem lustro powstało wysoko w powietrzu, tak że widać w nim było sporą część Los Santos. Ale jakoś nie potrafię tego odwrócić tak żeby odbicie powstawało na powierzchni ziemi. Nawet w GTA United był zastosowany ten efekt w jednym z basenów w Vice City (na zewnątrz).
Postów: 294 Dołączył: 2011-07-27
#
Chciałem się dowiedzieć w jaki sposób tworzone są tzw. mirrory, czyli lustra i różne odbicia na powierzchni. W GTA SA są dwa różne formaty:

Kod:
CenterX, CenterY, CenterZ, Unknown1, WidthY, BottomZ, WidthX, Unknown2, TopZ, Flag, Unknown3
CenterX, CenterY, CenterZ, Unknown1, WidthY, BottomZ, WidthX, Unknown2, TopZ, Flag, Vx, Vy, Vz, Cm


Z tego co udało mi się dowiedzieć to:

CenterX, CenterY, CenterZ - współrzędne środka lustra
Unknown1, Unknown2, Unknown3 - zawsze mają wartość zero
WidthY, WidthX - kolejno długość i szerokość lustra (podane wartości to chyba promienie)
BottomZ, TopZ - kolejno najwyższy i najniższy punkt lustra
Flag - oczywiście flaga

I teraz ta mniej zrozumiała część, tzw. parametry lustra:

Vx, Vy, Vz - kierunki lustra ???
Cm - współrzędna powierzchni lustra w kierunku osi ??? - z tego co zauważyłem jest to ta sama, bądź bardzo zbliżona, wartość co CenterZ.

Dla przykładu chciałbym stworzyć takie lustro na Groove St. przed domem CJ'a. Użyję tego drugiego formatu, bazując na przykładzie odbicia na podłodze wewnątrz domu CJ'a, którego kod wygląda tak:
Kod:
2496.5, -1702.49, 1013.75, 0, 28.4774, 1013.75, 6.19434, 0, 1030.5, 1, 1.15219e-006, -3.34393e-007, 1, 1013.75


Stąd mój kod, który powinien dać odbicie przed domem CJ'a wygląda tak:

Kod:
2493.0081, -1675.6173, 12.34, 0, 10, 12.34, 10, 0, 20.34, 1, Vx, Vy, Vz, 12.34


Pozostaje pytanie co powinienem wstawić w miejsce Vx, Vy, Vz ???
Postów: 294 Dołączył: 2011-07-27
#
Modyfikacja ciekawa, aczkolwiek jest jeden problem - drobna różnica poziomów zaawansowania pomiędzy mną, a Silent'em. Ten plik z "otwartym" kodem źródłowym równie dobrze mógłby być pusty. Naprawdę nie sprawiłoby mi to żadnej różnicy :)

A tak na poważnie, może istnieje jakieś inne (prostsze) rozwiązanie?
Postów: 294 Dołączył: 2011-07-27
#
Mam pytanie, w jaki sposób można by zrobić coś takiego, żeby przypadkowy ped był tylko raz w danym miejscu, tzn. żeby wśród napotkanych pedów nie było dwóch takich samych na raz?
Postów: 294 Dołączył: 2011-07-27
#
Chciałbym, aby po wciśnięciu klawisza "4" światła się wyłączały, lub włączały. Zastosowałem funkcję przedstawioną przez Ciebie powyżej i jeżeli światła były wyłączone to rzeczywiście się włączają, ale gdy były już włączone to nie chcą się wyłączyć. Mógłbyś powiedzieć mi co w poniższym kodzie zrobiłem źle:

Kod:
{$CLEO}
0000: LIGHTS 

while  
true
    0001:  wait  0 ms 
    if
    
00DF:   actor $PLAYER_ACTOR driving 
    then
         
03C0: 0@ = actor $PLAYER_ACTOR car 
            if
            
0AB0:   key_pressed 0x34
            then
                
if 0AB1: call_scm_func @VEHICLE_LIGHTS_ON 1 vehicle 0@ 
                then
                      
067F: set_car 0@ lights 1 
                      0001:  wait  500 ms
                      else
                      
067F: set_car 0@ lights 2 
                      0001:  wait  500 ms 
                end
            
end
    end 
end

:VEHICLE_LIGHTS_ON
0A97: 1@ = car 0@ struct
0AA8: call_function_method 0x6D55C0 struct 1@ num_params 0 pop 0 2@ // CVehicle::GetVehicleLightsStatus(void)

08B7:   test 2@ bit 0
0AB2: ret 0
Poprzedni 1 2 3 4 5 6 7 8 9 10 ... 20 Następny
Created & Powered by MakG