Problema schimbare bonusuri alchimie

Înainte de a posta o problemă, caută în acest forum și poate găsești rezolvare.
Avatar utilizator
Marius Dragomir
Membru Club

Membru Club
Mesaje: 1020
Membru din: 13 Noi 2017, 21:32
Server: HellHound
Regat: Jinno
Aprecieri: 499  
Mulţumiri: 1211  
Discord: Copiază ID
Medalii

*Problemă/Întrebare: Nu functioneaza itemul pt schimbarea bonusului
Tipologie server: -
*Resursă folosită: sursa/change-attribute-alchemy-t82753.html
*ServerFiles utilizat: marty c11
*Syserr: -
Poză:
*Detalii suplimentare: Am facut si item cu subtype -ul specificat in case, am pus codul si in char_item si in dragonsoul.h , in proto reader este trecut subtype ul ca altfel nu pornea serverul, dar totusi nu imi merge dupa cum se vede si in video
Pentru acest mesaj, Marius Dragomir a primit 2 (de) mulţumiri
Reverse0- • plaplarrii1
Continut: Ascuns
Trebuie sa multumesti autorului pentru a putea vedea mesajul.
Afișează semnătura
Avatar utilizator
amvenitsavadcv
Nivel 3

Nivel 3
Mesaje: 413
Membru din: 28 Iul 2018, 11:25
Server: da
Aprecieri: 44  
Mulţumiri: 156  
Medalii

Muta pe vnum, daca nu ai reusit pe subtype.
Te duci in case-u de la ADD_ATTRIBUTE sau CHANGE_ATTRIBUTE parca asa se nume in char_item.cpp
Si pui:
#ifdef USE_CHANGE_ATTRIBUTE_DS
					if(item->GetVnum() == vnumu itemlui)
					{
						LPITEM pDS;
						if (!IsValidItemPosition(DestCell) || !(pDS = GetItem(DestCell)))
							return false;
 
						if (pDS->IsExchanging() || pDS->IsEquipped())
						{
							ChatPacket(CHAT_TYPE_INFO, "Alchimia este echipata, dezechipeaz-o pentru a folosi bonusul.");
							return false;
						}
 
						if (pDS->IsDragonSoul())
						{
							pDS->ClearAttribute();
							DSManager::instance().PutAttributes(pDS);
							item->SetCount(item->GetCount() - 1);
							ChatPacket(CHAT_TYPE_INFO, "Bonusul a fost schimbat cu succes.");
						}
						else
						{
							ChatPacket(CHAT_TYPE_INFO, "Itemul se poate folosi doar pe alchimie.");
							return false;
						}
					}
#endif
Nu vad rostu sa faci un subtype, doar pentru un item sincer sa fiu :))
Si daca pui in case-ul de la add/change attribute, vezi sa fie type3 subtype 19 sau 18, verifici ce type si subrype au adaugarile normale sau schimbarile, depinde in ce case o sa pui tu.
Asa poate iti merge.

Lasa char_item.cpp aici daca nu te descurci.
Avatar utilizator
Marius Dragomir
Membru Club

Membru Club
Mesaje: 1020
Membru din: 13 Noi 2017, 21:32
Server: HellHound
Regat: Jinno
Aprecieri: 499  
Mulţumiri: 1211  
Discord: Copiază ID
Medalii

amvenitsavadcv scrie: ↑16 Dec 2020, 03:19 Muta pe vnum, daca nu ai reusit pe subtype.
Te duci in case-u de la ADD_ATTRIBUTE sau CHANGE_ATTRIBUTE parca asa se nume in char_item.cpp
Si pui:
#ifdef USE_CHANGE_ATTRIBUTE_DS
					if(item->GetVnum() == vnumu itemlui)
					{
						LPITEM pDS;
						if (!IsValidItemPosition(DestCell) || !(pDS = GetItem(DestCell)))
							return false;
 
						if (pDS->IsExchanging() || pDS->IsEquipped())
						{
							ChatPacket(CHAT_TYPE_INFO, "Alchimia este echipata, dezechipeaz-o pentru a folosi bonusul.");
							return false;
						}
 
						if (pDS->IsDragonSoul())
						{
							pDS->ClearAttribute();
							DSManager::instance().PutAttributes(pDS);
							item->SetCount(item->GetCount() - 1);
							ChatPacket(CHAT_TYPE_INFO, "Bonusul a fost schimbat cu succes.");
						}
						else
						{
							ChatPacket(CHAT_TYPE_INFO, "Itemul se poate folosi doar pe alchimie.");
							return false;
						}
					}
