Czy wiesz, że... możesz podsyłać newsy, artykuły, pliki i zdjęcia?
Strona główna forum Szukaj Rejestracja
Witaj, nieznajomy!
Poprzedni 1 Następny
Postów: 294 Dołączył: 2011-07-27
#
Ostatnio dodałem do swojego GTA modyfikację ImVehFt DK22Pac'a. Wszystko działa dobrze dopóki nie wejdę do jakiegoś pojazdu, bo po wejściu do pojazdu gra crashuje. Po sprawdzeniu okazało się że modyfikacja ta koliduje z modyfikacją dodającą licznik prędkości i możliwość tankowania pojazdów. Postanowiłem więc sprawdzić co dokładnie może powodować problem i po kilkunastu próbach wyszło mi że problem jest przez opcode 0A97. Jest tam np. coś takiego:

Kod:
:NONAME_2436
0A97: 27@ = car 0@ struct 
27@ += 4 
0A8D: 29@ = read_memory 27@ size 1 virtual_protect 0 
RETURN 


Po usunięciu kilku linijek ze skryptu wszystko zaczęło działać poprawnie, lecz teraz skrypt nie "zapamiętuje" poziomu paliwa w pojeździe przez co wyjście i ponowne wejście do tego samego pojazdu zmienia poziom paliwa. I mam pytanie czy jest możliwość zrobienia tego "zapamiętywania" poziomu paliwa w jakiś inny sposób?
Postów: 628 Dołączył: 2009-01-22
#
Czy ten skrypt wpisuje jakieś wartości w ten sam obszar pamięci (wskaźnik + 4)? Jeśli tak, wyrzuć go i znajdź inny. To nie ma prawa działać bez żadnych efektów ubocznych.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 294 Dołączył: 2011-07-27
#
Szczerze mówiąc nie do końca rozumiem to co napisałeś :) Może rzuć okiem na ten skrypt: LICZNIK I PALIWO
Postów: 628 Dołączył: 2009-01-22
#
Wyrzuć to. Tym stanem paliwa mod nadpisuje coś czego nie powinien. Dziwne że w ogóle dział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: 294 Dołączył: 2011-07-27
#
Szkoda, bo ten licznik fajnie się prezentował wokół radaru. A może ktoś poleci jakiś ładnie wyglądający i poprawnie działający licznik ze wskaźnikiem paliwa?
Postów: 294 Dołączył: 2011-07-27
#
Powrócę jeszcze do tego tematu. W jaki sposób "zapisywać" stan paliwa w pojeździe? Chodzi mi o to że jak wyjdę z jednego pojazdu (który ma określony stan paliwa), wejdę do innego pojazdu i później z powrotem wejdę do tego pierwszego to żeby stan paliwa był taki sam jak wcześniej, a nie wybrany losowo. W każdym wskaźniku z jakim się spotkałem było zastosowane rozwiązanie przedstawione przeze mnie w pierwszym poście. Lecz przez to rozwiązanie żaden wskaźnik nie współpracuje z modem ImVehFt. Czy istnieje jakiś inny sposób na zapisanie takiego stanu, jakiś inny adres pamięci, albo w ogóle coś innego?
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
#
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: 1004 Dołączył: 2009-01-20
#
Tak z czystej ciekawości. Co oznaczają te zera na samym dole kodu no i po co ich aż tyle?
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: 294 Dołączył: 2011-07-27
#
Muszę przyznać że te funkcje scm są przydatne. Wszystko działa jak należy, ale jest jeden problem. Kiedy zostawię pojazd w garażu i przesiądę się do innego pojazdu, odjadę na znaczną odległość i po kilku minutach wrócę i wsiądę do tego pojazdu w garażu to nie pokazuje on takiego stanu paliwa jak kiedy z niego wysiadłem, tylko zupełnie inny. W innych sytuacjach póki co nie spotkałem się z takim błędem.
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: 294 Dołączył: 2011-07-27
#
To może nie jest mi jakoś koniecznie potrzebne, ale jak byś mógł przedstawić ten "trik" to byłbym wdzięczny :D
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ć?

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