Such in der questlua_item.cpp nach (Zeile 461 bei mir) :
PHP Code:
int item_copy_and_give_before_remove(lua_State* L)
{
lua_pushboolean(L, 0);
if (!lua_isnumber(L, 1))
return 1;
DWORD vnum = (DWORD)lua_tonumber(L, 1);
CQuestManager& q = CQuestManager::instance();
LPITEM pItem = q.GetCurrentItem();
LPCHARACTER pChar = q.GetCurrentCharacterPtr();
LPITEM pkNewItem = ITEM_MANAGER::instance().CreateItem(vnum, 1, 0, false);
if (pkNewItem)
{
ITEM_MANAGER::CopyAllAttrTo(pItem, pkNewItem);
LogManager::instance().ItemLog(pChar, pkNewItem, "COPY SUCCESS", pkNewItem->GetName());
BYTE bCell = pItem->GetCell();
ITEM_MANAGER::instance().RemoveItem(pItem, "REMOVE (COPY SUCCESS)");
pkNewItem->AddToCharacter(pChar, TItemPos(INVENTORY, bCell));
ITEM_MANAGER::instance().FlushDelayedSave(pkNewItem);
pkNewItem->AttrLog();
// ¼º°ø!
lua_pushboolean(L, 1);
}
return 1;
}
Füg darunter Die beiden Funktionen ein :
PHP Code:
int item_get_attr_type(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();
if (!item)
{
sys_err("cannot get current item");
lua_pushnumber(L, 0);
return 1;
}
if (false == lua_isnumber(L, 1))
{
sys_err("index is not a number");
lua_pushnumber(L, 0);
return 1;
}
int index = lua_tonumber(L, 1);
const TPlayerItemAttribute& attrItem = item->GetAttribute(index);
lua_pushnumber(L, attrItem.bType);
return 1;
}
PHP Code:
int item_get_attr_value(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();
if (!item)
{
sys_err("cannot get current item");
lua_pushnumber(L, 0);
return 1;
}
if (false == lua_isnumber(L, 1))
{
sys_err("index is not a number");
lua_pushnumber(L, 0);
return 1;
}
int index = lua_tonumber(L, 1);
const TPlayerItemAttribute& attrItem = item->GetAttribute(index);
lua_pushnumber(L, attrItem.sValue);
return 1;
}
& nun suchst du nach
luaL_Reg item_functions[] = : und fügst Folgendes ein :
PHP Code:
{ "get_attr_type", item_get_attr_type},
{ "get_attr_value", item_get_attr_value},