#endif
Nu vad rostu sa faci un subtype, doar pentru un item sincer sa fiu :))
Si daca pui in case-ul de la add/change attribute, vezi sa fie type3 subtype 19 sau 18, verifici ce type si subrype au adaugarile normale sau schimbarile, depinde in ce case o sa pui tu.
Asa poate iti merge.
Am item_proto pe txt nu sql deci ar trebuii sa trec acolo ceva de genul?
ITEM_TYPE SUB_TYPE
ITEM_USE USE_CHANGE_ATTRIBUTE
Continut: Ascuns
Trebuie sa multumesti autorului pentru a putea vedea mesajul.
Afișează semnătura
Avatar utilizator
amvenitsavadcv
Nivel 3

Nivel 3
Mesaje: 413
Membru din: 28 Iul 2018, 11:25
Server: da
Aprecieri: 44  
Mulţumiri: 156  
Medalii

mariusdrg95 scrie: ↑16 Dec 2020, 03:24
amvenitsavadcv scrie: ↑16 Dec 2020, 03:19 Muta pe vnum, daca nu ai reusit pe subtype.
Te duci in case-u de la ADD_ATTRIBUTE sau CHANGE_ATTRIBUTE parca asa se nume in char_item.cpp
Si pui:
#ifdef USE_CHANGE_ATTRIBUTE_DS
					if(item->GetVnum() == vnumu itemlui)
					{
						LPITEM pDS;
						if (!IsValidItemPosition(DestCell) || !(pDS = GetItem(DestCell)))
							return false;
 
						if (pDS->IsExchanging() || pDS->IsEquipped())
						{
							ChatPacket(CHAT_TYPE_INFO, "Alchimia este echipata, dezechipeaz-o pentru a folosi bonusul.");
							return false;
						}
 
						if (pDS->IsDragonSoul())
						{
							pDS->ClearAttribute();
							DSManager::instance().PutAttributes(pDS);
							item->SetCount(item->GetCount() - 1);
							ChatPacket(CHAT_TYPE_INFO, "Bonusul a fost schimbat cu succes.");
						}
						else
						{
							ChatPacket(CHAT_TYPE_INFO, "Itemul se poate folosi doar pe alchimie.");
							return false;
						}
					}
#endif
Nu vad rostu sa faci un subtype, doar pentru un item sincer sa fiu :))
Si daca pui in case-ul de la add/change attribute, vezi sa fie type3 subtype 19 sau 18, verifici ce type si subrype au adaugarile normale sau schimbarile, depinde in ce case o sa pui tu.
Asa poate iti merge.
Am item_proto pe txt nu sql deci ar trebuii sa trec acolo ceva de genul?
ITEM_TYPE SUB_TYPE
ITEM_USE USE_CHANGE_ATTRIBUTE
Asta doar daca codu ce ti l-am dat mai sus,l-ai adaugat in case-ul de la CHANGE_ATTRIBUTE in char_item.cpp
Avatar utilizator
Marius Dragomir
Membru Club

Membru Club
Mesaje: 1020
Membru din: 13 Noi 2017, 21:32
Server: HellHound
Regat: Jinno
Aprecieri: 499  
Mulţumiri: 1211  
Discord: Copiază ID
Medalii

