Czy wiesz, że... możesz podsyłać newsy, artykuły, pliki i zdjęcia?
Strona główna forum Szukaj Rejestracja
Witaj, nieznajomy!
Postów: 628 Dołączył: 2009-01-22
#
Poprawiłem kod. Po prostu przejechałem się z wielkością CEntryExit.

___________________
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:
: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


Funkcja działa jak warunek:

Kod:
if 0AB1: call_scm_func @VEHICLE_LIGHTS_ON 1 vehicle 0@
then
    
// Światła włączone

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
#
Jakiś czas temu się z tym bawiłem i znalazłem, jak robi to R*:

Kod:
:SET_WINDOW_OPEN_FLAG
0A97: 2@ = car 0@ struct
0AA6: call_method 0x6D3080 struct 2@ num_params 1 pop 0 1@
0AB2: ret 0


:CLEAR_WINDOW_OPEN_FLAG
0A97: 2@ = car 0@ struct
0AA6: call_method 0x6D30B0 struct 2@ num_params 1 pop 0 1@
0AB2: ret 0


Kod:
0AB1: call_scm_func @SET_WINDOW_OPEN_FLAG 2 car 0@ window 8
0AB1: call_scm_func @CLEAR_WINDOW_OPEN_FLAG 2 car 0@ window 10


ID okien to 8, 10, 9, 11. Wiem że 2 pierwsze to szyby w przednich drzwiach, ale nie pamiętam które to które.

___________________
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
#
Szukanie po nazwie oraz po koordynatach (bo większość enexów ma 1 nazwę dla 2 enexów) byłoby już zbyt irytujące. A kod sprawdzę jutro albo wtedy, gdy będę w stanie go sprawdzić.

___________________
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 drugie - raczej nie. Musisz zadowolić się małym promieniem sprawdzania i ustawianiem markerów blisko.

To pierwsze:

Kod:
:MOVE_ENTRY_EXIT_TO_COORDS
0A9F: 9@ = current_thread_pointer
9@ += 0x3C
0AA7: call_function 0x43F4B0 num_params 3 pop 3 -1 2@ 9@ 10@ // CEntryExitManager::FindNearestEntryExit(CVector2D  const&, float, int)

if 
NOT 10@ == -1
then
    
0A8D: 11@ = read_memory 0x43EF02 size 4 virtual_protect 0
    0A8D: 11@ = read_memory 11@ size 4 virtual_protect 0  // CEntryExitManager::mp_poolEntryExits

    0A8D: 11@ = read_memory 11@ size 4 virtual_protect 0  // CPool.m_pSlots

    10@ *= 60        // sizeof(CEntryExit)

    005A: 11@ += 10@

    5@ += 1.0

    6@ *= 0.017453292519943295769236907684886       // Stopnie na radiany (Sanny jakoś utnie ten ułamek)


    7@ *= 0.5
    8@ *= 0.5

    0087: 12@ = 3@
    0087: 13@ = 4@
    0087: 14@ = 3@
    0087: 15@ = 4@

    0063: 12@ -= 7@
    005B: 13@ += 8@
    005B: 14@ += 7@
    0063: 15@ -= 8@

    11@ += 8        // CEntryExit.Entry.x1

    0A8C: write_memory 11@ size 4 value 12@ virtual_protect 0
    11@ += 4        // CEntryExit.Entry.y1

    0A8C: write_memory 11@ size 4 value 13@ virtual_protect 0
    11@ += 4        // CEntryExit.Entry.x2

    0A8C: write_memory 11@ size 4 value 14@ virtual_protect 0
    11@ += 4        // CEntryExit.Entry.y2

    0A8C: write_memory 11@ size 4 value 15@ virtual_protect 0

    11@ += 4        // CEntryExit.EntryZ

    0A8C: write_memory 11@ size 4 value 5@ virtual_protect 0

    11@ += 4        // CEntryExit.EntryHeading

    0A8C: write_memory 11@ size 4 value 6@ virtual_protect 0
end
0AB2: ret 0


Kod:
0AB1: call_scm_func @MOVE_ENTRY_EXIT_TO_COORDS 9 from_coords 0.0 0.0 radius 1.5 to_coords 0.0 0.0 0.0 heading 0.0 x_width 0.0 y_width 0.0


