Basic Store Plugin
#1
Here's the store plugin I've been working on, I finally got the ini file writing to work.

The basics - credits are earned by mining, one credit per block mined, doesn't matter the type. When a method to detect playerkills is added, I will be adding in 100 credits for killing a player and losing 100 credits for being killed. When mobs and monsters are implemented, I will be adding a credit value system to that too Smile

You can buy:
64 torches - 64 credits
wood shovel, axe, pickaxe, sword - 0 credits (new players joining the server automatically get access to basic tools)
stone shovel, axe, pickaxe, sword - 100 credits
iron shovel, axe, pickaxe, sword - 500 credits
gold shovel, axe, pickaxe, sword - 800 credits
diamond shovel, axe, pickaxe, sword - 1000 credits

This is easily expandable to include other items as I've added a fairly easy to expand store api with a function to check and see if I player can afford an item Smile

Filename:Kit.lua
PHP Code:
local KitPlugin = {}
KitPlugin.__index KitPlugin

function KitPlugin:new()
   
local t = {}
   
setmetatable(tKitPlugin)
   
local w Lua__cPlugin:new()
   
tolua.setpeer(wt)
   
w:tolua__set_instance(w)
   return 
w
end

function KitPlugin:Initialize()
    
self:AddCommand("/store"" - tells you what's currently for sale and how many credits you have.""Kit.lua")
    
self:BindCommand("/store"PricesCommand)
    
self:BindCommand("/buywoodkit"BuyWoodKit)
    
self:BindCommand("/buystonekit"BuyStoneKit)
    
self:BindCommand("/buyironkit"BuyIronKit)
    
self:BindCommand("/buygoldkit"BuyGoldKit)
    
self:BindCommand("/buydiamondkit"BuyDiamondKit)
    
self:BindCommand("/buytorches"Buy64Torches)
    
    
PluginManager cRoot:Get():GetPluginManager()
    
PluginManager:AddHookselfcPluginManager.E_PLUGIN_BLOCK_DIG )
    return 
true
end


function KitPlugin:OnBlockDigPacketDataPlayer )
  
local PlayerName Player:GetName()
  
local World cRoot:Get():GetWorld()
  
local X PacketData.m_PosX
  local Y 
PacketData.m_PosY
  local Z 
PacketData.m_PosZ

  
-- status 0 started diggingblock broken
  
if(PacketData.m_Status == 2then
   
   local IniFile 
cIniFile("score.ini")
if ( 
IniFile:ReadFile() == true then
    PlayerScore 
IniFile:GetValueI(PlayerName"score" )
    
NewScore PlayerScore+1
    IniFile
:DeleteKey(PlayerName)
    
IniFile:WriteFile()
    
IniFile:AddKeyName(PlayerName)
    
IniFile:SetValueI(PlayerName"score"NewScore)
    
IniFile:WriteFile()
    
Log(NewScore);
    
end
end
return false
end

function CanAfford(moneyPlayer)
local PlayerName Player:GetName()
local IniFile cIniFile("score.ini")
if ( 
IniFile:ReadFile() == true then
    PlayerScore 
IniFile:GetValueI(PlayerName"score" )
    
Log(PlayerScore);
    if(
PlayerScore>=moneythen
    
if(money>0then
    NewScore 
PlayerScore-money
    Log
("Sold item");
    else
    
NewScore PlayerScore
    Log
("Gave away freebie");
    
end
    IniFile
:DeleteKey(PlayerName)
    
IniFile:WriteFile()
    
IniFile:SetValueI(PlayerName"score"NewScore)
    
IniFile:WriteFile()
    
Log(NewScore);
    
end
return true
else
return 
false
end
end

-- store values --
function 
BuyWoodKit(SplitPlayer)
Server cRoot:Get():GetServer()
if(
CanAfford(0Player)) then
Server
:SendMessage(cChatColor.Red .. "The wood kit has been added to your inventory")
    
Player:GetInventory():AddItemcItem268) )
    
Player:GetInventory():AddItemcItem269) )
    
Player:GetInventory():AddItemcItem270) )
    
Player:GetInventory():AddItemcItem271) )
else
Server:SendMessage(cChatColor.Red .. "You cannot afford the wood kit!")
end
return true
end

function BuyStoneKit(SplitPlayer)
Server cRoot:Get():GetServer()
if(
CanAfford(100Player)) then
Server
:SendMessage(cChatColor.Red .. "The stone kit has been added to your inventory")
    
Player:GetInventory():AddItemcItem272) )
    
Player:GetInventory():AddItemcItem273) )
    
Player:GetInventory():AddItemcItem274) )
    
Player:GetInventory():AddItemcItem275) )
else
Server:SendMessage(cChatColor.Red .. "You cannot afford the iron kit!")
end
return true
end

function BuyIronKit(SplitPlayer)
Server cRoot:Get():GetServer()
if(
CanAfford(500Player)) then
Server
:SendMessage(cChatColor.Red .. "The iron kit has been added to your inventory")
    
Player:GetInventory():AddItemcItem267) )
    
Player:GetInventory():AddItemcItem256) )
    
Player:GetInventory():AddItemcItem257) )
    
