- 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:%d:%d",
- pPlayerItem->vnum, pPlayerItem->flags,
- pPlayerItem->alSockets[0], pPlayerItem->alSockets[1], pPlayerItem->alSockets[2], pPlayerItem->alSockets[3], pPlayerItem->evolution, pPlayerItem->transmutation);
- for (int i = 0; i < ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++i)
- {
- len += snprintf(itemlink + len, sizeof(itemlink) - len, ":%x:%d",
- pPlayerItem->aAttr[i].bType, pPlayerItem->aAttr[i].sValue);
- isAttr = true;
- }
- char szText[1024];
- if (pItemData->GetIndex() == 50300)
- {
- CPythonSkill::SSkillData * c_pSkillData;
- CPythonSkill::Instance().GetSkillData(pPlayerItem->alSockets[0], &c_pSkillData);
- sprintf(szText, "%s %s", c_pSkillData->strName.c_str(), pItemData->GetName());
- }
- else if (pItemData->GetType() == 19)
- {
- CPythonNonPlayer& rkNonPlayer=CPythonNonPlayer::Instance();
- sprintf(szText, "%s %s", rkNonPlayer.GetMonsterName(pPlayerItem->alSockets[0]), pItemData->GetName());
- }
- else
- {
- sprintf(szText, "%s", pItemData->GetName());
- }
- if (pPlayerItem->count > 1)
- if (isAttr)
- snprintf(buf, sizeof(buf), "|cffffc700|H%s|h[%s x%d]|h|r", itemlink, pItemData->GetName(),pPlayerItem->count);
- else
- snprintf(buf, sizeof(buf), "|cfff1e6c0|H%s|h[%s x%d]|h|r", itemlink, pItemData->GetName(),pPlayerItem->count);
- else
- if (isAttr)
- snprintf(buf, sizeof(buf), " |h|r[%s]|cffffc700|H%s|h", szText, itemlink);
- else
- snprintf(buf, sizeof(buf), " |h|r[%s]|cfff1e6c0|H%s|h", szText, itemlink);
- }
- else
- buf[0] = '\0';
- return Py_BuildValue("s", buf);
- }