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

Ilość życia potworka (C++, Python)


Rekomendowane odpowiedzi

Opublikowano

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Witajcie moi drodzy.  :)

Oto dzisiaj udostępniam Wam taki mały banalny dodatek.

ScreenShot:

sspng_wanpxww.png

 

 

PORADNIK:

  • CLIENT:

 

1. Otwieramy:

\***\UserInterface\PythonNonPlayerModule.cpp

 

2. Szukamy:

void initNonPlayer()
i nad tym dodajemy:

PyObject * nonplayerGetMonsterMaxHp(PyObject * poSelf, PyObject * poArgs)
{
	int iVirtualID;
	if (!PyTuple_GetInteger(poArgs, 0, &iVirtualID))
		return Py_BuildException();

	CInstanceBase * pInstance = CPythonCharacterManager::Instance().GetInstancePtr(iVirtualID);

	if (!pInstance)
		return Py_BuildValue("i", -1);

	const CPythonNonPlayer::TMobTable * pMobTable = CPythonNonPlayer::Instance().GetTable(pInstance->GetVirtualNumber());

	if (!pMobTable)
		return Py_BuildValue("i", -1);

	return Py_BuildValue("i", pMobTable->dwMaxHP);
}
 

3. Szukamy:

{ "LoadNonPlayerData",			nonplayerLoadNonPlayerData,			METH_VARARGS },
i pod tym dodajemy:

{ "GetMonsterMaxHp",			nonplayerGetMonsterMaxHp,			METH_VARARGS },
 

4. Kompilujemy projekt naszej binki.

 

  • ROOT

 

1. Otwieramy:

\***\root\uitarget.py

 

2. Szukamy:

closeButton = ui.Button()
i nad tym dodajemy:

[TAB][TAB]hpText = ui.TextLine()
[TAB][TAB]hpText.SetPosition(0, -17)
[TAB][TAB]hpText.SetWindowHorizontalAlignCenter()
[TAB][TAB]hpText.SetHorizontalAlignCenter()
[TAB][TAB]hpText.Hide()
 

3. Szukamy:

self.closeButton = closeButton
i nad tym dodajemy:

[TAB][TAB]self.hpText = hpText
[TAB][TAB]hpText.SetParent(hpGauge)
 

4. Szukamy:

self.hpGauge = None
i pod tym dodajemy:

self.hpText = None
5. Szukamy:

self.SetSize(250, 40)
i nad tym dodajemy:

self.hpText.Hide()
6. Szukamy:

def SetHP(self, hpPercentage):
i całą tą definicję zamieniamy na:

[TAB]def SetHP(self, hpPercentage):
[TAB][TAB]if not self.hpGauge.IsShow():
[TAB][TAB][TAB]self.SetSize(200 + 7*self.nameLength, self.GetHeight())
[TAB][TAB][TAB]self.name.SetPosition(23, 13)
[TAB][TAB][TAB]self.name.SetWindowHorizontalAlignLeft()
[TAB][TAB][TAB]self.name.SetHorizontalAlignLeft()
[TAB][TAB][TAB]self.hpGauge.Show()
[TAB][TAB][TAB]self.hpText.Show()
[TAB][TAB][TAB]self.UpdatePosition()

[TAB][TAB]self.hpGauge.SetPercentage(hpPercentage, 100)
[TAB][TAB]self.hpText.SetText(str(int(float(hpPercentage)/100.00*float(nonplayer.GetMonsterMaxHp(self.vid)))) + "/" + str(nonplayer.GetMonsterMaxHp(self.vid)) + " (" + str(hpPercentage) + "%)")
[TAB][TAB]chr.SelectInstance(self.vid)
7. Pakujemy ROOT'y.

 

 

 

 

Opublikowano

pokazuje tylko ile potwory mają procent, a nie hp

przykład - 0/0 (100%)

Albo coś źle dograłeś, albo mob_proto klientowe pakujesz bez takich informacji jak max_hp.
Opublikowano

Ja tam ogólnie jebem na mob_proto client, dlatego polecam zrobić to aby było z mob_proto serwer. :)))

 

Ja tak samo.

typedef struct packet_target
{
	BYTE	header;
	DWORD	dwVID;
	BYTE	bHPPercent;
	int	bHPNow;
	int	bHPMaximum;
} TPacketGCTarget;
Opublikowano

Ja tak samo.

 