Player:GetInventory():AddItemcItem258) )
else
Server:SendMessage(cChatColor.Red .. "You cannot afford the iron kit!")
end
return true
end

function BuyGoldKit(SplitPlayer)
Server cRoot:Get():GetServer()
if(
CanAfford(800Player)) then
Server
:SendMessage(cChatColor.Red .. "The gold kit has been added to your inventory")
    
Player:GetInventory():AddItemcItem283) )
    
Player:GetInventory():AddItemcItem284) )
    
Player:GetInventory():AddItemcItem285) )
    
Player:GetInventory():AddItemcItem286) )
else
Server:SendMessage(cChatColor.Red .. "You cannot afford the gold kit!")
end
return true
end

function BuyDiamondKit(SplitPlayer)
Server cRoot:Get():GetServer()
if(
CanAfford(1000Player)) then
Server
:SendMessage(cChatColor.Red .. "The diamond kit has been added to your inventory")
    
Player:GetInventory():AddItemcItem276) )
    
Player:GetInventory():AddItemcItem277) )
    
Player:GetInventory():AddItemcItem278) )
    
Player:GetInventory():AddItemcItem279) )
else
Server:SendMessage(cChatColor.Red .. "You cannot afford the diamond kit!")
end
return true
end

function Buy64Torches(SplitPlayer)
Server cRoot:Get():GetServer()
if(
CanAfford(64Player)) then
Server
:SendMessage(cChatColor.Red .. "64 torches have been added to your inventory")
    
Player:GetInventory():AddItemcItem5064 ) )
else
Server:SendMessage(cChatColor.Red .. "You cannot afford 64 torches!")
end
return true
end
-- end of store values --

function 
KitCommand1(SplitPlayer)
    
Player:GetInventory():AddItemcItem283) )
    
Player:GetInventory():AddItemcItem284) )
    
Player:GetInventory():AddItemcItem285) )
    
Player:GetInventory():AddItemcItem286) )
    
Player:GetInventory():AddItemcItem314) )
    
Player:GetInventory():AddItemcItem315) )
    
Player:GetInventory():AddItemcItem316) )
    
Player:GetInventory():AddItemcItem317) )
    
Server cRoot:Get():GetServer()
    
Server:SendMessage(cChatColor.Red .. "Get your kit on!")
    return 
true
end

function PricesCommand(SplitPlayer)
local PlayerName Player:GetName()
    
Server cRoot:Get():GetServer()


local IniFile cIniFile("score.ini")
if ( 
IniFile:ReadFile() == true then
    PlayerScore 
IniFile:GetValueI(PlayerName"score" )
    
Server:SendMessage(cChatColor.Green .. PlayerName)
    
Server:SendMessage(cChatColor.Green .. "You have earned "..PlayerScore.." credits.")
    
Server:SendMessage(cChatColor.Green .. "Keep mining to earn more!")
    
Server:SendMessage(cChatColor.Green .. "Buy 64 torches: 64 credits - use /buytorches")
    
Server:SendMessage(cChatColor.Green .. "Wood Kit: 0 credits - use /buywoodkit")
    
Server:SendMessage(cChatColor.Green .. "Stone Kit: 100 credits - use /buystonekit")
    
Server:SendMessage(cChatColor.Green .. "Iron Kit: 500 credits - use /buyironkit")
    
Server:SendMessage(cChatColor.Green .. "Gold Kit: 800 credits - use /buygoldkit")
    
Server:SendMessage(cChatColor.Green .. "Diamond Kit: 1000 credits - use /buydiamondkit")
end
return true
end

Plugin 
KitPlugin:new()
cRoot:Get():GetPluginManager():AddPluginPlugin 

Before I forget, you can access the prices list by typing "/store" into the chat window.

That should be all else you needBig Grin
Reply
Thanks given by:


Messages In This Thread
Basic Store Plugin - by codename_B - 02-28-2011, 12:38 PM
RE: Basic Store Plugin - by Tim - 02-28-2011, 09:14 PM
RE: Basic Store Plugin - by codename_B - 02-28-2011, 10:04 PM
RE: Basic Store Plugin - by Tybor - 03-01-2011, 04:37 AM
RE: Basic Store Plugin - by FakeTruth - 03-01-2011, 05:32 AM
RE: Basic Store Plugin - by codename_B - 03-01-2011, 07:14 AM
RE: Basic Store Plugin - by DrkCodeman - 06-14-2013, 05:17 AM
RE: Basic Store Plugin - by NiLSPACE - 06-14-2013, 05:33 AM
RE: Basic Store Plugin - by xoft - 06-14-2013, 05:34 AM
RE: Basic Store Plugin - by DrkCodeman - 06-14-2013, 05:34 AM
RE: Basic Store Plugin - by NiLSPACE - 06-14-2013, 05:36 AM
RE: Basic Store Plugin - by DrkCodeman - 06-14-2013, 05:42 AM
RE: Basic Store Plugin - by NiLSPACE - 06-14-2013, 05:48 AM
RE: Basic Store Plugin - by xoft - 06-14-2013, 06:31 AM
RE: Basic Store Plugin - by DrkCodeman - 06-14-2013, 06:50 AM



Users browsing this thread: 1 Guest(s)