Jump to content

[RLS]Borrar items desde el inventario.


Shang

Mensajes recomendados

syserror del servidor

 

 

SYSERR: Aug 4 18:56:27 :: ItemLoad: cannot create item by vnum 14390 (name player id 10002142)
SYSERR: Aug 4 18:56:27 :: ItemLoad: cannot create item by vnum 17479 (name player id 10002091)
SYSERR: Aug 4 18:57:35 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)
SYSERR: Aug 4 18:57:35 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click
SYSERR: Aug 4 18:57:38 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)
SYSERR: Aug 4 18:57:38 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click
SYSERR: Aug 4 18:57:43 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)
SYSERR: Aug 4 18:57:43 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click
SYSERR: Aug 4 18:57:52 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)
SYSERR: Aug 4 18:57:52 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click
SYSERR: Aug 4 18:58:56 :: ItemLoad: cannot create item by vnum 17479 (name player id 10002091)
SYSERR: Aug 4 18:58:56 :: ItemLoad: cannot create item by vnum 14390 (name player id 10002142)
SYSERR: Aug 4 19:02:02 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)
SYSERR: Aug 4 19:02:02 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click
SYSERR: Aug 4 19:42:26 :: ItemLoad: cannot create item by vnum 14390 (name player id 10002142)
SYSERR: Aug 4 19:42:26 :: ItemLoad: cannot create item by vnum 17479 (name player id 10002091)
SYSERR: Aug 4 19:43:44 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)
SYSERR: Aug 4 19:43:44 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click
SYSERR: Aug 4 19:43:46 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)
SYSERR: Aug 4 19:43:46 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click
SYSERR: Aug 4 19:43:49 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)
SYSERR: Aug 4 19:43:49 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click
SYSERR: Aug 4 19:43:52 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)
SYSERR: Aug 4 19:43:52 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click
SYSERR: Aug 4 19:44:05 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)
SYSERR: Aug 4 19:44:05 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click
SYSERR: Aug 4 19:44:09 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)
SYSERR: Aug 4 19:44:09 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click
SYSERR: Aug 4 19:44:23 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)
SYSERR: Aug 4 19:44:23 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

 

Enlace para comentar
Compartir en otros sitios

syserror del servidor

 

 

SYSERR: Aug 4 18:56:27 :: ItemLoad: cannot create item by vnum 14390 (name player id 10002142)

SYSERR: Aug 4 18:56:27 :: ItemLoad: cannot create item by vnum 17479 (name player id 10002091)

SYSERR: Aug 4 18:57:35 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)

SYSERR: Aug 4 18:57:35 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 4 18:57:38 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)

SYSERR: Aug 4 18:57:38 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 4 18:57:43 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)

SYSERR: Aug 4 18:57:43 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 4 18:57:52 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)

SYSERR: Aug 4 18:57:52 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 4 18:58:56 :: ItemLoad: cannot create item by vnum 17479 (name player id 10002091)

SYSERR: Aug 4 18:58:56 :: ItemLoad: cannot create item by vnum 14390 (name player id 10002142)

SYSERR: Aug 4 19:02:02 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)

SYSERR: Aug 4 19:02:02 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 4 19:42:26 :: ItemLoad: cannot create item by vnum 14390 (name player id 10002142)

SYSERR: Aug 4 19:42:26 :: ItemLoad: cannot create item by vnum 17479 (name player id 10002091)

SYSERR: Aug 4 19:43:44 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)

SYSERR: Aug 4 19:43:44 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 4 19:43:46 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)

SYSERR: Aug 4 19:43:46 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 4 19:43:49 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)

SYSERR: Aug 4 19:43:49 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 4 19:43:52 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)

SYSERR: Aug 4 19:43:52 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 4 19:44:05 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)

SYSERR: Aug 4 19:44:05 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 4 19:44:09 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)

