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

Rekomendowane odpowiedzi

Opublikowano

Cześć forumowicze, potrzebuję małej pomocy przy jednej z funkcji z src serwera (item.cpp)

 

wygląda ona tak :

	else if (GetWearFlag() & WEARABLE_UNIQUE)
	{
		if (ch->GetWear(WEAR_UNIQUE1))
			return WEAR_UNIQUE2;
		else
			return WEAR_UNIQUE1;
		
	}

chciałbym ją rozszerzyć o WEAR_UNIQUE3 i WEAR_UNIQUE4, jednakże po próbach albo i tak zakładało mi na pierwsze dwa sloty a jak podmieniłem Unique1 i 2 na 3/4 to nowe sloty działały bez problemu, jeśli ktoś zechce pomóc serdeczne Bóg zapłać ;p 

 

Pozdrawiam

Opublikowano
else if (GetWearFlag() & WEARABLE_UNIQUE)

{

if (ch->GetWear(WEAR_UNIQUE1))

return WEAR_UNIQUE2;

else

return WEAR_UNIQUE1;

 

if (ch->GetWear(WEAR_UNIQUE3))

return WEAR_UNIQUE4;

else

return WEAR_UNIQUE3;

 

}

 

 

LUB

 


else if (GetWearFlag() & WEARABLE_UNIQUE)

{

if (ch->GetWear(WEAR_UNIQUE1))

return WEAR_UNIQUE2;

else

return WEAR_UNIQUE1;

 

else if (ch->GetWear(WEAR_UNIQUE3))

return WEAR_UNIQUE4;

else

return WEAR_UNIQUE3;

 

}

Opublikowano

nie nie nie chodzi mi tutaj o "ekspansję" slotów Unique (pdki, wierzchowce etc.) o sloty Unique 3 i 4 (te gdzie domyślnie jest item_ring ;) ) i żeby przy zakładaniu pd'ka, rękawiczki zakładało je na jeden z Czterech slotów a nie dwóch, po moich "pro elo" edycjach po założeniu dwóch itemków, zakładając 3 zdejmowało drugi item :v

 

 

Już obczajam rozwiązania Hya. muszę tylko wszystko pouruchamiać spowrotem bo była przerwa w dostawie prądu (wieś gdzie psy dupą szczekają, jak pies zdechnie to łańcuch jeszcze miesiąc szczeka a sołtys asfalt na noc zwija)

 

 

Edit

Pierwsza funkcja, próbowałem jej wczoraj nie czyta slotu 3-4 itemki o type 16 wciąz zakładane są tylko na standardowe dwa sloty

 

Druga funkcja pluje errorami

item.cpp:543: error: expected primary-expression before 'else'
item.cpp:543: error: expected `;' before 'else'
item.cpp:545: error: expected primary-expression before 'else'
item.cpp:545: error: expected `;' before 'else'

żeby nie było że błąd siedzi gdzieś indziej tak zachowują się itemki o type 16 przy funkcji :

else if (GetWearFlag() & WEARABLE_UNIQUE)
{
if (ch->GetWear(WEAR_UNIQUE3))
return WEAR_UNIQUE4;
else
return WEAR_UNIQUE3;
 
 
}

https://zapodaj.net/f7b984c64c0c5.jpg.html

Opublikowano

nie nie nie chodzi mi tutaj o "ekspansję" slotów Unique (pdki, wierzchowce etc.) o sloty Unique 3 i 4 (te gdzie domyślnie jest item_ring ;) ) i żeby przy zakładaniu pd'ka, rękawiczki zakładało je na jeden z Czterech slotów a nie dwóch, po moich "pro elo" edycjach po założeniu dwóch itemków, zakładając 3 zdejmowało drugi item :v

 

 

Już obczajam rozwiązania Hya. muszę tylko wszystko pouruchamiać spowrotem bo była przerwa w dostawie prądu (wieś gdzie psy dupą szczekają, jak pies zdechnie to łańcuch jeszcze miesiąc szczeka a sołtys asfalt na noc zwija)

czyli cos w tym stylu?

else if (GetWearFlag() & WEARABLE_UNIQUE)
{
if (ch->GetWear(WEAR_UNIQUE1))
return WEAR_UNIQUE2;
else
return WEAR_UNIQUE3;
else
return WEAR_UNIQUE4;
else
return WEAR_UNIQUE1;
 
}

Jeździć trzeba szybko i bezpiecznie.

Opublikowano

@radeon252

 

próbowałem też ale przy funkcji if nie możesz mieć tylu wyrażeń else, pluje błędami

 

 

