Osmanlı2den silah evrim sistemini söktüm hiç bir sorun yokken sadece yansıtma çalışmıyor
PythonPlayerModule.cpp::
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))
{
[HASH=2]#ifdef[/HASH] ENABLE_WEAPON_EVOLUTION_SYSTEM
char itemlink[256 + 12 + 12];
[HASH=2311]#else[/HASH]
char itemlink[256];
[HASH=3]#endif[/HASH]
int len;
bool isAttr = false;
[HASH=2]#ifdef[/HASH] ENABLE_WEAPON_EVOLUTION_SYSTEM
len = snprintf(itemlink, sizeof(itemlink), "item:%x:%x:%x:%x:%x:%d",
pPlayerItem->vnum, pPlayerItem->flags,
pPlayerItem->alSockets[0], pPlayerItem->alSockets[1], pPlayerItem->alSockets[2]);
[HASH=2311]#else[/HASH]
len = snprintf(itemlink, sizeof(itemlink), "item:%x:%x:%x:%x:%x",
pPlayerItem->vnum, pPlayerItem->flags,
pPlayerItem->alSockets[0], pPlayerItem->alSockets[1], pPlayerItem->alSockets[2]);
[HASH=3]#endif[/HASH]
for (int i = 0; i < ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++i)
{
// if (pPlayerItem->aAttr[i].bType != 0) // @fixme009 (this line must be commented)
{
len += snprintf(itemlink + len, sizeof(itemlink) - len, ":%x:%d",
pPlayerItem->aAttr[i].bType, pPlayerItem->aAttr[i].sValue);
isAttr = true;
}
}
[HASH=2]#ifdef[/HASH] ENABLE_WEAPON_EVOLUTION_SYSTEM
std::string evolutionMergeText = ""; char evolutionText[6][10] = { "", "Yaygın ", "Seyrek ", "Nadir ", "Efsane ", "Eşsiz " };
char evoItemPattern1[5][30] = {
" |h|r[%s]|cffffcc33|H%s|h",
" |h|r[%s]|cff33cc33|H%s|h",
" |h|r[%s]|cff3366ff|H%s|h",
" |h|r[%s]|cff9900cc|H%s|h",
" |h|r[%s]|cffcc0000|H%s|h"
};
char evoItemPattern2[5][25] = {
"|cffffcc33|H%s|h[%s]|h|r",
"|cff33cc33|H%s|h[%s]|h|r",
"|cff3366ff|H%s|h[%s]|h|r",
"|cff9900cc|H%s|h[%s]|h|r",
"|cffcc0000|H%s|h[%s]|h|r"
};
char evoItemPattern3[5][30] = {
"|cffffcc33|H%s|h[%s x%d]|h|r",
"|cff33cc33|H%s|h[%s x%d]|h|r",
"|cff3366ff|H%s|h[%s x%d]|h|r",
"|cff9900cc|H%s|h[%s x%d]|h|r",
"|cffcc0000|H%s|h[%s x%d]|h|r"
};
evolutionMergeText += evolutionText[pPlayerItem->evolution];
//evolutionMergeText += pItemData->GetName();
[HASH=3]#endif[/HASH]
if( GetDefaultCodePage() == CP_ARABIC ) {
if (isAttr)
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)
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);
}
PythonChatModule.cpp::
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
if (0 == results[0].compare("item"))
{
if (results.size() < 6)
return Py_BuildValue("s", "");
CItemData * pItemData = NULL;
if (CItemManager::Instance().GetItemDataPointer(htoi(results[1].c_str()), &pItemData))
{
char buf[1024] = { 0 };
[HASH=2]#ifdef[/HASH] ENABLE_WEAPON_EVOLUTION_SYSTEM
char itemlink[256 + 12 + 12];
[HASH=2311]#else[/HASH]
char itemlink[256];
[HASH=3]#endif[/HASH]
int len;
bool isAttr = false;
[HASH=2]#ifdef[/HASH] ENABLE_WEAPON_EVOLUTION_SYSTEM
len = snprintf(itemlink, sizeof(itemlink), "item:%x:%x:%x:%x:%x:%d",
[HASH=2311]#else[/HASH]
len = snprintf(itemlink, sizeof(itemlink), "item:%x:%x:%x:%x:%x",
[HASH=3]#endif[/HASH]
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()),
[HASH=2]#ifdef[/HASH] ENABLE_WEAPON_EVOLUTION_SYSTEM
htoi(results[6].c_str()))
[HASH=3]#endif[/HASH]
;
[HASH=2]#ifdef[/HASH] ENABLE_WEAPON_EVOLUTION_SYSTEM
if (results.size() >= 9)
{
for (int i = 7; i < results.size(); i += 2)
[HASH=2311]#else[/HASH]
if (results.size() >= 8)
{
for (int i = 6; i < results.size(); i += 2)
[HASH=3]#endif[/HASH]
{
len += snprintf(itemlink + len, sizeof(itemlink) - len, ":%x:%d",
htoi(results[i].c_str()),
atoi(results[i+1].c_str()));
isAttr = true;
}
}
[HASH=2]#ifdef[/HASH] ENABLE_WEAPON_EVOLUTION_SYSTEM
std::string evolutionMergeText = ""; char evolutionText[6][10] = { "", "Yaygın ", "Seyrek ", "Nadir ", "Efsane ", "Eşsiz " };
char evoItemPattern1[5][30] = {
" |h|r[%s]|cffffcc33|H%s|h",
" |h|r[%s]|cff33cc33|H%s|h",
" |h|r[%s]|cff3366ff|H%s|h",
" |h|r[%s]|cff9900cc|H%s|h",
" |h|r[%s]|cffcc0000|H%s|h"
};
char evoItemPattern2[5][25] = {
"|cffffcc33|H%s|h[%s]|h|r",
"|cff33cc33|H%s|h[%s]|h|r",
"|cff3366ff|H%s|h[%s]|h|r",
"|cff9900cc|H%s|h[%s]|h|r",
"|cffcc0000|H%s|h[%s]|h|r"
};
char evoItemPattern3[5][30] = {
"|cffffcc33|H%s|h[%s x%d]|h|r",
"|cff33cc33|H%s|h[%s x%d]|h|r",
"|cff3366ff|H%s|h[%s x%d]|h|r",
"|cff9900cc|H%s|h[%s x%d]|h|r",
"|cffcc0000|H%s|h[%s x%d]|h|r"
};
evolutionMergeText += evolutionText[htoi(results[7].c_str())];
//evolutionMergeText += pItemData->GetName();
[HASH=3]#endif[/HASH]
if (isAttr)
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", "");
}
Uitooltip.py::
class HyperlinkItemToolTip(ItemToolTip):
def __init__(self):
ItemToolTip.__init__(self, isPickable=True)
def SetHyperlinkItem(self, tokens):
if app.ENABLE_WEAPON_EVOLUTION_SYSTEM:
minTokenCount = 4 + player.METIN_SOCKET_MAX_NUM
else:
minTokenCount = 3 + player.METIN_SOCKET_MAX_NUM
maxTokenCount = minTokenCount + 4 * 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:6]]
if app.ENABLE_WEAPON_EVOLUTION_SYSTEM:
evolution = int(tokens[7])
rests = tokens[6:]
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()
if app.ENABLE_WEAPON_EVOLUTION_SYSTEM:
self.AddItemData(itemVnum, metinSlot, attrSlot, evolution, 0, 0, player.INVENTORY, -1)
else:
self.AddItemData(itemVnum, metinSlot, attrSlot)
ItemToolTip.OnUpdate(self)