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++ Ilość podniesionych przedmiotów na chacie


#SQN

Rekomendowane odpowiedzi

Opublikowano

Nigdzie nie widziałem takiego tutorialu więc czemu by nie napisać.

Wiem, że to nic wielkiego ale może komuś się przyda.

 

 

Otwieracie char_item.cpp

Szukacie (około linijki 5800)

 

 

LogManager::instance().ItemLog(this, item, "GET", szHint);

 

 

 

Pod tym macie linijke z ChatPacket, edytujecie ją w ten sposób:

 

 

ChatPacket(CHAT_TYPE_INFO, "Otrzymano: (%dx) %s ", item->GetCount(), item->GetName());

 

 

 

Szukacie (około linijki 5900)

 

 

LogManager::instance().ItemLog(owner, item, "GET", szHint);

 

 

 

Pod tym macie linijke z ChatPacket, edytujecie ją tak samo jak wcześniej:

 

 

ChatPacket(CHAT_TYPE_INFO, "Otrzymano: (%dx) %s ", item->GetCount(), item->GetName());

 

 

 

Szukacie (około linijki 6500)

 

 

	int iEmptyCell;
	if ( item->IsDragonSoul() )
	{
		iEmptyCell = GetEmptyDragonSoulInventory(item);
	}
	else
		iEmptyCell = GetEmptyInventory(item->GetSize());

	if ( iEmptyCell != -1 )
	{ 

 

 

 

Pod tym macie linijke z ChatPacket, edytujecie ją tak samo jak wcześniej:

 

 

ChatPacket(CHAT_TYPE_INFO, "Otrzymano: (%dx) %s ", item->GetCount(), item->GetName());

 

 

 

Szukacie (około 5700 linijka)

 

 

bool CHARACTER::PickupItem(DWORD dwVID)

 

 

 

I niżej z:

 

 

ChatPacket(CHAT_TYPE_INFO, LC_TEXT("아이템 획득: %s"), item2->GetName());

 

 

 

Zmieniacie na taką samą co wcześniej:

 

 

ChatPacket(CHAT_TYPE_INFO, "Otrzymano: (%dx) %s ", item->GetCount(), item->GetName()); 

 

 

//Edit

 

Fix od @Munir   dzięki wielkie!

Fix, aby nie zliczało wszystkich itemów z ekwipunku, przy otwieraniu szkatułki, pc.give_item2 itd.

 

Na przykładzie tego:

 

ChatPacket(CHAT_TYPE_INFO, "Otrzymano: (%dx) %s ", item->GetCount(), item->GetName());  

 

 

Zmieniamy tak:

 

ChatPacket(CHAT_TYPE_INFO, "Otrzymano: (%dx) %s ", bCount2, item->GetName());  

 

 

Robimy tak bodajże przy 2 przypadkach

w tym:

 



					if (bCount == 0)
					{
						ChatPacket(CHAT_TYPE_INFO, "Otrzymano: (%ux) %s", bCount2, item->GetName());
						M2_DESTROY_ITEM(item);
						if (item2->GetType() == ITEM_QUEST)
							quest::CQuestManager::instance().PickupItem (GetPlayerID(), item2);
						return true;
					}

 

 

I w tym:

 

 

 

				if (bCount == 0)
				{
					if (bMsg)
						ChatPacket(CHAT_TYPE_INFO, "Otrzymano: (%ux) %s", bCount2, item->GetName());

					return item;
				}

 

 

 

(Proszę zauważyć, że zamiast Otrzymano: (%dx) używamy (%ux))

 

 

 

+++  dodatkowe info, jeśli macie więcej niż jeden komunikat przy otwieraniu szkat. coś w stylu "Otrzymałeś... jako niespodziankę!" i chcecie go wyłączyć, przechodzicie do:

 

 

 

case ITEM_GIFTBOX:

 

 

 

i robicie to z ostatnią linijką:

 

 

//else
    //ChatPacket(CHAT_TYPE_INFO, LC_TEXT("»óÀÚ¿¡¼­ %s °¡ ³ª¿Ô½À´Ï´Ù."), item_gets[i]->GetName());

 

 

 

Efekt:

 

noisy1.jpg

Opublikowano

Raczej każdy kto myśli racjonalnie sam doszedłby do tego, ale przyda się tym co nie wiedzą. Lajk leci, tylko jeszcze jest jeden wpis od tego mógłbyś dodać do tematu(drop ze szkat) :).


