Glas der Einsicht problem

11/15/2016 14:37 aden144#1
Guten Tag,
ich hab ein Problem mit dem Glas der Einsicht, eigentlich funktioniert der Glas der Einsicht aber wenn der Item im Chat gezeigt wird. Kann man nicht anklicken(z.B kann man nicht sehen welche Werte das Item hat usw)

Ich hoffe, jemand könnte mir dabei helfen, woran der Fehler liegt.
Danke im Voraus

[Only registered and activated users can see links. Click Here To Register...]
11/19/2016 17:05 aden144#2
Brauche immer noch hilfe
11/24/2016 15:46 aden144#3
Brauche immer noch hilfe, weiß keiner woran es liegen könnte :(((
11/24/2016 16:00 .Onlyx3#4
syserr.txt vom Client nachdem du auf den Namen geklickt hast wäre hilfreich..
11/24/2016 17:59 .Onlyx3#5
Sehe gerade das ich bei mir genau das gleiche Problem habe^^
Bin ebenso für die Lösung dankbar :D
11/24/2016 18:03 aden144#6
Hier den syserr.txt


1124 17:42:44850 :: File "uiToolTip.py", line 2024, in SetHyperlinkItem

1124 17:42:44851 :: File "uiToolTip.py", line 996, in AddItemData

1124 17:42:44851 :: File "uiToolTip.py", line 1820, in __AppendMetinSlotInfo

1124 17:42:44851 :: File "uiToolTip.py", line 1831, in __AppendMetinSlotInfo_IsEmptySlotList

1124 17:42:44852 :: IndexError
1124 17:42:44852 :: :
1124 17:42:44852 :: list index out of range
1124 17:42:44852 ::


Ich hoffe, jemand weiß wie man das fixxt^^
11/24/2016 18:53 .Onlyx3#7
Hab den Fehler bei mir behoben. Im Source und Python. Nutzt du den Source? Wenn ja, ists ne Sache von 2 Minuten.
11/24/2016 19:54 aden144#8
Quote:
Originally Posted by .UnknownUser™ View Post
Hab den Fehler bei mir behoben. Im Source und Python. Nutzt du den Source? Wenn ja, ists ne Sache von 2 Minuten.

Ja, ich benutze den Source. Kannst du mir bitte den Fehler sagen wie ich den Fixxen kann.
11/24/2016 21:59 .Onlyx3#9
Die Funktionen komplett ersetzten:
PythonChatModule.cpp:
Code:
PyObject * chatGetLinkFromHyperlink(PyObject * poSelf, PyObject * poArgs)
{
	char * szHyperlink;
	
	if (!PyTuple_GetString(poArgs, 0, &szHyperlink))
		return Py_BuildException();

	std::string stHyperlink(szHyperlink);
	std::vector<std::string> results;

	split_string(stHyperlink, ":", results, false);

	// item:vnum:flag:socket0:socket1:socket2:socket3:socket4:socket5
	if (0 == results[0].compare("item"))
	{
		if (results.size() < 9)
			return Py_BuildValue("s", "");

		CItemData * pItemData = NULL;

		if (CItemManager::Instance().GetItemDataPointer(htoi(results[1].c_str()), &pItemData))
		{
			char buf[1024] = { 0 };
			char itemlink[256];
			int len;
			bool isAttr = false;

			len = snprintf(itemlink, sizeof(itemlink), "item:%x:%x:%x:%x:%x:%x:%x:%x", 
					htoi(results[1].c_str()),
					htoi(results[2].c_str()),
					htoi(results[3].c_str()),
					htoi(results[4].c_str()),
					htoi(results[5].c_str()),
					htoi(results[6].c_str()),
					htoi(results[7].c_str()),
					htoi(results[8].c_str()));

			if (results.size() >= 11)
			{
				for (int i = 9; i < results.size(); i += 2)
				{
					len += snprintf(itemlink + len, sizeof(itemlink) - len, ":%x:%d", 
							htoi(results[i].c_str()),
							atoi(results[i+1].c_str()));
					isAttr = true;
				}
			}

			if (isAttr)
				//"item:¹øÈ£:Ç÷¡±×:¼ÒÄÏ0:¼ÒÄÏ1:¼ÒÄÏ2"
				snprintf(buf, sizeof(buf), "|cffffc700|H%s|h[%s]|h|r", itemlink, pItemData->GetName());
			else
				snprintf(buf, sizeof(buf), "|cfff1e6c0|H%s|h[%s]|h|r", itemlink, pItemData->GetName());

			return Py_BuildValue("s", buf);
		}
	}

	return Py_BuildValue("s", "");
}
PythonPlayerModule.cpp
Code:
PyObject * playerGetItemLink(PyObject * poSelf, PyObject * poArgs)
{
	TItemPos Cell;

	switch (PyTuple_Size(poArgs))
	{
	case 1:	
		if (!PyTuple_GetInteger(poArgs, 0, &Cell.cell))
			return Py_BuildException();
		break;
	case 2:
		if (!PyTuple_GetByte(poArgs, 0, &Cell.window_type))
			return Py_BuildException();
		if (!PyTuple_GetInteger(poArgs, 1, &Cell.cell))
			return Py_BuildException();
		break;
	default:
		return Py_BuildException();
	}
	const TItemData * pPlayerItem = CPythonPlayer::Instance().GetItemData(Cell);
	CItemData * pItemData = NULL;
	char buf[1024];

	if (pPlayerItem && CItemManager::Instance().GetItemDataPointer(pPlayerItem->vnum, &pItemData))
	{
		char itemlink[256];
		int len;
		bool isAttr = false;

		len = snprintf(itemlink, sizeof(itemlink), "item:%x:%x:%x:%x:%x:%x:%x:%x", 
				pPlayerItem->vnum, pPlayerItem->flags,
				pPlayerItem->alSockets[0], pPlayerItem->alSockets[1], pPlayerItem->alSockets[2] , pPlayerItem->alSockets[3],  pPlayerItem->alSockets[4],  pPlayerItem->alSockets[5]);

		for (int i = 0; i < ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++i)
			if (pPlayerItem->aAttr[i].bType != 0)
			{
				len += snprintf(itemlink + len, sizeof(itemlink) - len, ":%x:%d", 
						pPlayerItem->aAttr[i].bType, pPlayerItem->aAttr[i].sValue);
				isAttr = true;
			}


		if( GetDefaultCodePage() == CP_ARABIC ) {
			if (isAttr)
				//"item:¹øÈ£:Ç÷¡±×:¼ÒÄÏ0:¼ÒÄÏ1:¼ÒÄÏ2"
				snprintf(buf, sizeof(buf), " |h|r[%s]|cffffc700|H%s|h", pItemData->GetName(), itemlink);
			else
				snprintf(buf, sizeof(buf), " |h|r[%s]|cfff1e6c0|H%s|h", pItemData->GetName(), itemlink);
		} else {
			if (isAttr)
				//"item:¹øÈ£:Ç÷¡±×:¼ÒÄÏ0:¼ÒÄÏ1:¼ÒÄÏ2"
				snprintf(buf, sizeof(buf), "|cffffc700|H%s|h[%s]|h|r", itemlink, pItemData->GetName());
			else
				snprintf(buf, sizeof(buf), "|cfff1e6c0|H%s|h[%s]|h|r", itemlink, pItemData->GetName());
		}
	}
	else
		buf[0] = '\0';

	return Py_BuildValue("s", buf);
}
root/uitooltip.py:
Code:
def SetHyperlinkItem(self, tokens):
		minTokenCount = 3 + player.METIN_SOCKET_MAX_NUM
		maxTokenCount = minTokenCount + 2 * player.ATTRIBUTE_SLOT_MAX_NUM
		if tokens and len(tokens) >= minTokenCount and len(tokens) <= maxTokenCount:
			head, vnum, flag = tokens[:3]
			itemVnum = int(vnum, 16)
			metinSlot = [int(metin, 16) for metin in tokens[3:9]]

			rests = tokens[9:]
			if rests:
				attrSlot = []

				rests.reverse()
				while rests:
					key = int(rests.pop(), 16)
					if rests:
						val = int(rests.pop())
						attrSlot.append((key, val))

				attrSlot += [(0, 0)] * (player.ATTRIBUTE_SLOT_MAX_NUM - len(attrSlot))
			else:
				attrSlot = [(0, 0)] * player.ATTRIBUTE_SLOT_MAX_NUM

			self.ClearToolTip()
			self.AddItemData(itemVnum, metinSlot, attrSlot)

			ItemToolTip.OnUpdate(self)
11/24/2016 23:52 aden144#10
Ok danke ich werde es testen