Ir para conteúdo

Shopping Sytem Demo By Caotic


caotic

Posts Recomendados

~Shop Sytem Demo~

Ola galera do xtibia venho postar um sistema de shopping.

Ele ainda se encontra na versão inicial vai ser melhorado mais ja pode ser usado.

Resolvi postar a versão demo para demonstrar como o script tem potencial alem de que a demo poder se bem útil a você.

O script e um shop onde o player coloca um item no shopping e outro player compra seu item mesmo que o player vendedor esteja off.

 

Antes de tudo precisamos instalar o sistema.

Vai na sua dabase e execute tais comandos:

 

 

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 vá na pasta lib e crie um arquivo lua chamado shop e coloque este codigo:

 


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 doPlayerBuyItemInShop(cid, itemid)
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 `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

 

Agora vamos a pasta talkactions e vamos criar um arquivo lua chamado shop também e coloque este codigo:

 

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 getItemIdByName(t[1], false) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este item "..t[2].." não existe")
end
local item = getItemIdByName(t[1])
local price = t[2]
if getExistItemInShop(item) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este item ja esta sendo vendido no shop espere ele ser comprado")
end
if getPlayerItemCount(cid, item) < 1 then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem "..t[1].."")
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 na mesma pasta talkactions vamos criar um arquivo lua chamado comprar e coloque este codigo:

 

 

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")
end
if not getItemIdByName(param, false) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este item "..t[2].." não existe")
end
local itemid = getItemIdByName(param)
if not getExistItemInShop(itemid) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este item não existe no shopping")
end

if not doPlayerRemoveMoney(cid, getItemPriceInShop(itemid)) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem "..price.." para comprar "..itemid.." do shopping")
end

doPlayerBuyItemInShop(cid, itemid)
return true
end

 

Seguidamente na mesma pasta talkactions crie outro arquivo lua chamado find e coloque este codigo:

 

 

 

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 que você quer procurar no shopping")
end
if not getItemIdByName(param, false) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este item "..param.." não existe se estiver afim de comprar confirme seu nome")
end
local itemid = getItemIdByName(param)
if not getExistItemInShop(itemid) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este item não se encontra disponivel no shopping se estiver afim de comprar espere algum player colocar no shopping")
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O "..param.." encontrasse no shopping pelo preço de "..getItemPriceInShop(itemid).." money pelo player "..getPlayerNameByGUID(getItemPlayerInShop(itemid), false).."")
return true
end

 

Agora coloque esta tags em talkactions.xml:

 

 

 

<talkaction log="yes" words="/shop" access="1" event="script" value="shop.lua"/>

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

<talkaction log="yes" words="/find" access="1" event="script" value="find.lua"/>

 

 

 

 

 

 

Agora vamos a pasta creaturescripts/scripts e crie um arquivo lua chamado shop e coloque isto nele:

 

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

 

 

Agora vamos em creaturescripts/scripts e em login.lua registre o evento colocando antes do ultimo return:

 

 

 

registerCreatureEvent(cid, "shop")

 

 

 

 

Agora vamos em creaturescripts/creaturescripts.xml e vamos colocar esta tag:

 

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

 

 

 

 

Comandos

 

 

/shop (Nome do item, Preço) --------Coloca os itens no shopping

/compra (Nome do item) ---- Compra o item do shop

/find (Nome do item) --- Procura um item do shopping

Editado por caotic
Link para o comentário
Compartilhar em outros sites

+ coloque para player poder usar o sistema

+ e também poder colocar mais de 1 item, ou seja, 2 fulanos colocarem o mesmo item, porém, cada um com o seu preço

+ e no comando /find, coloque para abrir um quadro (aquele de mensagem) com todos os itens a venda da procura, tipo, se o player procura por fire sword, todas fire swords à venda aparecem no quadro. Só que nisso, teria que implementar algo pra identificar um item do outro, pro comprador poder escolher qual vai comprar.

Link para o comentário
Compartilhar em outros sites

Exatamento o que vou fazer Lordsky.

 

Mais player pode usar sim o sistema.

 

Verifica as tags que vc pos

 

sim sim, eu tirei o acess=1

mas se player usar do jeito que está aí o script, só um player poderá colocar X item, se já tem uma fire sword por ex., outro player não poderá colocar a sua fire sword.

 

Mas, parabéns pelo script, se puder, faça isso que pedi =D, acho que ficará bem melhor =D

fico no aguardo \o

_________

Se não for pedir demais, quando você fizer essa alteração, teria como me avisar por PM? *-*

Editado por Lolksky
Link para o comentário
Compartilhar em outros sites

Uma semana mais ou menos

 

A proxima versão tera descrição onde o player vai colocar a descrição do item.

Vai ter a lista de acordo com o preço do item.

 

E etc.....

Eu mando pm quando estiver pronto sim

Link para o comentário
Compartilhar em outros sites

é mesmo caotic, ai o player não vai pode adicionar um item igual, e também deveria ter um limite de dias para que se não vendesse fosse removido da lista '-'

 

enfim a tabela primaria poderia ter sido:

 

CREATE TABLE shop (
	id				INTEGER NOT NULL,
	player_id   INTEGER NOT NULL,
	item   INTEGER NOT NULL,
	price	  INT NOT NULL DEFAULT 0,
	PRIMARY KEY ( id )
);

 

 

@topic

 

faltou tbm fazer uma lista para ver os items que estao na venda

Editado por Vodkart
Link para o comentário
Compartilhar em outros sites

Como disse e uma versão demo ta em desenvolvimento

 

A lista vo fazer na versão completa porque um merd@ fazer esta lista.

 

Boa ideia limite de dias ficaria bem legal vou estar adicionando uma verificação dos dias que o item esta no shop pelo globalevents.

 

As ideias estão boas espero que tenha mais ideias.

Link para o comentário
Compartilhar em outros sites

Como disse e uma versão demo ta em desenvolvimento

 

A lista vo fazer na versão completa porque um merd@ fazer esta lista.

 

Boa ideia limite de dias ficaria bem legal vou estar adicionando uma verificação dos dias que o item esta no shop pelo globalevents.

 

As ideias estão boas espero que tenha mais ideias.

Seria Otimo Se Informace tudo exemplo:

 

Dia Adicionado - Usuario

ITEM - Preço - Quantidade

Quantos Dias Para Sair Da Loja

 

e uma dica pra um novo script:

um tipo de lojinha que abre em "x" a "x" de tempo e vende "x,x,x,x" de itens quest ou seila...

seria legal para um evento automatico "Lojinha Maluka" ou seila ;D

 

Abraço Caotic gay gay gay

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...