dispar iteme din inventar special

Înainte de a posta o problemă, caută în acest forum și poate găsești rezolvare.
Închis
Avatar utilizator
yonr1
Nivel 4

Nivel 4
Mesaje: 677
Membru din: 03 Dec 2013, 08:42
Aprecieri: 297  
Mulţumiri: 30  
  Rezolvări prob.: 14
Medalii

*Problemă/Întrebare: dupa ce retrag iteme din shopoffline unele se duc pe slotu care este deja un item si dispare.
in shop normal armele si alte iteme se duc normal in slot-uri din inventar normal.
Tipologie server(PvM / PvP):...
*Resursă folosită: *Link exclusiv J4M* sursa/special-storage-zenu-t81425.html
*ServerFiles utilizat:...
*Syserr:
Poză: https://gyazo.com/0f23a98ff2d8ef068578d30c89a9a814

in tutorial nu are partea de shopoffline
am facut asa, nu stiu daca am facut bine.

offline_shop.cpp


offlineshop_manager.cpp


offlineshop.py
Imagine
Afișează semnătura
Avatar utilizator
yonr1
Nivel 4

Nivel 4
Mesaje: 677
Membru din: 03 Dec 2013, 08:42
Aprecieri: 297  
Mulţumiri: 30  
  Rezolvări prob.: 14
Medalii

up, undeva de aici cred ca vine problema, doar cand scot iteme din offline, cand le cumpar se duc bine...

def SelectEmptySlot(self, slotIndex):
try:
if (constInfo.GET_ITEM_QUESTION_DIALOG_STATUS() == 1):
return

if (mouseModule.mouseController.isAttached()):
attachedSlotType = mouseModule.mouseController.GetAttachedType()
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
mouseModule.mouseController.DeattachObject()

if player.SLOT_TYPE_INVENTORY != attachedSlotType and player.SLOT_TYPE_DRAGON_SOUL_INVENTORY != attachedSlotType and\
(player.SLOT_TYPE_INVENTORY != attachedSlotType and\
player.SLOT_TYPE_DRAGON_SOUL_INVENTORY != attachedSlotType and\
player.SLOT_TYPE_UPGRADE_INVENTORY != attachedSlotType and\
player.SLOT_TYPE_BOOK_INVENTORY != attachedSlotType and\
player.SLOT_TYPE_STONE_INVENTORY != attachedSlotType and app.ENABLE_SPECIAL_STORAGE):

return

attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)
itemVnum = player.GetItemIndex(attachedInvenType, attachedSlotPos)
item.SelectItem(itemVnum)

if (item.IsAntiFlag(item.ANTIFLAG_GIVE) or item.IsAntiFlag(item.ANTIFLAG_MYSHOP)):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.OFFLINE_SHOP_CANNOT_SELL_ITEM)
return

priceInputBoard = uiCommon.MoneyInputDialog()
priceInputBoard.SetTitle(item.GetItemName() + "'s price")
priceInputBoard.SetAcceptEvent(ui.__mem_func__(self.AcceptInputPrice))
priceInputBoard.SetCancelEvent(ui.__mem_func__(self.CancelInputPrice))
priceInputBoard.Open()

self.priceInputBoard = priceInputBoard
self.priceInputBoard.bDisplayPos = slotIndex
self.priceInputBoard.bPos = attachedSlotPos
except Exception, e:
import dbg
dbg.TraceError("Exception : SelectEmptySlot, %s" %(e))
Imagine
Afișează semnătura
Avatar utilizator
yonr1
Nivel 4

Nivel 4
Mesaje: 677
Membru din: 03 Dec 2013, 08:42
Aprecieri: 297  
Mulţumiri: 30  
  Rezolvări prob.: 14
Medalii

imi apare acest sysser pe ch1

SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005375 Piele de talpa de urs owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30053 (name NvL id 10005375)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005414 Bucata de tesatura+ owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30085 (name NvL id 10005414)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005404 Piele de talpa de urs owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30053 (name NvL id 10005404)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005424 Coada de sarpe owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30022 (name NvL id 10005424)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005405 Fiere de Urs owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30010 (name NvL id 10005405)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005481 Ochi de Paianjen owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30057 (name NvL id 10005481)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005410 Simbol de razboinic owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30091 (name NvL id 10005410)
Imagine
Afișează semnătura
Avatar utilizator
NoNNeX
Nivel 2

Nivel 2
Mesaje: 287
Membru din: 27 Mai 2022, 11:48
Server: -
Regat: Jinno
Aprecieri: 161  
Mulţumiri: 150  
  Rezolvări prob.: 4
Discord: Copiază ID
Medalii

yonr1 scrie: ↑07 Aug 2022, 19:52 imi apare acest sysser pe ch1

SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005375 Piele de talpa de urs owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30053 (name NvL id 10005375)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005414 Bucata de tesatura+ owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30085 (name NvL id 10005414)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005404 Piele de talpa de urs owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30053 (name NvL id 10005404)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005424 Coada de sarpe owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30022 (name NvL id 10005424)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005405 Fiere de Urs owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30010 (name NvL id 10005405)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005481 Ochi de Paianjen owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30057 (name NvL id 10005481)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005410 Simbol de razboinic owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30091 (name NvL id 10005410)
Verifica item.cpp și char_item.cpp defapt cred ca este din input_db.cpp parca funcția de item load am avut ceva asemenea la switchbot a lu sanii
Avatar utilizator
yonr1
Nivel 4

Nivel 4
Mesaje: 677
Membru din: 03 Dec 2013, 08:42
Aprecieri: 297  
Mulţumiri: 30  
  Rezolvări prob.: 14
Medalii

NoNNeX scrie: ↑07 Aug 2022, 21:25
yonr1 scrie: ↑07 Aug 2022, 19:52 imi apare acest sysser pe ch1

SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005375 Piele de talpa de urs owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30053 (name NvL id 10005375)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005414 Bucata de tesatura+ owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30085 (name NvL id 10005414)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005404 Piele de talpa de urs owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30053 (name NvL id 10005404)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005424 Coada de sarpe owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30022 (name NvL id 10005424)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005405 Fiere de Urs owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30010 (name NvL id 10005405)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005481 Ochi de Paianjen owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30057 (name NvL id 10005481)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005410 Simbol de razboinic owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30091 (name NvL id 10005410)
Verifica item.cpp și char_item.cpp defapt cred ca este din input_db.cpp parca funcția de item load am avut ceva asemenea la switchbot a lu sanii
decat aasta am gasit in input_db

Cod: Selectaţi tot

oid CInputDB::ItemLoad(LPDESC d, const char * c_pData)
{
	LPCHARACTER ch;

	if (!d || !(ch = d->GetCharacter()))
		return;

	if (ch->IsItemLoaded())
		return;

	DWORD dwCount = decode_4bytes(c_pData);
	c_pData += sizeof(DWORD);

	sys_log(0, "ITEM_LOAD: COUNT %s %u", ch->GetName(), dwCount);

	std::vector<LPITEM> v;

	TPlayerItem * p = (TPlayerItem *) c_pData;

	for (DWORD i = 0; i < dwCount; ++i, ++p)
	{
		LPITEM item = ITEM_MANAGER::instance().CreateItem(p->vnum, p->count, p->id);

		if (!item)
		{
			sys_err("cannot create item by vnum %u (name %s id %u)", p->vnum, ch->GetName(), p->id);
			continue;
		}

		item->SetSkipSave(true);
		item->SetSockets(p->alSockets);
		item->SetAttributes(p->aAttr);

		if ((p->window == INVENTORY && ch->GetInventoryItem(p->pos)) ||
				(p->window == EQUIPMENT && ch->GetWear(p->pos)))
		{
			sys_log(0, "ITEM_RESTORE: %s %s", ch->GetName(), item->GetName());
			v.push_back(item);
		}
		else
		{
			switch (p->window)
			{
				case INVENTORY:
				case DRAGON_SOUL_INVENTORY:
#ifdef ENABLE_SWITCHBOT
				case SWITCHBOT:
#endif
#ifdef __SPECIAL_STORAGE__
				case UPGRADE_INVENTORY:
				case BOOK_INVENTORY:
				case STONE_INVENTORY:
				{
					//sys_err("Load shit window = %d // pos = %d", p->window, p->pos);
					item->AddToCharacter(ch, TItemPos(p->window, p->pos));
				}
				break;
#endif	
					item->AddToCharacter(ch, TItemPos(p->window, p->pos));
					break;

				case EQUIPMENT:
					if (item->CheckItemUseLevel(ch->GetLevel()) == true )
					{
						if (item->EquipTo(ch, p->pos) == false )
						{
							v.push_back(item);
						}
					}
					else
					{
						v.push_back(item);
					}
					break;
			}
		}

		if (false == item->OnAfterCreatedItem())
			sys_err("Failed to call ITEM::OnAfterCreatedItem (vnum: %d, id: %d)", item->GetVnum(), item->GetID());

		item->SetSkipSave(false);
	}

	itertype(v) it = v.begin();

	while (it != v.end())
	{
		LPITEM item = *(it++);

		int pos = ch->GetEmptyInventory(item->GetSize());

		if (pos < 0)
		{
			PIXEL_POSITION coord;
			coord.x = ch->GetX();
			coord.y = ch->GetY();

			item->AddToGround(ch->GetMapIndex(), coord);
			item->SetOwnership(ch, 180);
			item->StartDestroyEvent();
		}
		else
			item->AddToCharacter(ch, TItemPos(INVENTORY, pos));
	}

	ch->CheckMaximumPoints();
	ch->PointsPacket();

	ch->SetItemLoaded();
}
Imagine
Afișează semnătura
Avatar utilizator
NoNNeX
Nivel 2

Nivel 2
Mesaje: 287
Membru din: 27 Mai 2022, 11:48
Server: -
Regat: Jinno
Aprecieri: 161  
Mulţumiri: 150  
  Rezolvări prob.: 4
