LE
pedido

Shop Points

Por leo420, 24 de ago. de 2012 em Scripts

otserv
tibia
script
8
1.8k
leo420L
24 de agosto de 2012 às 19:51

To com o script do Vodkart, http://www.xtibia.co...-system-points/ e queria um shop tipo !pointshop que venda tal item por X creditos..

 

Tenho um script que acho q vai ajudar quem manja:

 

 

local tab = {

["asgard key"] = {id = 134, count = 1, points = 1000},

["nightmare doll"] = {id = 117, count = 1, points = 5000},

["addon doll"] = {id = 116, count = 1, points = 3000},

["sd"] = {id = 2268, count = 100, points = 100},

["mp"] = {id = 7620, count = 100, points = 10},

["hp"] = {id = 7618, count = 100, points = 10},

["gsp"] = {id = 8472, count = 100, points = 110},

["uhp"] = {id = 8473, count = 100, points = 130},

["smp"] = {id = 7589, count = 100, points = 30},

["shp"] = {id = 7588, count = 100, points = 30},

["gmp"] = {id = 7590, count = 100, points = 60},

["ghp"] = {id = 7591, count = 100, points = 60},

["suprem vocation"] = {id = 142, count = 1, points = 30000},

["medal of honour"] = {id = 5785, count = 1, points = 5000},

["lunar staff"] = {id = 7424, count = 1, points = 10000},

["golden bow"] = {id = 7438, count = 1, points = 10000},

}

 

-- ["nome do item"] = {id = id do item, count = quantidade que vai comprar, points = preço.}

 

local config = {

pz = true,

battle = true,

premium = false

}

 

function onSay(cid, words, param)

if not param or param == "" then

return doPlayerSendTextMessage(cid, 27, "Voce possui "..getPoints(cid).." creditos.")

end

 

if param == 'lista' then

local str = ""

for name,points in pairs(tab) do

str = ("Item: " ..name.. ",\n Preço: " ..points.points.. "")

end

str = str .. ""

doPlayerPopupFYI(cid, str)

return TRUE

end

 

if config.pz == true and getTilePzInfo(getCreaturePosition(cid)) == FALSE then

doPlayerSendTextMessage(cid, 21,"Voce so pode comprar um item em protect zone.")

return TRUE

end

 

if config.premium == true and not isPremium(cid) then

doPlayerSendTextMessage(cid, 21, "Voce so pode comprar um item se for premium.")

return TRUE

end

 

if config.battle == true and getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE then

doPlayerSendTextMessage(cid, 21, "Voce so pode comprar um item sem battle.")

return TRUE

end

 

 

local tab = tab[param]

if tab then

if getPoints(cid) >= tab.points then

doItemSetAttribute(doPlayerAddItem(cid, tab.id, tab.count),"description","Esse item foi comprado por "..getPlayerName(cid)..".")

doPlayerSendTextMessage(cid, 27, "Voce comprou "..tab.count.." "..getItemNameById(tab.id).." por "..tab.points.." creditos, agora voce tem "..getPoints(cid).." creditos.")

doPlayerSendTextMessage(cid, 27, "Voce sera kickado.")

addEvent(addPoints, 100, cid, -tab.points)

end

end

return true

end

 

function getPoints(cid)

