Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Inne] Max lv 999


Rekomendowane odpowiedzi

Opublikowano

Powiem Ci tylko tak. Level postaci jest trzymany w structurze nazwanej character_point, jak to przetłumaczyć na kod C, wyglądałoby to tak.

struct character_point {
// ...
BYTE voice; // (sizeof(BYTE) = 1)
BYTE level; // (sizeof(BYTE) = 1)
DWORD exp; // (sizeof(DWORD) = 4)
// ...
};

Prawda. O tym właśnie mówię, że jest dopuszczalna 1 bajtowa wartość jednakże spójrz na zmienną zawartą w game, od jakiego offsetu się zaczyna i na jakim się kończy.

Your superman is here, bitch!

  • Odpowiedzi 63
  • Dodano
  • Ostatniej odpowiedzi
Opublikowano

Prawda. O tym właśnie mówię, że jest dopuszczalna 1 bajtowa wartość jednakże spójrz na zmienną zawartą w game, od jakiego offsetu się zaczyna i na jakim się kończy.

Nie wiem szczerze mówiąc, o jakiej zmiennej mówisz, ale sam fakt, że level przy postaci jest trzymany jako jeden bajt wyklucza raczej Twój pomysł, nie? Tak swoją drogą, z tego, co widzę to jeśli chodzi o komunikację sieciową to level jest wysyłany jako 4 bajty.

Opublikowano

@UP

Sensual mówi o zmiennej PlayerMaxLevel w game.

http://screenshooter.net/data/uploads/ec/nd/twdq.jpg

Rozumiem. Tak czy inaczej to nie zmienia faktu, że level per player jest trzymany jako jeden bajt.

Opublikowano

True, ale moim zdaniem on wpadł na pomysł, jak wizualnie/tymczasowo wyświetlać w kliencie takie wartości.

Jeśli chodzi o wizualną zmianę poziomu to udało mi się to właśnie zrobić. Z poziomu serwera gry wysyłam pakiet z punktami (id pakietu: 16) z moimi własnymi wartościami. Jako, że robiłem to na szybko, nie miałem czasu dokładnie przyjrzeć się strukturze pakietu, więc ustawiam obecnie poziom na podaną w komendzie wartość, a PD ustawiam po prostu na 200. Resztę zeruję, ale niektóre wartości są dziwne, a to najprawdopodobniej dlatego, że struktura pakietu wg. nich powinna mieć 1021 bajtów, a moja jest trochę krótsza, więc nie wszystkie wartości muszą być wyzerowane. Tak czy siak, w ramach eksperymentu udało się to jak najbardziej zrobić. Komenda jest oczywiście server-side.

 

Opublikowano

Idąc dalszym tokiem myślenia, source można ominąć. Tylko gorzej z binką, bo zapewne ona stoi na przeszkodzie :)

Nie czekaj - zagraj już dzisiaj !

Opublikowano

Idąc dalszym tokiem myślenia, source można ominąć. Tylko gorzej z binką, bo zapewne ona stoi na przeszkodzie :)

Mój poprzedni post pokazuje, że klient nie ma najmniejszych problemów z dużymi poziomami.

Opublikowano

To najwyraźniej trzeba zwiększyć przepustowość ilości bajtów do klienta.

Co? Serwer wysyła level do klienta jako 4 bajty. Problemem jest teraz tylko to, że po stronie serwera, poziom postaci jest trzymany jako jeden bajt. W takim wypadku musiałbyś trzymać poziom dla każdej postaci w innym miejscu i zmodyfikować wszystkie miejsca w kodzie, gdzie serwer odwołuje się do tego poziomu postaci. To będzie w tym przypadku najprostsza metoda, ale pracochłonna - no i bezcelowa, bo przecież po co komu tyle poziomów?

Opublikowano

Mój poprzedni post pokazuje, że klient nie ma najmniejszych problemów z dużymi poziomami.

Tylko to było zrobione wizualnie, a tak na dobrą stałą sprawę ?

Nie czekaj - zagraj już dzisiaj !

Opublikowano

Tylko to było zrobione wizualnie, a tak na dobrą stałą sprawę ?

Tak, ale wizualnie nie na takiej zasadzie, że zmieniam to na poziomie klienta tylko na takiej, że serwer wysyła informację do klienta o zaktualizowanym poziomie, używając serwerowej komunikacji (jak to wygląda znajdziesz tutaj CHARACTER::PointsPacket). Więc oznacza to, że jeśli serwer będzie wysyłał do klienta większy poziom, powinno to działać. Jedyną rzeczą, która się u mnie jednak nie zmieniała to poziom obok nicku.