pierwszej funkcji tez z głupa spróbowałem, równiez bez efektu a wolę mieć te dwa sloty na Unique bo na Ringu jest bug z czasem

Opublikowano

Już to przekminiłem, potrzeba 9 ifów na każdy slot Unique aby zrobić to bez żadnego problemu, żeby wziąć pod uwagę każdy przypadek jest/nie ma itemu w slocie :v

Opublikowano

Można zamknąć uporałem się z tym sam koniec końców ;) Końcowa funkcja :

else if (GetWearFlag() & WEARABLE_UNIQUE)
{
	if (!ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	
	if (ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE2;
	if (ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE2;
	if (ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE2;
	if (ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE2;

	
	
	if (ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE3;
	if (ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE3;
	
	if (ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE4;

}

Rezultat : https://zapodaj.net/e3415396a997f.jpg.html

 

 

P.S wiem że rozwiązanie na partyzanta ale jak się nie ma co się lubi...

Opublikowano

Można zamknąć uporałem się z tym sam koniec końców ;) Końcowa funkcja :

else if (GetWearFlag() & WEARABLE_UNIQUE)
{
	if (!ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	
	if (ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE2;
	if (ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE2;
	if (ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE2;
	if (ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE2;

	
	
	if (ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE3;
	if (ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE3;
	
	if (ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE4;

}

Rezultat : https://zapodaj.net/e3415396a997f.jpg.html

 

 

P.S wiem że rozwiązanie na partyzanta ale jak się nie ma co się lubi...

Stary tak spierdolić to sam nigdy nie spierdoliłem XDD

Opublikowano

 

Można zamknąć uporałem się z tym sam koniec końców ;) Końcowa funkcja :

else if (GetWearFlag() & WEARABLE_UNIQUE)
{
	if (!ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	
	if (ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE2;
	if (ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE2;
	if (ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE2;
	if (ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE2;

	
	
	if (ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE3;
	if (ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE3;
	
	if (ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE4;

}

Rezultat : https://zapodaj.net/e3415396a997f.jpg.html

 

 

P.S wiem że rozwiązanie na partyzanta ale jak się nie ma co się lubi...

Stary tak spierdolić to sam nigdy nie spierdoliłem XDD

 

Działa? Działa.

Na c**j drążyć temat :D

Opublikowano

 

Można zamknąć uporałem się z tym sam koniec końców ;) Końcowa funkcja :

else if (GetWearFlag() & WEARABLE_UNIQUE)
{
	if (!ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	if (!ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE1;
	
	if (ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE2;
	if (ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE2;
	if (ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE2;
	if (ch->GetWear(WEAR_UNIQUE1) && !ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE2;

	
	
	if (ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE3;
	if (ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && !ch->GetWear(WEAR_UNIQUE3) && ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE3;
	
	if (ch->GetWear(WEAR_UNIQUE1) && ch->GetWear(WEAR_UNIQUE2) && ch->GetWear(WEAR_UNIQUE3) && !ch->GetWear(WEAR_UNIQUE4))
		return WEAR_UNIQUE4;

}

Rezultat : https://zapodaj.net/e3415396a997f.jpg.html

 

 

P.S wiem że rozwiązanie na partyzanta ale jak się nie ma co się lubi...

Stary tak spierdolić to sam nigdy nie spierdoliłem XDD

 

 

Czemu niby uważasz że to jest spierdolone? Wiadomo optymalizacja kodu poziom -999, mógłbym zastosować pętlę czy użyć tablicy jak sugerowali mi ludzie na devie, ale po pierwsze w CPP jestem zielony, znam tylko podstawy podstaw a po drugie po co skoro to rozwiązanie działa, rozpatrzony jest każdy możliwy przypadek, nie laguje to serwera ani nie wpływa na inne części kodu. 

 

Jedyny - tego rozwiązania jaki widzę to każdy kto zna trochę Cpp złapie się za głowę bo można zrobić to o wiele prościej a ja polegając na swoich szczątkowych umiejętnościach obszedłem problem naokoło i musiałem wytężyć szare komórki żeby to rozpisać

 

Chyba że z tym kodem jest jakiś błąd który przeoczyłem albo przez który będzie wysadzało "gejma" w powietrze ale szczerze wątpię 

 

tak czy tak uważam że lepiej napisać taki gówniany kod niż czekać jak 3/4 tego forum aż ktoś podstawi ci gotowe rozwiązanie pod twarz ale to tylko moja opinia ;p

Opublikowano

dobry kod napisales popioerdol ludzi jak nonam bo to jest j****y jelop jak sielu sobie spijaja smietanke z kutasov

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...