amvenitsavadcv scrie: ↑16 Dec 2020, 03:26
mariusdrg95 scrie: ↑16 Dec 2020, 03:24
amvenitsavadcv scrie: ↑16 Dec 2020, 03:19 Muta pe vnum, daca nu ai reusit pe subtype.
Te duci in case-u de la ADD_ATTRIBUTE sau CHANGE_ATTRIBUTE parca asa se nume in char_item.cpp
Si pui:
#ifdef USE_CHANGE_ATTRIBUTE_DS
					if(item->GetVnum() == vnumu itemlui)
					{
						LPITEM pDS;
						if (!IsValidItemPosition(DestCell) || !(pDS = GetItem(DestCell)))
							return false;
 
						if (pDS->IsExchanging() || pDS->IsEquipped())
						{
							ChatPacket(CHAT_TYPE_INFO, "Alchimia este echipata, dezechipeaz-o pentru a folosi bonusul.");
							return false;
						}
 
						if (pDS->IsDragonSoul())
						{
							pDS->ClearAttribute();
							DSManager::instance().PutAttributes(pDS);
							item->SetCount(item->GetCount() - 1);
							ChatPacket(CHAT_TYPE_INFO, "Bonusul a fost schimbat cu succes.");
						}
						else
						{
							ChatPacket(CHAT_TYPE_INFO, "Itemul se poate folosi doar pe alchimie.");
							return false;
						}
					}
#endif
Nu vad rostu sa faci un subtype, doar pentru un item sincer sa fiu :))
Si daca pui in case-ul de la add/change attribute, vezi sa fie type3 subtype 19 sau 18, verifici ce type si subrype au adaugarile normale sau schimbarile, depinde in ce case o sa pui tu.
Asa poate iti merge.
Am item_proto pe txt nu sql deci ar trebuii sa trec acolo ceva de genul?
ITEM_TYPE SUB_TYPE
ITEM_USE USE_CHANGE_ATTRIBUTE
Asta doar daca codu ce ti l-am dat mai sus,l-ai adaugat in case-ul de la CHANGE_ATTRIBUTE in char_item.cpp
O sa il bag in acel case ca e mai simplu si mai putina bataie de cap plus ca nu ar merge cu alt tip de schimbare pentru ca din ce vad definesc vnumul in ceea ce mi-ai trecut tu aici nu ?
Pentru acest mesaj, Marius Dragomir for the post:
Frey444
Continut: Ascuns
Trebuie sa multumesti autorului pentru a putea vedea mesajul.
Afișează semnătura
Avatar utilizator
amvenitsavadcv
Nivel 3

Nivel 3
Mesaje: 413
Membru din: 28 Iul 2018, 11:25
Server: da
Aprecieri: 44  
Mulţumiri: 156  
Medalii

mariusdrg95 scrie: ↑16 Dec 2020, 03:28
amvenitsavadcv scrie: ↑16 Dec 2020, 03:26
mariusdrg95 scrie: ↑16 Dec 2020, 03:24

Am item_proto pe txt nu sql deci ar trebuii sa trec acolo ceva de genul?
ITEM_TYPE SUB_TYPE
ITEM_USE USE_CHANGE_ATTRIBUTE
Asta doar daca codu ce ti l-am dat mai sus,l-ai adaugat in case-ul de la CHANGE_ATTRIBUTE in char_item.cpp
O sa il bag in acel case ca e mai simplu si mai putina bataie de cap plus ca nu ar merge cu alt tip de schimbare pentru ca din ce vad definesc vnumul in ceea ce mi-ai trecut tu aici nu ?
Da, o sa ti mearga doar pe vnum-ul respectiv.
Avatar utilizator
Marius Dragomir
Membru Club

Membru Club
Mesaje: 1020
Membru din: 13 Noi 2017, 21:32
Server: HellHound
Regat: Jinno
Aprecieri: 499  
Mulţumiri: 1211  
Discord: Copiază ID
Medalii

amvenitsavadcv scrie: ↑16 Dec 2020, 03:33
mariusdrg95 scrie: ↑16 Dec 2020, 03:28
amvenitsavadcv scrie: ↑16 Dec 2020, 03:26

