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

C++ Poziom przedmiotu w ikonie


Rekomendowane odpowiedzi

Opublikowano

Jako że większość na tym forum to idioci którzy twierdza na temat wielu rzeczy że są niemożliwe lub wymyślają jakieś dziwne sposoby (nie mowie o randomach) jak i dlatego że pewien użytkownik podsunął mi pomysł, zwarłem swe dwa poślady (prawy i lewy) i rozpocząłem przygodę z source klienta, niestety trwała ona 30 minut i trochę się zawiodłem, nie jest to praca tak zaawansowana tak jakby napisał to programista z rangą 90-AwardImgMaster-1447613614.png ale efekt końcowy wygląda tak:

iIhWIc8.png

 

Mógłbym to sprzedawać po 20 zł tak jakby zrobił to Flourine i inne chwasty ale co tam.

 

Source clienta

 

 

eterPythonLib/PythonSlotWindow.h i wyszukujemy tam:

CGraphicImageInstance * pInstance;

Dodajemy pod tą linia:

CGraphicImageInstance * pInstanceLevel;

Ma to wyglądać tak:

e4KlrAn.png

 

 

Teraz szukamy w tym samym pliku:

void Destroy();

I dodajemy pod tą linia:

void SetSlotLevelImage(DWORD dwIndex, CGraphicImage * levelImage);

Ma to wyglądać tak:

8805209.png

 

Zapisujemy plik i otwieramy eterPythonLib/PythonSlotWindow.cpp i wyszukujemy tam:

Slot.pFinishCoolTimeEffect = NULL;

Dodajemy pod tą linia:

Slot.pInstanceLevel = NULL;

Ma to wyglądać tak:

dc1MOMG.png

 

Teraz szukamy w tym samym pliku:

void CSlotWindow::SetSlotCount(DWORD dwIndex, DWORD dwCount)

I dodajemy przed tą linia kod:

void CSlotWindow::SetSlotLevelImage(DWORD dwIndex, CGraphicImage * levelImage)
{
	TSlot * pSlot;
	if (!GetSlotPointer(dwIndex, &pSlot) || !levelImage)
		return;
	assert(NULL == pSlot->pInstanceLevel);
	pSlot->pInstanceLevel = CGraphicImageInstance::New();
	pSlot->pInstanceLevel->SetDiffuseColor(1.0, 1.0, 1.0, 1.0);
	pSlot->pInstanceLevel->SetImagePointer(levelImage);

}

Ma to wyglądać tak:

d8FOLcL.png

 

Teraz szukamy w tym samym pliku:

pSlot->dwCenterSlotNumber = 0xffffffff;

I dodajemy pod tą linia:

if (pSlot->pInstanceLevel)
{
	CGraphicImageInstance::Delete(pSlot->pInstanceLevel);
	pSlot->pInstanceLevel = NULL;
}

Ma to wyglądać tak:

JHJ6sRE.png

 

Teraz szukamy w tym samym pliku:

if (rSlot.bActive)

I dodajemy przed tą linia:

if (rSlot.pInstanceLevel)
{
	rSlot.pInstanceLevel->SetPosition(m_rect.left + rSlot.ixPosition, (m_rect.top + rSlot.iyPosition + rSlot.byyPlacedItemSize*ITEM_HEIGHT) - 32);
	rSlot.pInstanceLevel->Render();
}

Ma to wyglądać tak:

3kPSvE.png

 

Zapisujemy plik i otwieramy eterPythonLib/PythonWindowManagerModule.cpp i szukamy tam:

void initwndMgr()

Dodajemy przed tą linia:

PyObject * wndMgrSetSlotImage(PyObject * poSelf, PyObject * poArgs)
{
	UI::CWindow * pWin;
	if (!PyTuple_GetWindow(poArgs, 0, &pWin))
		return Py_BuildException();

	int iSlotIndex;
	if (!PyTuple_GetInteger(poArgs, 1, &iSlotIndex))
		return Py_BuildException();

	char * szImagePath;
	if (!PyTuple_GetString(poArgs, 2, &szImagePath))
		return Py_BuildException();

	if (!pWin->IsType(UI::CSlotWindow::Type()))
		return Py_BuildException();

	UI::CSlotWindow * pSlotWin = (UI::CSlotWindow *)pWin;
	CGraphicImage * pImage = (CGraphicImage *)CResourceManager::Instance().GetResourcePointer(szImagePath);
	if (!pImage)
		return Py_BuildException();
	pSlotWin->SetSlotLevelImage(iSlotIndex, pImage);
	return Py_BuildNone();
}

Ma to wyglądać tak:

mrUdya.png

 

Teraz szukamy w tym samym pliku:

{ "ShowOverInWindowName",		wndMgrShowOverInWindowName,			METH_VARARGS },

I dodajemy pod tą linia:

{ "SetSlotLevelImage",			wndMgrSetSlotImage,					METH_VARARGS },

Ma to wyglądać tak:

lzbzAO.png

 

Zapisujemy i kompilujemy source od nowa

 

 
 
ROOT