Kolejność parametrów to_coords jest taka jak w IPL - X, Y, Z, rotacja, szerokość X, szerokość Y

Mogłem (jak zwykle) pomylić koordynaty wyjścia z koordynatami wejścia. Daj znać jeśli tak jest.

___________________
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
#
Nie testowałem, ta funkcja powinna usunąć enexa przy podanych koordynatach:

Kod:
:REMOVE_ENTRY_EXIT_AT_COORDS
0A9F: 3@ = current_thread_pointer
3@ += 0x3C
0AA7: call_function 0x43F4B0 num_params 3 pop 3 -1 2@ 3@ 4@ // CEntryExitManager::FindNearestEntryExit(CVector2D  const&, float, int)

if 
NOT 4@ == -1
then
    
0AA5: call 0x43FD50 num_params 1 pop 1 4@ // CEntryExitManager::DeleteOne(int)

end
0AB2: ret 0


Użycie:
Kod:
0AB1: call_scm_func @REMOVE_ENTRY_EXIT_AT_COORDS 3 coords 0.0 0.0 radius 1.5



Lepiej używać tego ostrożnie, bo jeśli to enex stworzony przez IPL to zniknie z save'a na dobre!

___________________
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
#
Seen some of those on GTAF, looks really neat!

___________________
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
#
4000x4000

___________________
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
#
Rzeczywiście, pojazdy w garażu są tworzone od nowa, więc nie zachowują swojego stanu paliwa. To wymagałoby jeszcze oddzielnego triku.

___________________
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 miejsce na zapis stanu paliwa dla wszystkich 110 pojazdów które mogą być w grze na raz.

___________________
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
#
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

___________________
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
#
Przypomnij mi się jutro. Mam pomysł jak to zrobić z użyciem alokowanego miejsca w środku skryptu CLEO.

___________________
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
#
Trzeba być zalogowanym by się pojawiła.

___________________
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
#
Wiesz, spojrzałem do swoich zbiorów funkcji i okazało się że ktoś już kiedyś o takie coś prosił, nie wiem czy to nie Ty :P

Tak czy inaczej, tamta funkcja była napisana dawno i jest stosunkowo wolna. Napisałem ją od nowa:

Wersja dla CLEO3/CLEO4 - tylko dla 1.0US/EU:

Kod:
:GET_TRAILER_ATTACHED_TO_CAB
{
 Parameters:
   Passed:
     0@ - Car handle
   Result:
     1@ - Attached trailer handle

 Example:
   if 
0AB1: call_scm_func @GET_TRAILER_ATTACHED_TO_CAB 1 from_cab 0@ store_to 1@ // IF and SET

}
0A8D: 1@ = read_memory 0x5D4807 size 4 virtual_protect 0
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
0A97: 0@ = car 0@ struct
0@ += 0x4C8
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
if 
not 0@ == 0
then
    
0A8D: 2@ = read_memory 1@ size 4 virtual_protect 0
    1@ += 0x4
    0A8D: 3@ = read_memory 1@ size 4 virtual_protect 0
    0062: 0@ -= 2@
    0@ /= 0xA18
    005A: 3@ += 0@
    4@ = 0
    0A8D: 4@ = read_memory 3@ size 1 virtual_protect 0
    0@ *= 0x100
    005A: 0@ += 4@
    0485: return_true
    0AB2: ret 1 0@
end
059A: return_false
0AB2: ret 1 0


Wersja tylko dla CLEO4, ale działa z każdym EXE który jest wspierany przez CLEO4 - nawet Steamowy:

Kod:
:GET_TRAILER_ATTACHED_TO_CAB
{
 Parameters:
   Passed:
     0@ - Car handle
   Result:
     1@ - Attached trailer handle

 Example:
   if 
0AB1: call_scm_func @GET_TRAILER_ATTACHED_TO_CAB 1 from_cab 0@ store_to 1@ // IF and SET

}
0A97: 0@ = car 0@ struct
0@ += 0x4C8
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
if 
not 0@ == 0
then
    
0AEB: 0@ = car_struct 0@ handle
    0485: return_true
    0AB2: ret 1 0@
end
059A: return_false
0AB2: ret 1 0



___________________
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 proste. Wolałbyś wersję dla CLEO4 czy dla CLEO3 i 4?

___________________
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