Exigo Opublikowano 21 Sierpnia 2008 Udostępnij Opublikowano 21 Sierpnia 2008 Pierwszy raz mam do czynienia z Dll'ami... i już jest kłopot. Użyłem sobie dll'a "Xtend" (autorstwa Snake) w taki sposób... Create. GML init_xtend(); ADRES_szybkosc_ataku = $57546C1C; szybkosc_ataku = 0; PROCES = process_id_from_window_handle(metin2); Alarm. GML alarm[0] = 10; szybkosc_ataku = process_read_long(PROCES,ADRES_szybkosc_ataku); Draw. GML draw_text(x,y,"Szybkosc Ataku:"+string(szybkosc_ataku)); Problem polega w tym, że program nie wie... co oznacza ten kod: PROCES = process_id_from_window_handle(metin2); W czym problem? :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 21 Sierpnia 2008 Udostępnij Opublikowano 21 Sierpnia 2008 Nie zdefiniowałeś zmiennej "metin2" / nie zapisałeś w niej uchwytu okna z tej gry ? GML // wyszukaj okno gry po nazwie ( nie wiem czy nazwane jest "Metin 2" ) metin2 = window_find( '', 'Metin 2' ); // pobierz identyfikator procesu z uchwytu okna PROCES = process_id_from_window_handle( metin2 ); albo możesz tak znaleźć PID: GML // odszukaj PID po nazwie procesu ( nie wiem czy nazywa się "metin2.exe" ) PROCES = process_id_from_name( 'metin2.exe' ); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 21 Sierpnia 2008 Autor Udostępnij Opublikowano 21 Sierpnia 2008 Eh... nie działa. Znaczy, wszystko chodzi jak powinno, lecz wyświetla złe dane (powinno być 100, lecz jest 0) Sprawdzałem jeszcze raz HEX'a, to jest prawidłowy. Proces też jest dobrze napisany... :o (Na wszelki wypadek, pokażę jeszcze kod.) Create Event: execute code: init_xtend(); PROCES = process_id_from_name( 'metin2.bin' ); ADRES_szybkosc_ataku = $57596F5C; szybkosc_ataku = 0; Alarm Event for alarm 0: execute code: alarm[0] = 10; szybkosc_ataku = process_read_long(PROCES,ADRES_szybkosc_ataku); Draw Event: execute code: draw_text(x,y,"Szybkosc Ataku:"+string(szybkosc_ataku)); Co jest nie tak?.. :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 21 Sierpnia 2008 Udostępnij Opublikowano 21 Sierpnia 2008 zły adres? o ile mi wiadomo, metin2 zapisuje w pamięci jakieś inne wartości dodaje coś itd... nie pamiętam jak dokładnie ale na pewno nie odczytasz zwyczajnie tego speedu ataku ;] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 21 Sierpnia 2008 Autor Udostępnij Opublikowano 21 Sierpnia 2008 No przecież piszę, że Hex'a sprawdzałem... Edit: No to się obraziłem. :< Cóż, trzeba pomyśleć o innym MMO. :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 21 Sierpnia 2008 Udostępnij Opublikowano 21 Sierpnia 2008 "Sprawdzałem hexa"... sprawdzałeś adres i w edytorze pamięci miałeś prawidłową wartość ? Może Xtend nie ma dostępu do tego regionu pamięci / do procesu bo process_read_* zwraca 0 gdy nie udaje się odczytać wartości z pamięci... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 21 Sierpnia 2008 Autor Udostępnij Opublikowano 21 Sierpnia 2008 Polegało to na tym. Uruchamiam grę oraz Cheat Engine. Potem uzyskuje wartość hex, otwieram GM'a i wklejam hex w kod (wiesz gdzie).. po czym uruchamiam program. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 21 Sierpnia 2008 Udostępnij Opublikowano 21 Sierpnia 2008 Wiem na czym to polega. Czyli w edytorze pamięci miałeś prawidłową wartość tego speeda... pewnie Xtend nie może otworzyć procesu Metina, bo nie ma dostępu. Zaraz zrobię update dll-a i zobaczymy czy uda Ci się to odczytać. EDIT: Już zrobiłem: https://forum.gmclan.org/index.php?showtopic=11240 Dodaj linijkę: GML xtend_set_debug_privilege(); po init_xtend(); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 21 Sierpnia 2008 Autor Udostępnij Opublikowano 21 Sierpnia 2008 Aj... niestety nic to nie dało. :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 21 Sierpnia 2008 Udostępnij Opublikowano 21 Sierpnia 2008 A dane z jakiegokolwiek adresu może odczytać ? Znajdź może jakiś string typu nazwa serwera, etykieta przycisku czy nazwa postaci i sprawdź czy Ci odczytuje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 21 Sierpnia 2008 Autor Udostępnij Opublikowano 21 Sierpnia 2008 Pobrałem nazwę gracza, to nie wyświetliło wartości. Nie mam pojęcia, w czym problem. :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 21 Sierpnia 2008 Udostępnij Opublikowano 21 Sierpnia 2008 U mnie wyświetliło szybkość ataku i nazwę gracza. (oczywiście po restarcie gry adresy się pozmieniały przez dynamiczną alokację pamięci). Albo podajesz złe adresy albo nie można przechwycić PID po nazwie procesu. Sprawdź czy pobrano ID procesu GML if ( PROCES == 0 ) show_message( 'Metin 2 nie jest uruchomiony.' ); Jeśli będzie ok, to nie wiem co robisz źle, bo u mnie działa. A mam tak: GML init_xtend(); attack_speed_pointer = $4A64C614; // tymczasowy adres zmiennej przechowującej szybkość ataku process = process_id_from_name( 'metin2.bin' ); if ( process == 0 ) show_message( 'Nie znaleziono procesu' ); attack_speed = process_read_long( process, attack_speed_pointer ); PS: Nie, nie gram w Metina - mój brat sprawdzał co to jest i zostało na dysku. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 21 Sierpnia 2008 Autor Udostępnij Opublikowano 21 Sierpnia 2008 Kurde, napisałem na podstawie twojego kodu i nadal nie działa... szit. Może prześlij "projekt" i przyjrzę się temu z bliska. :P Tak będzie najlepiej. (chyba) :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 21 Sierpnia 2008 Udostępnij Opublikowano 21 Sierpnia 2008 a wiesz co to znaczy dynamiczna alokacja pamięci? to znaczy, że adres się zmienia... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 21 Sierpnia 2008 Autor Udostępnij Opublikowano 21 Sierpnia 2008 No wiem co to jest, ale zmienia się tylko przy restarcie gry... a ja jej wogóle nie wyłączam. :] EDIT!!!: Przepraszam, grę restartowałem raz. :P ... Zaktualizowałem adres i działa. :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się