typedef struct packet_target{	BYTE	header;	DWORD	dwVID;	BYTE	bHPPercent;	int	bHPNow;	int	bHPMaximum;} TPacketGCTarget;
Taka modyfikacja to troszkę za mało(chyba że to jakaś podpowiedź dla zielonych) :D +Na ki uj przesyłanie procent, skoro w kliencie można zrobić ich obliczanie, posiadając min & max.
Opublikowano

Taka modyfikacja to troszkę za mało(chyba że to jakaś podpowiedź dla zielonych) :D +Na ki uj przesyłanie procent, skoro w kliencie można zrobić ich obliczanie, posiadając min & max.

Tylko podpowiedź, ale i tak nie rozumiem przesyłania pakietem czegoś z game, co jest już w kliencie. Takie to nielogiczne według mnie. ;x

 

@NoName#2

Jest bardzo logiczne + bardziej optymalne.

Jak tak mówisz, to ok.
Opublikowano

Taka modyfikacja to troszkę za mało(chyba że to jakaś podpowiedź dla zielonych) :D +Na ki uj przesyłanie procent, skoro w kliencie można zrobić ich obliczanie, posiadając min & max.

 

Przesyłane było procent do paska życia potwora, bo w kliencie nie masz min & max. 

Teraz w sumie można je wywalić...

307681428489538142351.png

Metin2 Balmora Staff

Opublikowano

niedługo to w metinie bdzie można latać samolotami O.0 :P
modyfka sie przyda tym co nie ogarniają[a także mi :P]
o ile bd umiał dodać
;( te życie bywa trudne.
Pozdrawiam xD :P

Jeździć trzeba szybko i bezpiecznie.

Opublikowano

@NoName#2

Jest bardzo logiczne + bardziej optymalne.

Twierdzisz, że bardziej optymalne jest wysłanie większego pakietu niż praca clientside?

 

 

Przesyłane było procent do paska życia potwora, bo w kliencie nie masz min & max. 

Teraz w sumie można je wywalić...

Wystarczy że masz procent i max.

vlRm1nY.png

Opublikowano

1. Otwieramy:
\***\UserInterface\PythonNonPlayerModule.cpp

Ktoś mi wytłuamczy bardziej gdzie ja bym to znalazł? o.O

"Wracaj z tarczą, a nie na tarczy. "

 

"Nigdy nie kłóć się z idiotą... Najpierw sprowadzi Cię do swego poziomu, a potem wykończy doświadczeniem."

 

Opublikowano

1. Otwieramy:

\***\UserInterface\PythonNonPlayerModule.cpp

Ktoś mi wytłuamczy bardziej gdzie ja bym to znalazł? o.O

Jak nie wiesz o co chodzi, to odpuść sobie ten dodatek. ;x
Opublikowano

Jak nie wiesz o co chodzi, to odpuść sobie ten dodatek. ;x

Dlatego się pytam, dobrze było by się nauczyć :)

// Domyslam sie ze w locale_pl ale nie wiem długą przerwe w tym miałem ;x

"Wracaj z tarczą, a nie na tarczy. "

 

"Nigdy nie kłóć się z idiotą... Najpierw sprowadzi Cię do swego poziomu, a potem wykończy doświadczeniem."

 

Opublikowano

Dlatego się pytam, dobrze było by się nauczyć :)

// Domyslam sie ze w locale_pl ale nie wiem długą przerwe w tym miałem ;x

Kod źródłowy binki. (tutaj więcej info: http://www.mpcforum.pl/topic/1357786-kod-źródłowy-gry-metin2/)

 

 

Edit//

@***Pavcio***

Albo procent i min, matematyka przydatna :P

 

@topic

No myślałem, że sezon na truskawki się już skończył.

 

PS. Pakietem jest chyba wygodniej.

Jak komu wygodniej. :v
  • 3 tygodnie później...
Opublikowano

Ref

 

Dodałem to na serwer i jak bije mobka to nie pokazuje od razu jak mu hp schodzi.

Muszę myszką najechać na innego mobka i wrócić, wtedy widać że schodzi...

Co może być przyczyną?

­

Opublikowano

Dodałem to na serwer i jak bije mobka to nie pokazuje od razu jak mu hp schodzi.

Muszę myszką najechać na innego mobka i wrócić, wtedy widać że schodzi...

Co może być przyczyną?

­

Pokaż syserr

  • 2 tygodnie później...

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...