Jump to content

Recommended Posts

Ola galerinha do xtibiana.

Vocês lembram do shopping system beta?

Bem o shopping system beta foi um sistema criado por min a um tempinho.

O link da versão beta é:

http://www.xtibia.co...demo-by-caotic/

Os players podiam vender e comprar itens de forma rápida e pratica só que na versão demo ele tinha limitações então resolvi fazer a versão 1.0 com mais funções.

Ele funciona da seguinte maneira:

O player vende seu item no shopping depois outro player resolve ver o shopping e acaba comprando o item.

Quando o player vendedor estiver online ele recebera a mensagem dizendo que o seu item foi vendido e ele recebera o money da compra.

 

Na versão 1.0 do shopping system foi adicionado:

 

 

 

Lista dos itens no shopping ordenada pelo preço dos itens totalmente funcional e sem bugs.(Colocado)
Limitação que apenas pode ser colocado 1 item com o mesmo id(Limitação RETIRADA)
Frases de efeito(Colocado)
Varios bugs retirados(Retirado)

 

 

 

Vamos a instalação.

Primeiro execute estes comandos na sua database:

 

CREATE TABLE "shop" (
"item" INT NOT NULL,
"price" INT NOT NULL,
"players" INT NOT NULL
);
ALTER TABLE `players` ADD `shop` INT(15) NOT NULL DEFAULT 0

 

Agora va em lib e crie um arquivo lua chamado shop e coloque isto:

 

function doPlayerAddItemInShop(cid, itemid, price)
db.executeQuery("INSERT INTO `shop` VALUES (".. itemid ..", ".. price ..", ".. getPlayerGUID(cid) ..")")
return true
end

function getItemPriceInShop(itemid)
local shop = db.getResult("SELECT * FROM `shop` WHERE `item` = ".. itemid ..";")
return shop:getDataInt("price")
end

function getItemPlayerInShop(itemid)
local shop = db.getResult("SELECT * FROM `shop` WHERE `item` = ".. itemid ..";")
return shop:getDataInt("players")
end
function getExistItemInShop(itemid)
local shop = db.getResult("SELECT * FROM `shop` WHERE `item` = ".. itemid ..";")
if shop:getID() ~= -1 then
return true
end
return nil
end

function getExistItemPlayerInShop(player, itemid)
local shop = db.getResult("SELECT * FROM `shop` WHERE `players` = ".. player .." and `item` = ".. itemid ..";")
if shop:getID() ~= -1 then
return true
end
return nil
end

function doPlayerBuyItemInShop(cid, itemid, player)
doPlayerAddItem(cid, itemid)
doPlayerRemoveMoney(cid, getItemPriceInShop(itemid))
db.executeQuery("UPDATE `players` SET `shop` = "..getItemPriceInShop(itemid).." WHERE `id` = "..getItemPlayerInShop(itemid))
db.executeQuery("DELETE FROM `shop` WHERE `players` = ".. player .." and `item` = ".. itemid ..";")
end

function getMoneyGainInShop(cid)
local money = db.getResult("SELECT `shop` FROM `players` WHERE `id` = "..getPlayerGUID(cid))
return money:getDataInt("shop")
end

function setMoneyGainInShop(cid, money)
db.executeQuery("UPDATE `players` SET `shop` = "..money.." WHERE `id` = "..getPlayerGUID(cid))
end

function doShowListShop(cid)
local item = db.getResult("SELECT * FROM `shop` WHERE `item` ORDER BY `price`")
str = "Itens a venda no shopping:\n\n"
if item:getID() == -1 then
doShowTextDialog(cid, 1387, "Não ha itens disponiveis no shopping\n Não existe itens no shopping!")
return true
end
while true do
local list = item:getDataInt("item")
local players = item:getDataInt("players")
local price = item:getDataInt("price")
local shops = "Itens em Shopping"
local list = string.upper(getItemNameById(list))
local players = getPlayerNameByGUID(players)
str = str .. list .. " -("..players..")- Preço ("..price..")]\n\n"
if not item:next() then
doShowTextDialog(cid, 1397, str)
break
end
end
end

 

Agora vá em talkactions/script e crie um arquivo lua chamado list e coloque este codigo:

 

function onSay(cid, words, param, channel)
doShowListShop(cid)
return true
end

 

