Czy wiesz, że... na forum możesz uzyskać pomoc nt. modowania GTA?
Strona główna forum Szukaj Rejestracja
Witaj, nieznajomy!
Postów: 628 Dołączył: 2009-01-22
#

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
Jako że zastosowałeś if or, 0ABD próbuje sprawdzić syrenę nawet wtedy, gdy gracz nie jest w pojeździe. Poza tym ustawianie max WL na 6 cały czas trochę rozwali wątek fabularny.

Nie jest to ani najpiękniejszy, ani najkrótszy skrypt, ale powinien działać w porządku.

Kod:
0000: WL

while 
true
    0001: wait 250 ms
    if
        
0256:   player 0 defined
    then
        
if
            010F:   player 0 wanted_level > 0
        then
            
if
                0500:   player 0 skin == "POLICETR" on_bodypart 17
            then
                
09D4: suspend_wanted_level
            end
        
else
            if
                
0500:   player 0 skin == "POLICETR" on_bodypart 17
            then
                
if
                    0039:   1@ == 0
                then
                    
050F: get_max_wanted_level_to 1@
                    01F0: set_max_wanted_level_to 0
                end
            
else
                if
                    
00DF:   actor $PLAYER_ACTOR driving
                then
                    
03C0: 0@ = actor $PLAYER_ACTOR car
                    if 
or
                        056C:   actor $PLAYER_ACTOR driving_police_car
                        0ABD:   vehicle 0@ siren_on
                    then
                        
if
                            0039:   1@ == 0
                        then
                            
050F: get_max_wanted_level_to 1@
                            01F0: set_max_wanted_level_to 0
                        end
                    
else
                        if
                            
8039:   not 1@ == 0
                        then
                            
01F0: set_max_wanted_level_to 1@
                            0006: 1@ = 0
                        end
                    
end
                else
                    
if
                        8039:   not 1@ == 0
                    then
                        
01F0: set_max_wanted_level_to 1@
                        0006: 1@ = 0
                    end
                
end
            end
        
end
    end
end

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
hoop.dff i cylinder_3.dff w gta3.img.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
0ABD nie może crashować gry, chyba że używasz go źle.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
Siedzę w tym aktywnie od 2008 roku i po prostu bawi mnie odkrywanie jak coś w SA działa (w momencie tego pisania też przedzieram się przez EXE, usiłując ogarnąć w jaki sposób gra ogarnia obiekty-atraktory (np. stoły w kasynie - pedy podchodzą do nich i wykonywany jest na nich skrypt z SCM)). To kwestia doświadczenia.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
To w takim razie trzeba przywrócić mnożniki na zwykłe poziomy jeśli gracz jest w interiorze:

Kod:
{$CLEO}
0000: TRAFFIC

while 
true
    0001: wait 2000 ms
    077E: get_active_interior_to 0@
    if
        
0@ == 0
    then
        
00BF: 3@ = current_time_hours, 4@ = current_time_minutes
        if 
and
            3@ >= 0
            2 > 3@
        then
            
01EB: set_traffic_density_multiplier_to 1.6
            03DE: set_pedestrians_density_multiplier_to 1.4
        end
        
if and
            
3@ >= 2
            4 > 3@
        then
            
01EB: set_traffic_density_multiplier_to 0.3
            03DE: set_pedestrians_density_multiplier_to 0.1
        end
        
if and
            
3@ >= 4
            6 > 3@
        then
            
01EB: set_traffic_density_multiplier_to 0.9
            03DE: set_pedestrians_density_multiplier_to 0.1
        end
        
if and
            
3@ >= 6
            12 > 3@
        then
            
01EB: set_traffic_density_multiplier_to 9.9
            03DE: set_pedestrians_density_multiplier_to 9.9
        end
        
if and
            
3@ >= 12
            18 > 3@
        then
            
01EB: set_traffic_density_multiplier_to 5.8
            03DE: set_pedestrians_density_multiplier_to 5.8
        end
        
if and
            
3@ >= 18
            21 > 3@
        then
            
01EB: set_traffic_density_multiplier_to 9.9
            03DE: set_pedestrians_density_multiplier_to 9.9
        end
        
if and
            
3@ >= 21
            23 > 3@
        then
            
01EB: set_traffic_density_multiplier_to 3.6
            03DE: set_pedestrians_density_multiplier_to 3.6
        end
    
else
        01EB: set_traffic_density_multiplier_to 1.0
        03DE: set_pedestrians_density_multiplier_to 1.0
    end       