Opublikowano

Czyli że trzeba było by edytować po stronie serwera ? A te komendy co u ciebie bedą działać na moim serwerze ?

Moje Tematy :

--------------------------------------------

Nowe Bronie:

http://www.mpcforum.pl/topic/694623-dlnowe-bronie/

Opublikowano

Tak, ale wizualnie nie na takiej zasadzie, że zmieniam to na poziomie klienta tylko na takiej, że serwer wysyła informację do klienta o zaktualizowanym poziomie, używając serwerowej komunikacji (jak to wygląda znajdziesz tutaj CHARACTER::PointsPacket). Więc oznacza to, że jeśli serwer będzie wysyłał do klienta większy poziom, powinno to działać. Jedyną rzeczą, która się u mnie jednak nie zmieniała to poziom obok nicku.

Więc coś takiego jest możliwe. Dodając określoną liczbę do wysyłanych pakietów, można uzyskać taki efekt ?

Nie czekaj - zagraj już dzisiaj !

Opublikowano

Czyli że trzeba było by edytować po stronie serwera ? A te komendy co u ciebie bedą działać na moim serwerze ?

Tak, musiałbyś przerobić poziomy po stronie serwera tak jak napisałem. Nie, komendy nie będą u Ciebie działać (Tiveria only).

 

@up: Tak, jasne. Na mojej wersji, fragment kodu odpowiedzialny za zapisanie poziomu do pakietu jest tutaj:

.text:0806AF5B				 movzx   edx, byte ptr [esi+50Ah] // tutaj pobierasz poziom postaci
.text:0806AF62				 mov	 [ebp+var_408], edx // tutaj zapisujesz go do pakietu

A potem DESC::Packet i cały taki pakiet leci do danego klienta. Mógłbyś się pobawić w modyfikowanie tego miejsca kodu żeby osiągnąć podobny efekt, ale musiałbyś wtedy poświęcić np kod odpowiedzialny za zapisanie exp do pakietu.

 

@down: Tu możemy tylko gdybać, ale patrząc na ilość pracy potrzebnej do zrobienia tego, to tylko efekt wizualny i najprawdopodobniej zrobił to po stronie samego klienta, bez ingerencji w serwer.

@edit: chyba nie zrozumiałem tego "m2m". Sądziłem, że chodzi Ci o filmik tutaj, który ktoś wrzucił na pierwszej stronie.

Opublikowano

@up czyli na m2m robili wszystko po stronie serwera czy tylko efekt wizualny>?

M2M to już oddzielna gra swoją drogą :ninja:

Nie czekaj - zagraj już dzisiaj !

Opublikowano

@UP No można tak powiedzieć :] ale to ta sama gra .

Moje Tematy :

--------------------------------------------

Nowe Bronie:

http://www.mpcforum.pl/topic/694623-dlnowe-bronie/

Opublikowano

Wracając do tematu, wiemy że 255+ jest możliwe. Jednak rozkmińmy, po co ?

Nie czekaj - zagraj już dzisiaj !

Opublikowano

Możliwe że Ymir albo GameForge ukrył żeby privy nie osiągnely wiecej niz 255+

 

 

@UP Taaa...

Moje Tematy :

--------------------------------------------

Nowe Bronie:

http://www.mpcforum.pl/topic/694623-dlnowe-bronie/

Opublikowano

Balon, a co z +4kkk yang?

Z tym będzie raczej problem, bo te wszystkie punkty są wartościami typu signed int. Klient tak samo je interpretuje, więc wymagałoby to zmian i po stronie serwera i po stronie klienta.

Opublikowano

Co? Serwer wysyła level do klienta jako 4 bajty. Problemem jest teraz tylko to, że po stronie serwera, poziom postaci jest trzymany jako jeden bajt. W takim wypadku musiałbyś trzymać poziom dla każdej postaci w innym miejscu i zmodyfikować wszystkie miejsca w kodzie, gdzie serwer odwołuje się do tego poziomu postaci. To będzie w tym przypadku najprostsza metoda, ale pracochłonna - no i bezcelowa, bo przecież po co komu tyle poziomów?

O to mi chodziło, lecz źle złożyłem zdanie ;)

Your superman is here, bitch!

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...