Asta doar daca codu ce ti l-am dat mai sus,l-ai adaugat in case-ul de la CHANGE_ATTRIBUTE in char_item.cpp
O sa il bag in acel case ca e mai simplu si mai putina bataie de cap plus ca nu ar merge cu alt tip de schimbare pentru ca din ce vad definesc vnumul in ceea ce mi-ai trecut tu aici nu ?
Da, o sa ti mearga doar pe vnum-ul respectiv.
Am incercat si asa cum mi-ai dat totusi rezultatul este acelasi, trebuie sa fac vreo modificare in dragonsoul.h ?
Continut: Ascuns
Trebuie sa multumesti autorului pentru a putea vedea mesajul.
Afișează semnătura
Avatar utilizator
amvenitsavadcv
Nivel 3

Nivel 3
Mesaje: 413
Membru din: 28 Iul 2018, 11:25
Server: da
Aprecieri: 44  
Mulţumiri: 156  
Medalii

Lasa mi char_item.cpp aici sa dau o privire.
Si maine dimineata o sa ti dau un raspuns mai sigur.Ca nu am cum sa stiu ce mai ai tu prin char_item.cpp ce nu te lasa sa schimbi. Ca vad ca iti intra intr-un ChatPacket care sigur da un return false; dupa.
Asa arata din prima poza.
Avatar utilizator
Marius Dragomir
Membru Club

Membru Club
Mesaje: 1020
Membru din: 13 Noi 2017, 21:32
Server: HellHound
Regat: Jinno
Aprecieri: 499  
Mulţumiri: 1211  
Discord: Copiază ID
Medalii

amvenitsavadcv scrie: ↑16 Dec 2020, 04:07 Lasa mi char_item.cpp aici sa dau o privire.
Si maine dimineata o sa ti dau un raspuns mai sigur.Ca nu am cum sa stiu ce mai ai tu prin char_item.cpp ce nu te lasa sa schimbi. Ca vad ca iti intra intr-un ChatPacket care sigur da un return false; dupa.
Asa arata din prima poza.
char_item.cpp


EDIT: Aparent schimb bonusurile la iteme normale cu el :))
Continut: Ascuns
Trebuie sa multumesti autorului pentru a putea vedea mesajul.
Afișează semnătura
Avatar utilizator
amvenitsavadcv
Nivel 3

Nivel 3
Mesaje: 413
Membru din: 28 Iul 2018, 11:25
Server: da
Aprecieri: 44  
Mulţumiri: 156  
Medalii

Ar fi trebuit sa ti mearga.
Incerca asa:


Adauga in dragonsoul.cpp
bool DSManager::Schimbabns(LPITEM pItem) 
{
	if (NULL == pItem || !pItem->IsDragonSoul())
		return false;
	PutAttributes(pItem);
}
Adauga in dragonsoul.h in public:
bool	Schimbabns(LPITEM pDS);
Adauga in char_item.cpp
In case-ul de la Add-Attribute:
Dupa:
									if (item2->GetAttributeSetIndex() == -1)
									{
										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성을 변경할 수 없는 아이템입니다."));
										return false;
									}
Adauga:
										if (item->GetVnum() == Vnumu tau)		
										{
										if(item2->GetType() == ITEM_DS)//Acum te va lasa sa schimbi doar pe alchimie
										{
										if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell)))
												return false;
										if (item2->IsExchanging() || item2->IsEquipped())
											{
												ChatPacket(CHAT_TYPE_INFO, "Alchimia este echipata, dezechipeaz-o pentru a folosi bonusul.");
												return false;
											}
											DSManager::instance().Schimbabns(item2);
											ChatPacket(CHAT_TYPE_INFO("bonus_change_succes"));
											LogManager::instance().ItemLog(this, item, "SCHIMBA_ALCHIMIE", buf);
											item->SetCount(item->GetCount() - 1);
										}
										else
										{
										ChatPacket(CHAT_TYPE_INFO("Nu este alchimie"));
										}
										}
Închis
Răspunsuri
18
Vizualizări
1711
Răspunsuri
3
Vizualizări
468
Răspunsuri
3
Vizualizări
388

Înapoi la “Probleme rezolvate”

  • Informaţie