Otwieramy ui.py i szukamy tam:
wndMgr.SetSlotCount(self.hWnd, renderingSlotNumber, ItemCount)

I dodajemy pod tą linie:

		####Item level text/icon ###
		itemName=item.GetItemName().strip()
		itemNameP=item.GetItemName().rfind('+')
		if itemNameP>0 and len(itemName)>itemNameP+1:
			level=itemName[itemNameP+1:]
			if level.isdigit():
				wndMgr.SetSlotLevelImage(self.hWnd, renderingSlotNumber, ("icon/level/%d.tga"%int(level)))
		####Item level text/icon END ### 

UWAGA! Zanim spakujecie root sprawdźcie czy poprawnie skopiowane są TABy

Ma to wyglądać tak:

Hsjnv6.png

 

 

Zapisujemy plik i pakujemy root

 

 

 

IKONY

 

Rozpakowujemy z pack icon.eix/epk i dodajemy tam pliki (do folderu icon/) z paczki z załącznika i pakujemy.

 

 

Skan ikon

https://www.virustotal.com/pl/file/f0866cd1c3a5c3335f571ac0885af1a2d3cf26a518404794a0c24bff6a4088ac/analysis/1457986092/

Dorzuciłem w paczce PSD ikon 

level.rar

ban.gif

 

Opublikowano

No miszczu z*********e!

Jak dla mnie jako nieliczny właśnie zasługujesz na tą range!

tumblrmv8l.gif


Members | ProUser | PostmakerPostwriter | Wojownik Duszy

Opublikowano

No miszczu z*********e!

Jak dla mnie jako nieliczny właśnie zasługujesz na tą range!

Mialem to mi ja zabrali bo nic nie robilem (bo wiesz tam to musisz codziennie dodawac cos)  :v

 

 

 

 

No miszczu z*********e!

Jak dla mnie jako nieliczny właśnie zasługujesz na tą range!

Mialem to mi ja zabrali bo nic nie robilem (bo wiesz tam to musisz codziennie dodawac cos)   :v

 

Nie pierdol z tym codziennym dodawaniem   ^^    :yay:

 

To byl sarkazm

ps. kto to sasori ?

ban.gif

 

Opublikowano

 

No miszczu z*********e!

Jak dla mnie jako nieliczny właśnie zasługujesz na tą range!

Mialem to mi ja zabrali bo nic nie robilem (bo wiesz tam to musisz codziennie dodawac cos)  :v

 

Nie pierdol z tym codziennym dodawaniem  %5E%5E.png   :yay:

 

 

Edit//

To byl sarkazm

B)  o.O

Opublikowano

I tak nie zdziwię się jak to będzie sprzedawane ..  :lenny:

Co do pracy to nic dodać, nic ująć   :yay:

Opublikowano

fajnie zrobione ale moje pytanie brzmi: komu to potrzebne do szczęścia?

wystarczy najechać kursorem na ikonke :)

No niby nikomu ale sam mialem takie przypadki ze ludzie zamykali handel i otwierali na nowo z podmienionymi itemami a ci do je brali nawet sie nie zorientowali ze to nie te :)

ban.gif

 

Opublikowano

Dzięki,wszystko działa @alchemik1 dobra robota

 

 

@Zauważyłem tylko 1 dziwną rzecz,nw czy postać mi sie zbugowała czy coś

Przed aktualizacją tego - miałem 1 postać z założoną zbroją,po wgraniu tego nie moge sie na nią zalogować(odbuguje i dam znać)

 

Stworzyłem nową postąc normalnie loguje zakładam itemy,wyloguje - wszystko działa.

 

Powiększy sie troszke te iconki i git :)

Opublikowano

Dzięki,wszystko działa @alchemik1 dobra robota

 

 

@Zauważyłem tylko 1 dziwną rzecz,nw czy postać mi sie zbugowała czy coś

Przed aktualizacją tego - miałem 1 postać z założoną zbroją,po wgraniu tego nie moge sie na nią zalogować(odbuguje i dam znać)

 

Stworzyłem nową postąc normalnie loguje zakładam itemy,wyloguje - wszystko działa.

 

Powiększy sie troszke te iconki i git :)

Masz psd wiec sam sobie powieksz jak chcesz :)

ban.gif

 

Opublikowano

@alchemik1

No i króciutko Krzysiek :D

Widziałem gdzieś temat dzisiaj na forum, że ktoś szukał właśnie tego rozwiązania.

Jak dla mnie bardzo dobrze pokazane :D

Opublikowano

fajnie zrobione ale moje pytanie brzmi: komu to potrzebne do szczęścia?

wystarczy najechać kursorem na ikonke :)

Na handlu może się przydać.. :v
Opublikowano

@alchemik1 Noo.. powoli nawracasz się w moich oczach robiąc coś bezinteresownie... (Nawet jeśli jest to dla społeczności tego forum :D)

Robię to ciągle i w wiekszosci przez GG co potwierdziło by wiele osób bo ja nie jestem sprzedajna k***a jak większość bo sprzedaje tylko sklepy i kostiumy broni które już latały ostatnio po MPC :)

 

 

 