Omnes puerum deriserunt.

Opublikowano

Raczej każdy kto myśli racjonalnie sam doszedłby do tego, ale przyda się tym co nie wiedzą. Lajk leci, tylko jeszcze jest jeden wpis od tego mógłbyś dodać do tematu(drop ze szkat) :).

O dzięki!

 

Poprawiłem pare linijek, teraz nie powinno się bugować przy podnoszeniu tego samego przedmiotu któryś raz, jedyne co zostało to właśnie drop ze szkat. 

Wstane to rzucę okiem i dam edita.

Opublikowano

Niby drobiazg,a cieszy :)

xhxtrd.png
 
Poszukuje Mappera na zlecenie osoby zainteresowane Priv .

Pliki Divine/Glador Możemy się dogadać PW
 

  • 2 tygodnie później...
Opublikowano
o czym mówiłem już wcześniej, chciałem to zmienić jednak po dwóch nieudanych próbach dałem sobie narazie z tym spokój bo szkoda mi życia na czekanie 15 minut po każdej wprowadzonej zmianie w kodzie...

 

Rozumiem że nikt na tym forum nie wie od czego mamy OBJDIR?

Opublikowano

@#SQN

Fix, aby nie zliczało wszystkich itemów z ekwipunku, przy otwieraniu szkatułki, pc.give_item2 itd.

 

Na przykładzie tego:

ChatPacket(CHAT_TYPE_INFO, "Otrzymano: (%dx) %s ", item->GetCount(), item->GetName()); 

Zmieniamy tak:

ChatPacket(CHAT_TYPE_INFO, "Otrzymano: (%dx) %s ", bCount2, item->GetName()); 

Robimy tak bodajże przy 2 przypadkach

w tym:

 

 

							if (bCount == 0)
							{
								ChatPacket(CHAT_TYPE_INFO, "Otrzymałeś: (%ux) %s", bCount2, item->GetName());
								M2_DESTROY_ITEM(item);
								if (item2->GetType() == ITEM_QUEST)
									quest::CQuestManager::instance().PickupItem (GetPlayerID(), item2);
								return true;
							}

 

 

I w tym:

 

 

				if (bCount == 0)
				{
					if (bMsg)
						ChatPacket(CHAT_TYPE_INFO, "Otrzymałeś: (%ux) %s", bCount2, item->GetName());

					return item;
				}

 

 


Omnes puerum deriserunt.

Opublikowano

@#SQN

Fix, aby nie zliczało wszystkich itemów z ekwipunku, przy otwieraniu szkatułki, pc.give_item2 itd.

 

Na przykładzie tego:

ChatPacket(CHAT_TYPE_INFO, "Otrzymano: (%dx) %s ", item->GetCount(), item->GetName()); 

Zmieniamy tak:

ChatPacket(CHAT_TYPE_INFO, "Otrzymano: (%dx) %s ", bCount2, item->GetName()); 

Robimy tak bodajże przy 2 przypadkach

w tym:

 

 

							if (bCount == 0)
							{
								ChatPacket(CHAT_TYPE_INFO, "Otrzymałeś: (%ux) %s", bCount2, item->GetName());
								M2_DESTROY_ITEM(item);
								if (item2->GetType() == ITEM_QUEST)
									quest::CQuestManager::instance().PickupItem (GetPlayerID(), item2);
								return true;
							}

 

 

I w tym:

 

 

				if (bCount == 0)
				{
					if (bMsg)
						ChatPacket(CHAT_TYPE_INFO, "Otrzymałeś: (%ux) %s", bCount2, item->GetName());

					return item;
				}

 

 

 

Dzięki wariat, dodaje do tematu. Browarek się należy  ^_^

­

Opublikowano

Sprawdzone, śmiga. Efekt bardzo mi się podobuje :D

Dzięki ;)­

Opublikowano

Mam pewien problem z roskami, bo jak otwieram szkatułkę serwerową to mi ich nie zlicza :c

qOyutBB.png

Rozwiązanie to nie działa na wszystkich przedmiotach

Opublikowano

Mam pewien problem z roskami, bo jak otwieram szkatułkę serwerową to mi ich nie zlicza :c

qOyutBB.png

 

Po czasie ale co mi tam...

 

Fix na zliczanie przedmiotów ze szkat. został dodany do tematu, sprawdzone u paru osób i wszystko pięknie działa  ^_^