SYSERR: Aug 4 19:44:09 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 4 19:44:23 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call field `get_attr' (a nil value)

SYSERR: Aug 4 19:44:23 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

 

 

 

Te falta la función item.get_attr, lee mensajes anteriores.

Enlace para comentar
Compartir en otros sitios

que carecen de la función en la fuente correcta ?

 

He utilizado esto y no funciona aquí

Debes iniciar sesión para ver el contenido del enlace en esta publicación.

 

mi archivo questlua_item.cpp

 

#include "stdafx.h"
#include "questmanager.h"
#include "char.h"
#include "item.h"
#include "item_manager.h"
#include "over9refine.h"
#include "log.h"

#undef sys_err
#ifndef __WIN32__
#define sys_err(fmt, args...) quest::CQuestManager::instance().QuestError(__FUNCTION__, __LINE__, fmt, ##args)
#else
#define sys_err(fmt, ...) quest::CQuestManager::instance().QuestError(__FUNCTION__, __LINE__, fmt, __VA_ARGS__)
#endif

namespace quest
{
//
// "item" Lua functions
//

int item_get_cell(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();

if (q.GetCurrentItem())
{
lua_pushnumber(L, q.GetCurrentItem()->GetCell());
}
else
lua_pushnumber(L, 0);
return 1;
}

int item_select_cell(lua_State* L)
{
lua_pushboolean(L, 0);
if (!lua_isnumber(L, 1))
{
return 1;
}
DWORD cell = (DWORD) lua_tonumber(L, 1);

LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
LPITEM item = ch ? ch->GetInventoryItem(cell) : NULL;

if (!item)
{
return 1;
}

CQuestManager::instance().SetCurrentItem(item);
lua_pushboolean(L, 1);

return 1;
}

int item_select(lua_State* L)
{
lua_pushboolean(L, 0);
if (!lua_isnumber(L, 1))
{
return 1;
}
DWORD id = (DWORD) lua_tonumber(L, 1);
LPITEM item = ITEM_MANAGER::instance().Find(id);

if (!item)
{
return 1;
}

CQuestManager::instance().SetCurrentItem(item);
lua_pushboolean(L, 1);

return 1;
}

int item_get_id(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();

if (q.GetCurrentItem())
{
lua_pushnumber(L, q.GetCurrentItem()->GetID());
}
else
lua_pushnumber(L, 0);
return 1;
}

int item_remove(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();
if (item != NULL) {
if (q.GetCurrentCharacterPtr() == item->GetOwner()) {
ITEM_MANAGER::instance().RemoveItem(item);
} else {
sys_err("Tried to remove invalid item %p", get_pointer(item));
}
q.ClearCurrentItem();
}

return 0;
}

int item_remove_stack(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();
if (item != NULL) {
if (q.GetCurrentCharacterPtr() == item->GetOwner()) {
ITEM_MANAGER::instance().RemoveItem(item);
} else {
sys_err("Tried to remove invalid item %p", get_pointer(item));
}
q.ClearCurrentItem();
}

return 0;
}

int item_get_socket(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
if (q.GetCurrentItem() && lua_isnumber(L, 1))
{
int idx = (int) lua_tonumber(L, 1);
if (idx < 0 || idx >= ITEM_SOCKET_MAX_NUM)
lua_pushnumber(L,0);
else
lua_pushnumber(L, q.GetCurrentItem()->GetSocket(idx));
}
else
{
lua_pushnumber(L,0);
}
return 1;
}

int item_set_socket(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
if (q.GetCurrentItem() && lua_isnumber(L,1) && lua_isnumber(L,2))
{
int idx = (int) lua_tonumber(L, 1);
int value = (int) lua_tonumber(L, 2);
if (idx >=0 && idx < ITEM_SOCKET_MAX_NUM)
q.GetCurrentItem()->SetSocket(idx, value);
}
return 0;
}

int item_get_vnum(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (item)
lua_pushnumber(L, item->GetVnum());
else
lua_pushnumber(L, 0);

return 1;
}

int item_has_flag(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (!lua_isnumber(L, 1))
{
sys_err("flag is not a number.");
lua_pushboolean(L, 0);
return 1;
}

if (!item)
{
lua_pushboolean(L, 0);
return 1;
}

long lCheckFlag = (long) lua_tonumber(L, 1);
lua_pushboolean(L, IS_SET(item->GetFlag(), lCheckFlag));

return 1;
}

int item_get_value(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (!item)
{
lua_pushnumber(L, 0);
return 1;
}

if (!lua_isnumber(L, 1))
{
sys_err("index is not a number");
lua_pushnumber(L, 0);
return 1;
}

int index = (int) lua_tonumber(L, 1);

if (index < 0 || index >= ITEM_VALUES_MAX_NUM)
{
sys_err("index(%d) is out of range (0..%d)", index, ITEM_VALUES_MAX_NUM);
lua_pushnumber(L, 0);
}
else
lua_pushnumber(L, item->GetValue(index));

return 1;
}

int item_set_value(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (!item)
{
lua_pushnumber(L, 0);
return 1;
}

if (false == (lua_isnumber(L, 1) && lua_isnumber(L, 2) && lua_isnumber(L, 3)))
{
sys_err("index is not a number");
lua_pushnumber(L, 0);
return 1;
}

item->SetForceAttribute(
lua_tonumber(L, 1), // index
lua_tonumber(L, 2), // apply type
lua_tonumber(L, 3) // apply value
);

return 0;
}

int item_get_name(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (item)
lua_pushstring(L, item->GetName());
else
lua_pushstring(L, "");

return 1;
}

int item_get_size(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (item)
lua_pushnumber(L, item->GetSize());
else
lua_pushnumber(L, 0);

return 1;
}

int item_get_count(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (item)
lua_pushnumber(L, item->GetCount());
else
lua_pushnumber(L, 0);

return 1;
}

int item_get_type(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (item)
lua_pushnumber(L, item->GetType());
else
lua_pushnumber(L, 0);

return 1;
}

int item_get_sub_type(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (item)
lua_pushnumber(L, item->GetSubType());
else
lua_pushnumber(L, 0);

return 1;
}

int item_get_refine_vnum(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (item)
lua_pushnumber(L, item->GetRefinedVnum());
else
lua_pushnumber(L, 0);

return 1;
}

int item_next_refine_vnum(lua_State* L)
{
DWORD vnum = 0;
if (lua_isnumber(L, 1))
vnum = (DWORD) lua_tonumber(L, 1);

TItemTable* pTable = ITEM_MANAGER::instance().GetTable(vnum);
if (pTable)
{
lua_pushnumber(L, pTable->dwRefinedVnum);
}
else
{
sys_err("Cannot find item table of vnum %u", vnum);
lua_pushnumber(L, 0);
}
return 1;
}

int item_get_level(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (item)
lua_pushnumber(L, item->GetRefineLevel());
else
lua_pushnumber(L, 0);

return 1;
}

int item_can_over9refine(lua_State* L)
{
LPITEM item = CQuestManager::instance().GetCurrentItem();

if ( item == NULL ) return 0;

lua_pushnumber(L, COver9RefineManager::instance().canOver9Refine(item->GetVnum()));

return 1;
}

int item_change_to_over9(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
LPITEM item = CQuestManager::instance().GetCurrentItem();

if ( ch == NULL || item == NULL ) return 0;

lua_pushboolean(L, COver9RefineManager::instance().Change9ToOver9(ch, item));

return 1;
}

int item_over9refine(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
LPITEM item = CQuestManager::instance().GetCurrentItem();

if ( ch == NULL || item == NULL ) return 0;

lua_pushboolean(L, COver9RefineManager::instance().Over9Refine(ch, item));

return 1;
}

int item_get_over9_material_vnum(lua_State* L)
{
if ( lua_isnumber(L, 1) == true )
{
lua_pushnumber(L, COver9RefineManager::instance().GetMaterialVnum((DWORD)lua_tonumber(L, 1)));
return 1;
}

return 0;
}

int item_get_level_limit (lua_State* L)
{
CQuestManager& q = CQuestManager::instance();

if (q.GetCurrentItem())
{
if (q.GetCurrentItem()->GetType() != ITEM_WEAPON && q.GetCurrentItem()->GetType() != ITEM_ARMOR)
{
return 0;
}
lua_pushnumber(L, q.GetCurrentItem() -> GetLevelLimit());
return 1;
}
return 0;
}

int item_start_realtime_expire(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM pItem = q.GetCurrentItem();

if (pItem)
{
pItem->StartRealTimeExpireEvent();
return 1;
}

return 0;
}

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;
}

int item_get_attr(lua_State* L)
{
LPITEM item = CQuestManager::instance().GetCurrentItem();

if(!lua_isnumber(L,1) || !item)
{
return 0;
}

int attr_index = lua_tonumber(L,1);

if(attr_index < 0 || attr_index > 6)
{
return 0;
}

TPlayerItemAttribute attr = item->GetAttribute(attr_index);
lua_pushnumber(L,attr.bType);
lua_pushnumber(L,attr.sValue);
return 2;
}

int item_set_attr(lua_State* L)
{
LPITEM item = CQuestManager::instance().GetCurrentItem();

if (!lua_isnumber(L,1)||!lua_isnumber(L,2)||!lua_isnumber(L,3)||!item)
{
lua_pushnumber(L,0);
return 1;
}

int attr_index = lua_tonumber(L,1);
if (attr_index <0 || attr_index > 6)
{
lua_pushnumber(L,0);
return 1;
}

item->SetForceAttribute(attr_index,lua_tonumber(L,2),lua_tonumber(L,3));
lua_pushnumber(L,1);
return 1;
}

void RegisterITEMFunctionTable()
{

luaL_reg item_functions[] =
{
{ "get_id", item_get_id },
{ "get_cell", item_get_cell },
{ "select", item_select },
{ "select_cell", item_select_cell },
{ "remove", item_remove },
{ "remove_stack", item_remove_stack },
{ "get_socket", item_get_socket },
{ "set_socket", item_set_socket },
{ "get_vnum", item_get_vnum },
{ "has_flag", item_has_flag },
{ "get_value", item_get_value },
{ "set_value", item_set_value },
{ "get_name", item_get_name },
{ "get_size", item_get_size },
{ "get_count", item_get_count },
{ "get_type", item_get_type },
{ "get_sub_type", item_get_sub_type },
{ "get_refine_vnum", item_get_refine_vnum },
{ "get_level", item_get_level },
{ "next_refine_vnum", item_next_refine_vnum },
{ "can_over9refine", item_can_over9refine },
{ "change_to_over9", item_change_to_over9 },
{ "over9refine", item_over9refine },
{ "get_over9_material_vnum", item_get_over9_material_vnum },
{ "get_level_limit", item_get_level_limit },
{ "start_realtime_expire", item_start_realtime_expire },
{ "copy_and_give_before_remove", item_copy_and_give_before_remove},

{ NULL, NULL }
};
CQuestManager::instance().AddLuaFunctionTable("item", item_functions);
}
}

 

Puedes echar un vistazo?

Enlace para comentar
Compartir en otros sitios

Me las arreglé para corregir el error anterior ahora tienen otra

 

 

SYSERR: Aug 4 22:51:23 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to index a number value
SYSERR: Aug 4 22:51:23 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start letter
SYSERR: Aug 4 22:51:27 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to index a number value
SYSERR: Aug 4 22:51:27 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start letter
SYSERR: Aug 4 22:51:34 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to index a number value
SYSERR: Aug 4 22:51:34 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start letter
SYSERR: Aug 4 22:51:38 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to index a number value
SYSERR: Aug 4 22:51:38 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start letter
SYSERR: Aug 4 22:51:43 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to index a number value
SYSERR: Aug 4 22:51:43 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start letter

 

Enlace para comentar
Compartir en otros sitios

Pues adaptáis la quest a la función que posteó Dragonslayer.

 

no pueden adaptarse para mí?

 

edited

 

Me las arreglé para corregir la anterior, pero ahora tengo otra

 

 

SYSERR: Aug 5 12:19:50 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call global `item_get_attr' (a nil value)