end

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
Po prostu otwieraj plik .txt z kodem źródłowym. Jak sądzisz, jak inaczej dałoby się pisać skrypty które rozwalają się po ponownej dekompilacji (zmienne trzymające wskaźniki na nagłówki, surowe ciągi znaków, wstawki w Assemblerze)?

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
No, błąd rzeczywiście trywialny : )

Kod:
if 
$ACTIVE_INTERIOR = 0 
else_jump 
@NONAME_2


O ile w ORYGINALNEJ składni SCM porównywanie przez = było poprawne, Sanny wymaga == (tak jak ma to większość języków programowania).

Poprawiłem lekko ten skrypt usuwając zmienną globalną, optymalizując i przepisując na konstrukcje wysokiego poziomu:

Kod:
{$CLEO}
0000: TRAFFIC

while 
true
    0001: wait 2000 ms  // Nie ma najmniejszego sensu wykonywać taki skrypt częściej

    077E: get_active_interior_to 0@
    if
        
0@ == 0
    then
        
00BF: 3@ = current_time_hours, 4@ = current_time_minutes
        if 
and
            3@ >= 0
            2 > 3@
        then
            
01EB: set_traffic_density_multiplier_to 1.6
            03DE: set_pedestrians_density_multiplier_to 1.4
        end
        
if and
            
3@ >= 2
            4 > 3@
        then
            
01EB: set_traffic_density_multiplier_to 0.3
            03DE: set_pedestrians_density_multiplier_to 0.1
        end
        
if and
            
3@ >= 4
            6 > 3@
        then
            
01EB: set_traffic_density_multiplier_to 0.9
            03DE: set_pedestrians_density_multiplier_to 0.1
        end
        
if and
            
3@ >= 6
            12 > 3@
        then
            
01EB: set_traffic_density_multiplier_to 9.9
            03DE: set_pedestrians_density_multiplier_to 9.9
        end
        
if and
            
3@ >= 12
            18 > 3@
        then
            
01EB: set_traffic_density_multiplier_to 5.8
            03DE: set_pedestrians_density_multiplier_to 5.8
        end
        
if and
            
3@ >= 18
            21 > 3@
        then
            
01EB: set_traffic_density_multiplier_to 9.9
            03DE: set_pedestrians_density_multiplier_to 9.9
        end
        
if and
            
3@ >= 21
            23 > 3@
        then
            
01EB: set_traffic_density_multiplier_to 3.6
            03DE: set_pedestrians_density_multiplier_to 3.6
        end
        
// Co z 23?

    end
end


Zastanawia mnie tylko, czemu dekompilujesz własne skrypty?

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
Pokaż cały aktualny skrypt. To jest bardzo proste do zrobienia, więc gdzieś pewnie się po prostu pomyliłeś.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
0A95 sprawia, że w pliku .sav przy zapisie gry zachowywane są informacje o tym wątku - miejsce, w którym skrypt jest w momencie zapisu, a także zmienne lokalne. Skrypt jest wtedy zapisywany tak samo jak wszystkie wątki z main.scm.

0A93 po prostu zakańcza aktualny wątek, akurat w tym nie ma nic, nad czym można by filozofować.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
Kod:
0ABA: end_custom_thread_named 'BENZIN'


Musisz tylko wątkowi z pliku, który chcesz zakończyć, dać jakąś unikalną nazwę.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
Że jak? Możesz jaśniej?

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
Wcale go nie zawiesili, a Sanny Builder to nie język.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
brolly napisał(a):

Czyli jednak dobrze wybrałem :) bo chciałem zmienić w grze praktycznie wszystko mapę świata, animacje, modele, itp. Jak się uzbiera ekipa to się zobaczy jeszcze co z tego wyniknie :)

A i mam jeszcze takie pytanie nie wiecie może czy jest jakieś ograniczenie co do polygonów na modelu ??
I czy istnieje możliwość zrobienia przewijania mapy chodzi mi o to ze jak dojdziemy do końca to przejdziemy na początek co dało by efekt kuli ??


1. Ja bym nie przekraczał stu tysięcy trójkątów. Powyżej tego na słabszych kompach SA już ścina (na mocniejszych też).
2. Płynne przejście - nie.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
artgin89 napisał(a):

W sumie mogłoby być tak że np. po wciśnięciu danego klawisza pokazywałaby się połowa z tych ikonek, a po wciśnięciu innego pokazywałaby się druga część, a ta pierwsza by znikała. A obydwie części byłby w osobnych skryptach, które łączyłby jeden wspólny z powyższym sterowaniem. Dałoby się tak zrobić?


Tak.

A liczba ikonek standardowo jest różna, zależy od postępu w grze. Ale skoro tu przekroczyłeś limit, to obstawiam że jest to 130-140.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Created & Powered by MakG