• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

NPC that sells premium days / items for Premium Points?

Status
Not open for further replies.

Loney

#!
Senator
Premium User
Joined
Jul 23, 2012
Messages
2,044
Solutions
31
Reaction score
243
Location
México
I really need a NPC that you say: 'trade' and he shows you a window with the item list in sell, and if you buy it he removes x points, also if you type 'points' you can look how much points do you have.. ?

Thanks a lot.
 
add in lib/function

Lua:
function getAccountPoints(cid)
local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'')
return res:getDataInt("premium_points") < 0 and 0 or res:getDataInt("premium_points")
end

function doAccountRemovePoints(cid, count)
        return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getAccountPoints(cid) - count .."' WHERE `name` ='"..getPlayerAccount(cid).."'")
end

Npc:

Lua:
local keywordHandler = KeywordHandler:new() 
local npcHandler = NpcHandler:new(keywordHandler) 
NpcSystem.parseParameters(npcHandler) 
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end 
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end 
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end 
function onThink() npcHandler:onThink() end 
function creatureSayCallback(cid, type, msg) 
if(not npcHandler:isFocused(cid)) then 
return false 
end 
local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
local shopWindow = {}
local t = {
      [2195] = 1,
      [2493] = 25,
      [2361] = 30,
      [8851] = 20,
      [8925] = 30,
      [2640] = 50,
      [2494] = 100,
      [9932] = 50,
      [2472] = 70,
      [8931] = 100
      }
local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks)
    if  t[item] and getAccountPoints(cid) < t[item] then
          selfSay("You need "..t[item].." points to buy this item.", cid)
             else
          doAccountRemovePoints(cid, t[item])
        doPlayerAddItem(cid, item)
        selfSay("Here your item!", cid)
       end
    return true
end
if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then
            for var, ret in pairs(t) do
                    table.insert(shopWindow, {id = var, subType = 0, buy = ret, sell = 0, name = getItemNameById(var)})
                end
            openShopWindow(cid, shopWindow, onBuy, onSell)
        end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) 
npcHandler:addModule(FocusModule:new())


[2640] = 50,

[ITEM ID] = POINTS NEED
 
Code:
function getAccountPoints(cid)
   local res = db.getResult("SELECT `honor` FROM `players` WHERE `id` = " .. getPlayerGUID(cid))
   return res:getDataInt("honor") < 0 and 0 or res:getDataInt("honor")
end

function doAccountRemovePoints(cid, count)
   return db.executeQuery("UPDATE `players` SET `honor` = " .. getAccountPoints(cid) - count .. " WHERE `id` = " .. getPlayerGUID(cid))
end
 
Status
Not open for further replies.
Back
Top