1. PyObject * playerGetItemLink(PyObject * poSelf, PyObject * poArgs)
  2. {
  3. TItemPos Cell;
  4. switch (PyTuple_Size(poArgs))
  5. {
  6. case 1:
  7. if (!PyTuple_GetInteger(poArgs, 0, &Cell.cell))
  8. return Py_BuildException();
  9. break;
  10. case 2:
  11. if (!PyTuple_GetByte(poArgs, 0, &Cell.window_type))
  12. return Py_BuildException();
  13. if (!PyTuple_GetInteger(poArgs, 1, &Cell.cell))
  14. return Py_BuildException();
  15. break;
  16. default:
  17. return Py_BuildException();
  18. }
  19. const TItemData * pPlayerItem = CPythonPlayer::Instance().GetItemData(Cell);
  20. CItemData * pItemData = NULL;
  21. char buf[1024];
  22. if (pPlayerItem && CItemManager::Instance().GetItemDataPointer(pPlayerItem->vnum, &pItemData))
  23. {
  24. char itemlink[256 + 24];
  25. int len;
  26. bool isAttr = false;
  27. len = snprintf(itemlink, sizeof(itemlink), "item:%x:%x:%x:%x:%x:%x:%x:%x:%x",
  28. pPlayerItem->vnum, pPlayerItem->flags,
  29. pPlayerItem->alSockets[0], pPlayerItem->alSockets[1], pPlayerItem->alSockets[2], pPlayerItem->alSockets[3], pPlayerItem->alSockets[4], pPlayerItem->alSockets[5], pPlayerItem->transmutation);
  30. for (int i = 0; i < ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++i)
  31. if (pPlayerItem->aAttr[i].bType != 1000)
  32. {
  33. len += snprintf(itemlink + len, sizeof(itemlink) - len, ":%x:%d",
  34. pPlayerItem->aAttr[i].bType, pPlayerItem->aAttr[i].sValue);
  35. isAttr = true;
  36. }
  37. #ifdef ENABLE_ITEMADET
  38. if (pPlayerItem->count > 1)
  39. if (isAttr)
  40. snprintf(buf, sizeof(buf), "|cffffc700|H%s|h[%s x%d]|h|r", itemlink, pItemData->GetName(),pPlayerItem->count);
  41. else
  42. snprintf(buf, sizeof(buf), "|cfff1e6c0|H%s|h[%s x%d]|h|r", itemlink, pItemData->GetName(),pPlayerItem->count);
  43. else
  44. if (isAttr)
  45. snprintf(buf, sizeof(buf), "|cffffc700|H%s|h[%s]|h|r", itemlink, pItemData->GetName());
  46. else
  47. snprintf(buf, sizeof(buf), "|cfff1e6c0|H%s|h[%s]|h|r", itemlink, pItemData->GetName());
  48. #else
  49. if( GetDefaultCodePage() == CP_ARABIC ) {
  50. if (isAttr)
  51. //"item:번호:플래그:소켓0:소켓1:소켓2"
  52. snprintf(buf, sizeof(buf), " |h|r[%s]|cffffc700|H%s|h", pItemData->GetName(), itemlink);
  53. else
  54. snprintf(buf, sizeof(buf), " |h|r[%s]|cfff1e6c0|H%s|h", pItemData->GetName(), itemlink);
  55. } else {
  56. if (isAttr)
  57. //"item:번호:플래그:소켓0:소켓1:소켓2"
  58. snprintf(buf, sizeof(buf), "|cffffc700|H%s|h[%s]|h|r", itemlink, pItemData->GetName());
  59. else
  60. snprintf(buf, sizeof(buf), "|cfff1e6c0|H%s|h[%s]|h|r", itemlink, pItemData->GetName());
  61. }
  62. #endif
  63. }
  64. else
  65. buf[0] = '\0';
  66. return Py_BuildValue("s", buf);
  67. }