SYSERR: Aug 5 12:19:50 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 5 12:19:53 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call global `item_get_attr' (a nil value)

SYSERR: Aug 5 12:19:53 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 5 12:19:56 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call global `item_get_attr' (a nil value)

SYSERR: Aug 5 12:19:56 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 5 12:20:03 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call global `item_get_attr' (a nil value)

SYSERR: Aug 5 12:20:03 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 5 12:20:06 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call global `item_get_attr' (a nil value)

SYSERR: Aug 5 12:20:06 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 5 12:22:48 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call global `item_get_attr' (a nil value)

SYSERR: Aug 5 12:22:48 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

SYSERR: Aug 5 12:23:27 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to call global `item_get_attr' (a nil value)

SYSERR: Aug 5 12:23:27 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click

 

 

Ya adapté la búsqueda, por mi parte pensar

Enlace para comentar
Compartir en otros sitios

 

 

 

           { "get_attr",         item_get_attr },

            { "set_attr",         item_set_attr },

 

-_-

 

 

Tengo
mi archivo

 

Puedes echar un vistazo?

 

 

#include "stdafx.h"
#include "stdafx.h"
#include "questmanager.h"
#include "char.h"
#include "item.h"
#include "item_manager.h"
#include "over9refine.h"
#include "log.h"