Może przeoczyłeś albo nie tam gdzie trzeba wprowadziłeś zmiany w kodzie, posprawdzaj a gwarantuje, że będzie śmigać jak należy.

­

  • 1 miesiąc temu...
Opublikowano
char_item.cpp:5882: error: 'bCount2' was not declared in this scope

char_item.cpp:5941: error: 'bCount2' was not declared in this scope

 

takim bledem mi wali , ktoś coś ?

To po dodaniu fixa od Munira

 

moje char_item.cpp

---


7plz01.jpg

Opublikowano

 

char_item.cpp:5882: error: 'bCount2' was not declared in this scope
char_item.cpp:5941: error: 'bCount2' was not declared in this scope
 
takim bledem mi wali , ktoś coś ?
To po dodaniu fixa od Munira
 
moje char_item.cpp
---

 

Coś ty to porobił? Kto ci kazał dopisywać do każdej bCount2?  :huh:

Poważnie, nawet z gotowca nie umieć dodać....

 

Na przykładzie...

Twoja 5882 linijka, powinna wyglądać tak:

ChatPacket(CHAT_TYPE_INFO, "Otrzymales/as: (%dx) %s ", item->GetCount(), item->GetName()); 

skąd ty wziąłeś akurat w tych linijkach to bCount2 jak w poradniku masz jak byk napisane co, gdzie, pod czym i dlaczego... o.O

­

Opublikowano

Ja to już wczoraj dawno naprawiłem , bo się połapałem co tam skruszyłem :) Spizgałem dupę wczoraj i byłem nie do końca kompatybilny z rzeczywistością . Mój błąd .

7plz01.jpg

  • 2 miesiące temu...
Opublikowano

Witam, dodałem to i niby jest wszystko w porządku, dodałem również fixa, lecz gdy teraz sprawdziłem fix jakby nie zadziałał lub nie wiem co jest nie tak ;p Zrobiłem jak w tutku, linijka w linijkę i przy otwieraniu skrzynek mam coś takiego: http://scr.hu/8xyv/p2ca5

image.png

Opublikowano

a jeśli jesteś wykwalifikowanym prze chujem i robisz to dla międzynarodowego serwera to może być tak? ;

ChatPacket(CHAT_TYPE_INFO, LC_TEXT("아이템 획득: (%dx) %s"), item2->GetCout(), item2->GetName());

btw. dlaczego %dx a nie np %pp ? nazyw sa dowolne?

proszę o wypowiedzi ekspertów xD

Opublikowano

a jeśli jesteś wykwalifikowanym prze chujem i robisz to dla międzynarodowego serwera to może być tak? ;

ChatPacket(CHAT_TYPE_INFO, LC_TEXT("아이템 획득: (%dx) %s"), item2->GetCout(), item2->GetName());

btw. dlaczego %dx a nie np %pp ? nazyw sa dowolne?

proszę o wypowiedzi ekspertów xD

Tam nie jest %dx, tylko %d, i nie jest to obojętnie, w tym przypadku %d jest użyty, ponieważ item2->GetCount() zwraca liczbę typu całkowitego.

Więcej masz tutaj na przykład https://pl.wikipedia.org/wiki/Printf.

Opublikowano

Tam nie jest %dx, tylko %d, i nie jest to obojętnie, w tym przypadku %d jest użyty, ponieważ item2->GetCount() zwraca liczbę typu całkowitego.

Więcej masz tutaj na przykład https://pl.wikipedia.org/wiki/Printf.

przeceiż w tut jest (%dx)  mam rozumieć że jakby ten item->GetCout() jakby przypisuje się do tego %d ?

Opublikowano

przeceiż w tut jest (%dx)  mam rozumieć że jakby ten item->GetCout() jakby przypisuje się do tego %d ?

No w poradniku jest %dx, żeby wyświetliło 'x' po wypisanej ilości, np "Otrzymałeś 100x Bryłek". Tak w miejsce %d leci ilość przedmiotów, a dalej do %s nazwa przedmiotu.

Opublikowano

No w poradniku jest %dx, żeby wyświetliło 'x' po wypisanej ilości, np "Otrzymałeś 100x Bryłek". Tak w miejsce %d leci ilość przedmiotów, a dalej do %s nazwa przedmiotu.

myślałem że to trzeba w jakieś " " albo ' ' xD. Więc jak bym wpisał item2->GetLevel()   to by mi wypisało mój lv?

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...