l2c_getUserItems() done
This commit is contained in:
parent
3f7769292c
commit
0506593508
@ -5,6 +5,20 @@
|
||||
|
||||
extern class CConfig g_cfg;
|
||||
|
||||
|
||||
void UserInventoryItem::getItemName( char *out, size_t maxCount )
|
||||
{
|
||||
out[0] = 0;
|
||||
char *aname = (char *)malloc( 1024 );
|
||||
if( aname )
|
||||
{
|
||||
L2Data_DB_GetItemNamePicByID( itemID, aname, NULL );
|
||||
strncpy( out, aname, maxCount );
|
||||
free( aname );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
UserInventory::UserInventory()
|
||||
{
|
||||
clear();
|
||||
@ -34,7 +48,7 @@ int UserInventory::addItem( UserInventoryItem& it )
|
||||
int i;
|
||||
for( i=0; i<USERINV_MAX_ITEMS; i++ )
|
||||
{
|
||||
if( item[i].objectID == 0 )
|
||||
if( item[i].isUnused() )
|
||||
{
|
||||
add_idx = i;
|
||||
break;
|
||||
|
@ -1,8 +1,6 @@
|
||||
#ifndef H_USER_INVENTORY
|
||||
#define H_USER_INVENTORY
|
||||
|
||||
#define USERINV_MAX_ITEMS 256
|
||||
|
||||
// ===========================================
|
||||
|
||||
class UserInventoryItem
|
||||
@ -11,6 +9,8 @@ public:
|
||||
UserInventoryItem(): itemID(0), objectID(0), count(0) {}
|
||||
UserInventoryItem( unsigned int ItemID, unsigned int ObjectID, unsigned int Count ):
|
||||
itemID(ItemID), objectID(ObjectID), count(Count) {}
|
||||
bool isUnused() const { return (itemID==0) || (objectID==0); }
|
||||
void getItemName( char *out, size_t maxCount );
|
||||
public:
|
||||
unsigned int itemID;
|
||||
unsigned int objectID;
|
||||
@ -23,21 +23,27 @@ public:
|
||||
class UserInventory
|
||||
{
|
||||
public:
|
||||
static const unsigned int USERINV_MAX_ITEMS = 512;
|
||||
|
||||
UserInventory();
|
||||
~UserInventory();
|
||||
void clear();
|
||||
|
||||
public:
|
||||
//int addItem( unsigned int itemID, unsigned int objectID, unsigned long long int count );
|
||||
int addItem( UserInventoryItem& it );
|
||||
int delItem( unsigned int itemID, unsigned int objectID );
|
||||
//int updateItem( unsigned int itemID, unsigned int objectID, unsigned long long int count );
|
||||
int updateItem( UserInventoryItem& it );
|
||||
|
||||
public:
|
||||
int getItemInfoByItemId( unsigned int itemID, UserInventoryItem& it );
|
||||
|
||||
public:
|
||||
void parse_ItemList( void *l2_game_packet );
|
||||
void parse_InventoryUpdate( void *l2_game_packet );
|
||||
protected:
|
||||
|
||||
public:
|
||||
int itemCount;
|
||||
UserInventoryItem item[USERINV_MAX_ITEMS];
|
||||
};
|
||||
|
@ -45,6 +45,7 @@ void SE_funcs_register( lua_State *L )
|
||||
lua_register( L, "l2c_useItem", l2c_useItem );
|
||||
lua_register( L, "l2c_useItemByObjectId", l2c_useItemByObjectId );
|
||||
lua_register( L, "l2c_getPaperdollItem", l2c_getPaperdollItem );
|
||||
lua_register( L, "l2c_getUserItems", l2c_getUserItems );
|
||||
// Skills
|
||||
lua_register( L, "l2c_useSkill", l2c_useSkill );
|
||||
lua_register( L, "l2c_getSkillLevel", l2c_getSkillLevel );
|
||||
|
@ -43,6 +43,7 @@ int l2c_getItemCount( lua_State *L );
|
||||
int l2c_useItem( lua_State *L );
|
||||
int l2c_useItemByObjectId( lua_State *L );
|
||||
int l2c_getPaperdollItem( lua_State *L );
|
||||
int l2c_getUserItems( lua_State *L );
|
||||
// Skills
|
||||
int l2c_useSkill( lua_State *L );
|
||||
int l2c_getSkillLevel( lua_State *L );
|
||||
|
@ -71,3 +71,48 @@ int l2c_getPaperdollItem( lua_State *L )
|
||||
lua_pushnumber( L, pusr->paperdoll_oid[ slot ] );
|
||||
return 2;
|
||||
}
|
||||
|
||||
|
||||
// table l2c_getUserItems()
|
||||
int l2c_getUserItems( lua_State *L )
|
||||
{
|
||||
if( !g_game_client ) { lua_pushboolean( L, 0 ); return 1; }
|
||||
UserInventory *inv = &(g_game_client->ai.inv);
|
||||
//
|
||||
int tableIndex = 1;
|
||||
lua_createtable( L, 0, 0 );
|
||||
int i = 0;
|
||||
char itemName[255] = {0};
|
||||
for( i=0; i<UserInventory::USERINV_MAX_ITEMS; i++ )
|
||||
{
|
||||
if( inv->item[i].isUnused() ) continue;
|
||||
inv->item[i].getItemName( itemName, sizeof(itemName)-1 );
|
||||
lua_pushnumber( L, tableIndex );
|
||||
lua_createtable( L, 0, 0 );
|
||||
//
|
||||
lua_pushstring( L, "itemId" );
|
||||
lua_pushinteger( L, inv->item[i].itemID );
|
||||
lua_settable( L, -3 );
|
||||
//
|
||||
lua_pushstring( L, "itemName" );
|
||||
lua_pushstring( L, itemName );
|
||||
lua_settable( L, -3 );
|
||||
//
|
||||
lua_pushstring( L, "objectId" );
|
||||
lua_pushinteger( L, inv->item[i].objectID );
|
||||
lua_settable( L, -3 );
|
||||
//
|
||||
lua_pushstring( L, "isEquipped" );
|
||||
lua_pushboolean( L, inv->item[i].isEquipped );
|
||||
lua_settable( L, -3 );
|
||||
//
|
||||
lua_pushstring( L, "count" );
|
||||
lua_pushnumber( L, (lua_Number)inv->item[i].count );
|
||||
lua_settable( L, -3 );
|
||||
//
|
||||
lua_settable( L, -3 );
|
||||
tableIndex++;
|
||||
}
|
||||
//
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user