Agora vá em talkactions denovo crie um arquivo lua chamado de shop e coloque isto:

 

function onSay(cid, words, param, channel)
if param == " " or param == "" or not param then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o id do item")
end
local t = string.explode(param, ",")
if not t[1] then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o id do item")
end
if not t[2] then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o preço do item")
end
if(isNumeric(t[1])) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o nome do item")
end
if not (isNumeric(t[2])) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque O PREÇO DO ITEM")
end
if not getItemIdByName(t[1], false) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este item "..t[1].." não existe")
end
local item = getItemIdByName(t[1])
local price = t[2]
if getPlayerItemCount(cid, item) < 1 then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem "..t[1].."")
end
if getExistItemPlayerInShop(getPlayerGUID(cid), item) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já pos este item no shop")
end
doPlayerRemoveItem(cid, item, 1)
doPlayerAddItemInShop(cid, item, price)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você colocou no shopping o seu item "..t[1].."")
return true
end

 

Agora continue em talkactions e crie um arquivo lua chamado de comprar e coloque isto:

 

function onSay(cid, words, param, channel)
if param == " " or param == "" or not param or isNumeric(param) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o nome do item dizendo /compra(nome do item,nome do player)")
end
local t = string.explode(param, ",")
if not getItemIdByName(t[1], false) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este item "..t[1].." não existe")
end
local itemid = getItemIdByName(t[1])
local player =  getPlayerGUIDByName(t[2])
if not getExistItemInShop(itemid) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este item não existe no shopping")
end
if t[2] == " " or t[2] == "" or isNumeric(t[2]) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o nome do vendendor dizendo /compra(nome do item,nome do player)")
end
if not doPlayerRemoveMoney(cid, getItemPriceInShop(itemid)) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem "..getItemPriceInShop(itemid).." para comprar "..t[1].." do shopping")
end
if not player then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não existe nenhum item com o nome deste player.")
end
doPlayerBuyItemInShop(cid, itemid, player)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabens você comprou "..t[1].."")
return true
end

 

Agora coloque estas tags em talkactions.xml:

 

 

 

<talkaction log="yes" words="/shop" event="script" value="shop.lua"/>
<talkaction log="yes" words="/compra" event="script" value="comprar.lua"/>
<talkaction log="yes" words="/list" event="script" value="list.lua"/>

 

 

 

Agora vá em creaturescripts/scripts e crie um arquivo lua chamado de shop:

 

function onThink(cid, interval)
if getMoneyGainInShop(cid) > 0 then
doPlayerAddMoney(cid, getMoneyGainInShop(cid))
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Seu itens foi vendidos você recebeu "..getMoneyGainInShop(cid).." money")
setMoneyGainInShop(cid, 0)
return true
end
return true
end

 

Registre o evento colocando em login.lua de creaturescripts e coloque isto antes do ultimo return:

registerCreatureEvent(cid, "shop")

Agora vá em creaturescrips.xml e coloque esta tag:

 

 

 

<event type="think" name="shop" event="script" value="shop.lua"/>

 

 

 

E prontinho sistema instalado

shop1n.png

 

shopl.png

 

 

 

 

 

Comandos

/shop(nome do item,preço) --- Coloque o item no shop

/compra(nome do item,nome do vendendor) --- Compra um item do shop

/list --- Monstra a lista dos itens ordenadas por preço a venda do shopping

Link to comment
Share on other sites

Caotic Gostei Muito do seu sistema de Shop, pena que eu nao poderei testar ainda pq meu pc esta queimado, mais eu irei testar assim que poder

Obrigado Por compartilhar conosco seu sistema de shop. em breve eu compartilharei o meu sistema de TM (assim que meu pc voltar)

REP+ Caotic (Assim que desbloquear aki =D)

Link to comment
Share on other sites

  • 10 years later...

esta dando esse erro quando tento adicionar um item no shop

 

[Error - TalkAction Interface]
2023-01-23 05:18:10 -  data/talkactions/scripts/shop.lua:onSay
2023-01-23 05:18:10 -  Description:
2023-01-23 05:18:10 -  data/talkactions/scripts/shop.lua:2: attempt to call global 'isNumeric' (a nil value)
2023-01-23 05:18:10 -  stack traceback:
2023-01-23 05:18:10 -   data/talkactions/scripts/shop.lua:2: in function <data/talkactions/scripts/shop.lua:1>
 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...