Discord: Copiază ID
Medalii

yonr1 scrie: ↑08 Aug 2022, 12:59
NoNNeX scrie: ↑07 Aug 2022, 21:25
yonr1 scrie: ↑07 Aug 2022, 19:52 imi apare acest sysser pe ch1

SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005375 Piele de talpa de urs owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30053 (name NvL id 10005375)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005414 Bucata de tesatura+ owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30085 (name NvL id 10005414)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005404 Piele de talpa de urs owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30053 (name NvL id 10005404)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005424 Coada de sarpe owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30022 (name NvL id 10005424)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005405 Fiere de Urs owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30010 (name NvL id 10005405)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005481 Ochi de Paianjen owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30057 (name NvL id 10005481)
SYSERR: Aug 7 20:48:19 :: CreateItem: ITEM_ID_DUP: 10005410 Simbol de razboinic owner 0x735bc680
SYSERR: Aug 7 20:48:19 :: ItemLoad: cannot create item by vnum 30091 (name NvL id 10005410)
Verifica item.cpp și char_item.cpp defapt cred ca este din input_db.cpp parca funcția de item load am avut ceva asemenea la switchbot a lu sanii
decat aasta am gasit in input_db

Cod: Selectaţi tot

oid CInputDB::ItemLoad(LPDESC d, const char * c_pData)
{
	LPCHARACTER ch;

	if (!d || !(ch = d->GetCharacter()))
		return;

	if (ch->IsItemLoaded())
		return;

	DWORD dwCount = decode_4bytes(c_pData);
	c_pData += sizeof(DWORD);

	sys_log(0, "ITEM_LOAD: COUNT %s %u", ch->GetName(), dwCount);

	std::vector<LPITEM> v;

	TPlayerItem * p = (TPlayerItem *) c_pData;

	for (DWORD i = 0; i < dwCount; ++i, ++p)
	{
		LPITEM item = ITEM_MANAGER::instance().CreateItem(p->vnum, p->count, p->id);

		if (!item)
		{
			sys_err("cannot create item by vnum %u (name %s id %u)", p->vnum, ch->GetName(), p->id);
			continue;
		}

		item->SetSkipSave(true);
		item->SetSockets(p->alSockets);
		item->SetAttributes(p->aAttr);

		if ((p->window == INVENTORY && ch->GetInventoryItem(p->pos)) ||
				(p->window == EQUIPMENT && ch->GetWear(p->pos)))
		{
			sys_log(0, "ITEM_RESTORE: %s %s", ch->GetName(), item->GetName());
			v.push_back(item);
		}
		else
		{
			switch (p->window)
			{
				case INVENTORY:
				case DRAGON_SOUL_INVENTORY:
#ifdef ENABLE_SWITCHBOT
				case SWITCHBOT:
#endif
#ifdef __SPECIAL_STORAGE__
				case UPGRADE_INVENTORY:
				case BOOK_INVENTORY:
				case STONE_INVENTORY:
				{
					//sys_err("Load shit window = %d // pos = %d", p->window, p->pos);
					item->AddToCharacter(ch, TItemPos(p->window, p->pos));
				}
				break;
#endif	
					item->AddToCharacter(ch, TItemPos(p->window, p->pos));
					break;

				case EQUIPMENT:
					if (item->CheckItemUseLevel(ch->GetLevel()) == true )
					{
						if (item->EquipTo(ch, p->pos) == false )
						{
							v.push_back(item);
						}
					}
					else
					{
						v.push_back(item);
					}
					break;
			}
		}

		if (false == item->OnAfterCreatedItem())
			sys_err("Failed to call ITEM::OnAfterCreatedItem (vnum: %d, id: %d)", item->GetVnum(), item->GetID());

		item->SetSkipSave(false);
	}

	itertype(v) it = v.begin();

	while (it != v.end())
	{
		LPITEM item = *(it++);

		int pos = ch->GetEmptyInventory(item->GetSize());

		if (pos < 0)
		{
			PIXEL_POSITION coord;
			coord.x = ch->GetX();
			coord.y = ch->GetY();

			item->AddToGround(ch->GetMapIndex(), coord);
			item->SetOwnership(ch, 180);
			item->StartDestroyEvent();
		}
		else
			item->AddToCharacter(ch, TItemPos(INVENTORY, pos));
	}

	ch->CheckMaximumPoints();
	ch->PointsPacket();

	ch->SetItemLoaded();
}
da mi un discord sa te ajut acolo imi e mai usor sau da mi add 亗NoNNeX亗#6187
Avatar utilizator
yonr1
Nivel 4

Nivel 4
Mesaje: 677
Membru din: 03 Dec 2013, 08:42
Aprecieri: 297  
Mulţumiri: 30  
  Rezolvări prob.: 14
Medalii

T/C rezolvat cu NoNNeX
Imagine
Afișează semnătura
Închis
Răspunsuri
4
Vizualizări
599
Răspunsuri
2
Vizualizări
370
Răspunsuri
5
Vizualizări
129

Înapoi la “Probleme rezolvate”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 6 vizitatori