#undef sys_err
#ifndef __WIN32__
#define sys_err(fmt, args...) quest::CQuestManager::instance().QuestError(__FUNCTION__, __LINE__, fmt, ##args)
#else
#define sys_err(fmt, ...) quest::CQuestManager::instance().QuestError(__FUNCTION__, __LINE__, fmt, __VA_ARGS__)
#endif

namespace quest
{
//
// "item" Lua functions
//

int item_get_cell(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();

if (q.GetCurrentItem())
{
lua_pushnumber(L, q.GetCurrentItem()->GetCell());
}
else
lua_pushnumber(L, 0);
return 1;
}

int item_select_cell(lua_State* L)
{
lua_pushboolean(L, 0);
if (!lua_isnumber(L, 1))
{
return 1;
}
DWORD cell = (DWORD) lua_tonumber(L, 1);

LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
LPITEM item = ch ? ch->GetInventoryItem(cell) : NULL;

if (!item)
{
return 1;
}

CQuestManager::instance().SetCurrentItem(item);
lua_pushboolean(L, 1);

return 1;
}

int item_select(lua_State* L)
{
lua_pushboolean(L, 0);
if (!lua_isnumber(L, 1))
{
return 1;
}
DWORD id = (DWORD) lua_tonumber(L, 1);
LPITEM item = ITEM_MANAGER::instance().Find(id);

if (!item)
{
return 1;
}

CQuestManager::instance().SetCurrentItem(item);
lua_pushboolean(L, 1);

return 1;
}

int item_get_id(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();

if (q.GetCurrentItem())
{
lua_pushnumber(L, q.GetCurrentItem()->GetID());
}
else
lua_pushnumber(L, 0);
return 1;
}

int item_remove(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();
if (item != NULL) {
if (q.GetCurrentCharacterPtr() == item->GetOwner()) {
ITEM_MANAGER::instance().RemoveItem(item);
} else {
sys_err("Tried to remove invalid item %p", get_pointer(item));
}
q.ClearCurrentItem();
}

return 0;
}

int item_remove_stack(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();
if (item != NULL) {
if (q.GetCurrentCharacterPtr() == item->GetOwner()) {
ITEM_MANAGER::instance().RemoveItem(item);
} else {
sys_err("Tried to remove invalid item %p", get_pointer(item));
}
q.ClearCurrentItem();
}

return 0;
}

int item_get_socket(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
if (q.GetCurrentItem() && lua_isnumber(L, 1))
{
int idx = (int) lua_tonumber(L, 1);
if (idx < 0 || idx >= ITEM_SOCKET_MAX_NUM)
lua_pushnumber(L,0);
else
lua_pushnumber(L, q.GetCurrentItem()->GetSocket(idx));
}
else
{
lua_pushnumber(L,0);
}
return 1;
}

int item_set_socket(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
if (q.GetCurrentItem() && lua_isnumber(L,1) && lua_isnumber(L,2))
{
int idx = (int) lua_tonumber(L, 1);
int value = (int) lua_tonumber(L, 2);
if (idx >=0 && idx < ITEM_SOCKET_MAX_NUM)
q.GetCurrentItem()->SetSocket(idx, value);
}
return 0;
}

int item_get_vnum(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (item)
lua_pushnumber(L, item->GetVnum());
else
lua_pushnumber(L, 0);

return 1;
}

int item_has_flag(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (!lua_isnumber(L, 1))
{
sys_err("flag is not a number.");
lua_pushboolean(L, 0);
return 1;
}

if (!item)
{
lua_pushboolean(L, 0);
return 1;
}

long lCheckFlag = (long) lua_tonumber(L, 1);
lua_pushboolean(L, IS_SET(item->GetFlag(), lCheckFlag));

return 1;
}

int item_get_value(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (!item)
{
lua_pushnumber(L, 0);
return 1;
}

if (!lua_isnumber(L, 1))
{
sys_err("index is not a number");
lua_pushnumber(L, 0);
return 1;
}

int index = (int) lua_tonumber(L, 1);

if (index < 0 || index >= ITEM_VALUES_MAX_NUM)
{
sys_err("index(%d) is out of range (0..%d)", index, ITEM_VALUES_MAX_NUM);
lua_pushnumber(L, 0);
}
else
lua_pushnumber(L, item->GetValue(index));

return 1;
}

int item_set_value(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (!item)
{
lua_pushnumber(L, 0);
return 1;
}

if (false == (lua_isnumber(L, 1) && lua_isnumber(L, 2) && lua_isnumber(L, 3)))
{
sys_err("index is not a number");
lua_pushnumber(L, 0);
return 1;
}

item->SetForceAttribute(
lua_tonumber(L, 1), // index
lua_tonumber(L, 2), // apply type
lua_tonumber(L, 3) // apply value
);

return 0;
}

int item_get_name(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (item)
lua_pushstring(L, item->GetName());
else
lua_pushstring(L, "");

return 1;
}

int item_get_size(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (item)
lua_pushnumber(L, item->GetSize());
else
lua_pushnumber(L, 0);

return 1;
}

int item_get_count(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (item)
lua_pushnumber(L, item->GetCount());
else
lua_pushnumber(L, 0);

return 1;
}

int item_get_type(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (item)
lua_pushnumber(L, item->GetType());
else
lua_pushnumber(L, 0);

return 1;
}

int item_get_sub_type(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (item)
lua_pushnumber(L, item->GetSubType());
else
lua_pushnumber(L, 0);

return 1;
}

int item_get_refine_vnum(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (item)
lua_pushnumber(L, item->GetRefinedVnum());
else
lua_pushnumber(L, 0);

return 1;
}

int item_next_refine_vnum(lua_State* L)
{
DWORD vnum = 0;
if (lua_isnumber(L, 1))
vnum = (DWORD) lua_tonumber(L, 1);

TItemTable* pTable = ITEM_MANAGER::instance().GetTable(vnum);
if (pTable)
{
lua_pushnumber(L, pTable->dwRefinedVnum);
}
else
{
sys_err("Cannot find item table of vnum %u", vnum);
lua_pushnumber(L, 0);
}
return 1;
}

int item_get_level(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM item = q.GetCurrentItem();

if (item)
lua_pushnumber(L, item->GetRefineLevel());
else
lua_pushnumber(L, 0);

return 1;
}

int item_can_over9refine(lua_State* L)
{
LPITEM item = CQuestManager::instance().GetCurrentItem();

if ( item == NULL ) return 0;

lua_pushnumber(L, COver9RefineManager::instance().canOver9Refine(item->GetVnum()));

return 1;
}

int item_change_to_over9(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
LPITEM item = CQuestManager::instance().GetCurrentItem();

if ( ch == NULL || item == NULL ) return 0;

lua_pushboolean(L, COver9RefineManager::instance().Change9ToOver9(ch, item));

return 1;
}

int item_over9refine(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
LPITEM item = CQuestManager::instance().GetCurrentItem();

if ( ch == NULL || item == NULL ) return 0;

lua_pushboolean(L, COver9RefineManager::instance().Over9Refine(ch, item));

return 1;
}

int item_get_over9_material_vnum(lua_State* L)
{
if ( lua_isnumber(L, 1) == true )
{
lua_pushnumber(L, COver9RefineManager::instance().GetMaterialVnum((DWORD)lua_tonumber(L, 1)));
return 1;
}

return 0;
}

int item_get_level_limit (lua_State* L)
{
CQuestManager& q = CQuestManager::instance();

if (q.GetCurrentItem())
{
if (q.GetCurrentItem()->GetType() != ITEM_WEAPON && q.GetCurrentItem()->GetType() != ITEM_ARMOR)
{
return 0;
}
lua_pushnumber(L, q.GetCurrentItem() -> GetLevelLimit());
return 1;
}
return 0;
}

int item_start_realtime_expire(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPITEM pItem = q.GetCurrentItem();

if (pItem)
{
pItem->StartRealTimeExpireEvent();
return 1;
}

return 0;
}

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;
}