return tonumber(db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = " .. getPlayerAccountId(cid) .. ";"):getDataString("premium_points"))

end

 

function addPoints(cid, points)

 

local acc = getPlayerAccountId(cid)

local pp = getPoints(cid)

 

if isCreature(cid) then

doRemoveCreature(cid)

end

 

db.executeQuery("UPDATE `accounts` SET `premium_points` = ".. pp + points .." WHERE `id` = " .. acc .. ";")

end

VodkartV
24 de agosto de 2012 às 21:33

seria isso amigo?

 

function onSay(cid, words, param)
local t = {
["nightmare doll"] = {item ={117,1},points = 90},
["sd"] = {item ={2268,100},points = 10}
}
local param,str = string.lower(param),""
if param == "" then
doPlayerSendTextMessage(cid, 27, "Voce possui "..getPoints(cid).." creditos.") return true
elseif param == 'lista' then
for name, x in pairs(t) do
str = str.."\nItem: "..name.." -> Price: [" ..x.points.."]"
end
doShowTextDialog(cid, 2529, str) return true
end
local buy = t[param]
if not(buy) then
doPlayerSendTextMessage(cid, 22, "desculpe, mas este não existe, digite !comando lista") return true
elseif getPoints(cid) < buy.points then
doPlayerSendTextMessage(cid, 22, "desculpe, mas você precisa de "..buy.points.." points para comprar o "..param) return true
end
doPlayerAddItem(cid, buy.item[1],buy.item[2])
removePoints(cid,buy.points)
doPlayerSendTextMessage(cid, 27, "Parabéns! você comprou "..buy.item[2].." ".. getItemNameById(buy.item[1]) ..".")
return true
end

 

 

local t = {

["nightmare doll"] = {item ={117,1},points = 90},

["sd"] = {item ={2268,100},points = 10}

}

 

["nome do item"] =

 

item = {ID DO ITEM, QUANTIDADE}

 

points = QUANTOS PONTO IRÁ CUSTAR

Editado Agosto 24 por Vodkart

leo420L
25 de agosto de 2012 às 01:01

Vodkart, o script aqui nao funcinou, nao da nenhum mas hora que vc da o comando que eu coloquei !pointshop apareçe: 00:58 Voce possui 100 creditos. nao a lista de itens pra comprar :/

 

<talkaction words="!pointshop;lista" script="shopoint.lua" />

 

e queria ver com vc, se ao invéz de ser point system colocar o nome ( CREDITO ) tipo !creditoshop, /addcredito,100

VodkartV
25 de agosto de 2012 às 09:42

tag

 

<talkaction words="!pointshop;/pointshop" script="shopoint.lua" />

 

você usa assim:

 

!pointshop -- retorna quantos créditos vc tem

 

!pointshop lista -- retorna a lista de items a venda

 

!pointshop NOME DO ITEM

 

exemplo:

 

!pointshop nightmare doll

 

desculpe, mas você precisa de 90 points para comprar o nightmare doll

leo420L
25 de agosto de 2012 às 12:35

funcionou legal, valeu vodkart sempre ajudando as pessoas =)), agora gostaria de saber se no seu sistema todo, até na talk mudar o nome de point system para créditos.. tipo, (Voce Possui 100 Creditos)

VodkartV
25 de agosto de 2012 às 12:39

só trocar nas frases onde tem "points" por "créditos"

leo420L
26 de agosto de 2012 às 22:04

=) Deu certo, Valeu Vodkart gostei muito do sistema..Sempre ajudando os outros.. Abraçoo

 

------------------------------------------------------------------------------------------------------------------------

 

Tem como adicionar um comando pra quando comprar o item vim com a descriçao, Este item foi obtido por "Nome do Player", tentei colocar a função da quest que eu tenho mas bugou:

 

doItemSetAttribute(item1, "description", "Este Item foi obtido por " .. getPlayerName(cid) .. "."),tem como ao comprar o item vim com a descrição?

Editado Agosto 26 por leo420

VodkartV
26 de agosto de 2012 às 22:25
function onSay(cid, words, param)
local t = {
["nightmare doll"] = {item ={117,1},points = 90},
["sd"] = {item ={2268,100},points = 10}
}
local param,str = string.lower(param),""
if param == "" then
doPlayerSendTextMessage(cid, 27, "Voce possui "..getPoints(cid).." creditos.") return true
elseif param == 'lista' then
for name, x in pairs(t) do
str = str.."\nItem: "..name.." -> Price: [" ..x.points.."]"
end
doShowTextDialog(cid, 2529, str) return true
end
local buy = t[param]
if not(buy) then
doPlayerSendTextMessage(cid, 22, "desculpe, mas este não existe, digite !comando lista") return true
elseif getPoints(cid) < buy.points then
doPlayerSendTextMessage(cid, 22, "desculpe, mas você precisa de "..buy.points.." points para comprar o "..param) return true
end
local desc = doPlayerAddItem(cid, buy.item[1],buy.item[2])
doItemSetAttribute(desc,"description","Este Item foi obtido por "..getPlayerName(cid)..".")
removePoints(cid,buy.points)
doPlayerSendTextMessage(cid, 27, "Parabéns! você comprou "..buy.item[2].." ".. getItemNameById(buy.item[1]) ..".")
return true
end