From 917259f2e7ec1dbe3598f3f613bd00be5a691a71 Mon Sep 17 00:00:00 2001 From: faketruth Date: Sat, 8 Sep 2012 21:41:17 +0000 Subject: [PATCH] Core now uses built in item functions ( StringToItem() ) for the /item command git-svn-id: http://mc-server.googlecode.com/svn/trunk@855 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- MCServer/Plugins/Core/item.lua | 45 ++++++---------------------------- MCServer/Plugins/Core/main.lua | 28 --------------------- 2 files changed, 8 insertions(+), 65 deletions(-) diff --git a/MCServer/Plugins/Core/item.lua b/MCServer/Plugins/Core/item.lua index 942fa8ce6..ce80ec7d3 100644 --- a/MCServer/Plugins/Core/item.lua +++ b/MCServer/Plugins/Core/item.lua @@ -4,41 +4,11 @@ function HandleItemCommand( Split, Player ) return true end - local FoundItem = false + local Item = cItem(E_ITEM_EMPTY, 1) + local FoundItem = StringToItem( Split[2], Item ) - local ItemSyntax = Split[2] -- Contains item string with optional metadata - local ItemData = StringSplit( Split[2], ":" ) - - -- Default item values - local ItemID = 0 - local ItemMeta = 0 - local ItemAmount = 1 - - if( #ItemData > 0 ) then - ItemID = ItemData[1] - end - - if( tonumber(ItemID) ~= nil ) then -- Definitely a number - ItemID = tonumber(ItemID) - if( IsValidItem( ItemID ) ) then - FoundItem = true - end - end - - if( FoundItem == false ) then - if ( HAVE_ITEM_NAMES == true ) then - local Item = ItemsTable[ ItemID ] - if( Item ~= nil ) then - ItemID = Item.m_ItemID - ItemMeta = Item.m_ItemHealth - FoundItem = true - end - end - end - - -- Override metadata from item in list, if metadata was given - if( #ItemData > 1 and tonumber( ItemData[2] ) ~= nil ) then -- Metadata is given, and is a number - ItemMeta = tonumber( ItemData[2] ) + if( IsValidItem( Item.m_ItemType ) == false ) then -- StringToItem does not check if item is valid + FoundItem = false end if( FoundItem == false ) then @@ -51,13 +21,14 @@ function HandleItemCommand( Split, Player ) if( ItemAmount == nil or ItemAmount < 1 or ItemAmount > 512 ) then Player:SendMessage( cChatColor.Green .. "Invalid Amount !" ) return true + else + Item.m_ItemCount = ItemAmount end end - local NewItem = cItem( ItemID, ItemAmount, ItemMeta ) - if( Player:GetInventory():AddItem( NewItem ) == true ) then + if( Player:GetInventory():AddItem( Item ) == true ) then Player:SendMessage( cChatColor.Green .. "There you go !" ) - LOG("Gave " .. Player:GetName() .. " " .. ItemAmount .. " times " .. ItemID .. ":" .. ItemMeta) + LOG("Gave " .. Player:GetName() .. " " .. Item.m_ItemCount .. " times " .. Item.m_ItemType .. ":" .. Item.m_ItemDamage) else Player:SendMessage( cChatColor.Green .. "Not enough space in inventory !" ) end diff --git a/MCServer/Plugins/Core/main.lua b/MCServer/Plugins/Core/main.lua index b6599bce7..79c9d6eee 100644 --- a/MCServer/Plugins/Core/main.lua +++ b/MCServer/Plugins/Core/main.lua @@ -7,7 +7,6 @@ SHOW_PLUGIN_NAMES = true -- If true, plugin name will be shown before commands PLUGIN = {} -- Reference to own plugin object BannedPlayersIni = {} WhiteListIni = {} -ItemsTable = {} function Initialize( Plugin ) PLUGIN = Plugin @@ -72,33 +71,6 @@ function Initialize( Plugin ) if ( IniFile:ReadFile() == true ) then SHOW_PLUGIN_NAMES = IniFile:GetValueB("HelpPlugin", "ShowPluginNames", true ) end - - local itemsINI = cIniFile("items.ini") - if ( itemsINI:ReadFile() == true ) then - local KeyID = itemsINI:FindKey('Items') - - LOGINFO("Core: loaded " .. itemsINI:GetNumValues( KeyID ) .. " item names.") - - for i = 0, itemsINI:GetNumValues('Items') do - local ItemName = itemsINI:GetValueName( KeyID, i ) - local ItemSyntax = itemsINI:GetValue(KeyID, i, "0") - - local ItemData = StringSplit(ItemSyntax, ":") -- [1] = ID, [2] = perhaps meta/dmg - if( #ItemData > 0 ) then - local ItemID = tonumber( ItemData[1] ) - if( ItemID > 0 ) then - local ItemMeta = 0 - if( #ItemData > 1 ) then - ItemMeta = tonumber( ItemData[2] ) - end - ItemsTable[ ItemName ] = cItem( ItemID, 1, ItemMeta ) - --LOGINFO("Got item: " .. ItemName .. "-> " .. ItemsTable[ ItemName ].m_ItemID ..":" .. ItemsTable[ ItemName ].m_ItemHealth ) - end - end - end - - HAVE_ITEM_NAMES = true - end -- Load whitelist, and add default values and stuff WhiteListIni = cIniFile( Plugin:GetLocalDirectory() .. "/whitelist.ini" )