@alchemik1 Noo.. powoli nawracasz się w moich oczach robiąc coś bezinteresownie... (Nawet jeśli jest to dla społeczności tego forum  :D)

Robię to ciągle i w wiekszosci przez GG co potwierdziło by wiele osób bo ja nie jestem sprzedajna k***a jak większość bo sprzedaje tylko sklepy i kostiumy broni które już latały ostatnio po MPC  :)

 

A no to jednak były Twoje te kostiumy  ^^? Dobrze zauważyłem... Cieszę się bardzo, że pomagasz  :).

 

Tak moje bo jakas szmata je opublikowala:)

ban.gif

 

Opublikowano

 

@alchemik1 Noo.. powoli nawracasz się w moich oczach robiąc coś bezinteresownie... (Nawet jeśli jest to dla społeczności tego forum :D)

Robię to ciągle i w wiekszosci przez GG co potwierdziło by wiele osób bo ja nie jestem sprzedajna k***a jak większość bo sprzedaje tylko sklepy i kostiumy broni które już latały ostatnio po MPC :)

 

A no to jednak były Twoje te kostiumy ^^? Dobrze zauważyłem... Cieszę się bardzo, że pomagasz :).

Opublikowano

 

0315 15:35:37421 :: Traceback (most recent call last):
 
0315 15:35:37421 ::   File "networkModule.py", line 240, in SetGamePhase
 
0315 15:35:37421 ::   File "game.py", line 110, in __init__
 
0315 15:35:37421 ::   File "interfaceModule.py", line 326, in MakeInterface
 
0315 15:35:37421 ::   File "interfaceModule.py", line 182, in __MakeWindows
 
0315 15:35:37421 ::   File "uiInventory.py", line 272, in __init__
 
0315 15:35:37421 ::   File "uiInventory.py", line 567, in __LoadWindow
 
0315 15:35:37421 ::   File "uiInventory.py", line 698, in SetEquipmentPage
 
0315 15:35:37421 ::   File "uiInventory.py", line 931, in RefreshEquipSlotWindow
 
0315 15:35:37421 ::   File "ui.py", line 1470, in SetItemSlot
 
0315 15:35:37421 :: ValueError
0315 15:35:37421 :: : 
0315 15:35:37421 :: invalid literal for int() with base 10: '(comert)'
0315 15:35:37421 :: 

 

U mnie dziala ok na kazdym przedmiocie ale poprawilem kod w root. Zrob rooty od nowa z nowym kodem w temacie

ban.gif

 

Opublikowano

Można też przerobić SetSlotCount lub SetSlotCountNew, aby przyjmował string, lub dopisywał + w nazwie, a w count wrzucać poziom przedmiotu, jeśli type to weapon lub armor.

Pomysł jak najbardziej na +9.

307681428489538142351.png

Metin2 Balmora Staff

Opublikowano

Można też przerobić SetSlotCount lub SetSlotCountNew, aby przyjmował string, lub dopisywał + w nazwie, a w count wrzucać poziom przedmiotu, jeśli type to weapon lub armor.

Pomysł jak najbardziej na +9.

Wiem, myslalem o tym ale znow po co edytowac funkcje istniejace skoro mozna zrobic nowa. Tego mozna uzywac nie tylko do pokazywania poziomu itemow ale tez do innych rzeczy. Kwestia uzycia 

ban.gif

 

Opublikowano

 

Można też przerobić SetSlotCount lub SetSlotCountNew, aby przyjmował string, lub dopisywał + w nazwie, a w count wrzucać poziom przedmiotu, jeśli type to weapon lub armor.

Pomysł jak najbardziej na +9.

Wiem, myslalem o tym ale znow po co edytowac funkcje istniejace skoro mozna zrobic nowa. Tego mozna uzywac nie tylko do pokazywania poziomu itemow ale tez do innych rzeczy. Kwestia uzycia 

 

 

Doskonale Cię rozumiem. Nawet nie wiem czy nie byłoby więcej pracy, aby to edytować. A tak wiesz na czym stoisz. Dodatkowo, tak jak mówisz większy wachlarz możliwości.

307681428489538142351.png

Metin2 Balmora Staff

Opublikowano

alchemik1

A da się aby założonych przedmiotów nie pokazywało ich + ? chodzi o wear ;)

Tak da sie, limitujesz to przez sprawdzanie czy nie jest na slotach EQ

####Item level text/icon ###
		itemName=item.GetItemName().strip()
		itemNameP=item.GetItemName().rfind('+')
		if itemNameP>0 and len(itemName)>itemNameP+1 and renderingSlotNumber<player.EQUIPMENT_SLOT_START:
			level=itemName[itemNameP+1:]
			if level.isdigit():
				wndMgr.SetSlotLevelImage(self.hWnd, renderingSlotNumber, ("icon/level/%d.tga"%int(level)))
		####Item level text/icon END ###

+ na gorze ui.py dodaj 

import player

ban.gif

 

  • 10 miesięcy temu...

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...