int item_get_attr(lua_State* L)
{
LPITEM item = CQuestManager::instance().GetCurrentItem();

if(!lua_isnumber(L,1) || !item)
{
return 0;
}

int bonus = lua_tonumber(L,1);

if(bonus < 0 || bonus > 6)
{
return 0;
}

TPlayerItemAttribute attr = item->GetAttribute(bonus);
lua_pushnumber(L,attr.bType);
lua_pushnumber(L,attr.sValue);
return 2;
}

int item_set_attr(lua_State* L)
{
LPITEM item = CQuestManager::instance().GetCurrentItem();

if (!lua_isnumber(L,1)||!lua_isnumber(L,2)||!lua_isnumber(L,3)||!item)
{
lua_pushnumber(L,0);
return 1;
}

int bonus = lua_tonumber(L,1);
if (bonus <0 || bonus > 6)
{
lua_pushnumber(L,0);
return 1;
}

item->SetForceAttribute(bonus,lua_tonumber(L,2),lua_tonumber(L,3));
lua_pushnumber(L,1);
return 1;
}

void RegisterITEMFunctionTable()
{

luaL_reg item_functions[] =
{
{ "get_id", item_get_id },
{ "get_cell", item_get_cell },
{ "select", item_select },
{ "select_cell", item_select_cell },
{ "remove", item_remove },
{ "remove_stack", item_remove_stack },
{ "get_attr", item_get_attr },
{ "set_attr", item_set_attr },
{ "get_socket", item_get_socket },
{ "set_socket", item_set_socket },
{ "get_vnum", item_get_vnum },
{ "has_flag", item_has_flag },
{ "get_value", item_get_value },
{ "set_value", item_set_value },
{ "get_name", item_get_name },
{ "get_size", item_get_size },
{ "get_count", item_get_count },
{ "get_type", item_get_type },
{ "get_sub_type", item_get_sub_type },
{ "get_refine_vnum", item_get_refine_vnum },
{ "get_level", item_get_level },
{ "next_refine_vnum", item_next_refine_vnum },
{ "can_over9refine", item_can_over9refine },
{ "change_to_over9", item_change_to_over9 },
{ "over9refine", item_over9refine },
{ "get_over9_material_vnum", item_get_over9_material_vnum },
{ "get_level_limit", item_get_level_limit },
{ "start_realtime_expire", item_start_realtime_expire },
{ "copy_and_give_before_remove", item_copy_and_give_before_remove},

{ NULL, NULL }
};
CQuestManager::instance().AddLuaFunctionTable("item", item_functions);
}
}

 

 

edited

 

conseguido corregir la anterior
otro error

 

SYSERR: Aug  6 15:03:41 :: RunState: LUA_ERROR: locale/germany/quest/object/state/borrar_items:3: attempt to index a number value

SYSERR: Aug  6 15:03:41 :: WriteRunningStateToSyserr: LUA_ERROR: quest borrar_items.start click
Enlace para comentar
Compartir en otros sitios

  • 2 weeks later...
  • 2 weeks later...
  • 2 months later...

Unirse a la conversación

Puedes publicar ahora y registrarte más tarde. Si tienes una cuenta, regístrate para publicar con su cuenta.

Guest
Responder a este tema...

×   Has pegado contenido con formato .   Eliminar formato

  Only 75 emoji are allowed.

×   Tu enlace se ha incorporado automáticamente.   Mostrar un enlace en su lugar

×   Se ha restaurado el contenido anterior. .   Borrar editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recientemente navegando por este tema   0 miembros

    • No hay usuarios registrados visitando esta página.
×
×
  • Crear nuevo...