caotic 393 Postado Setembro 9, 2012 Share Postado Setembro 9, 2012 (editado) ~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 Setembro 9, 2012 por caotic Link para o comentário https://xtibia.com/forum/topic/193798-shopping-sytem-demo-by-caotic/ Compartilhar em outros sites More sharing options...
Stigal 584 Postado Setembro 9, 2012 Share Postado Setembro 9, 2012 Boa, Muito Uteo! Pois Diminue Mt Usuarios No Trade e Fica Mais Pratico e Eficiente! <3 Seu Lindo Link para o comentário https://xtibia.com/forum/topic/193798-shopping-sytem-demo-by-caotic/#findComment-1335601 Compartilhar em outros sites More sharing options...
caotic 393 Postado Setembro 9, 2012 Autor Share Postado Setembro 9, 2012 Alem de que pode ser que os players vendedores podem estar off. Mais a versão a seguir vem com muitos mais novidades(lista de itens,sem limite de itens no shop e etc..) Link para o comentário https://xtibia.com/forum/topic/193798-shopping-sytem-demo-by-caotic/#findComment-1335627 Compartilhar em outros sites More sharing options...
Lolksky 17 Postado Setembro 9, 2012 Share Postado Setembro 9, 2012 + 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 https://xtibia.com/forum/topic/193798-shopping-sytem-demo-by-caotic/#findComment-1335635 Compartilhar em outros sites More sharing options...
caotic 393 Postado Setembro 9, 2012 Autor Share Postado Setembro 9, 2012 Exatamento o que vou fazer Lordsky. Mais player pode usar sim o sistema. Verifica as tags que vc pos Link para o comentário https://xtibia.com/forum/topic/193798-shopping-sytem-demo-by-caotic/#findComment-1335651 Compartilhar em outros sites More sharing options...
Lolksky 17 Postado Setembro 9, 2012 Share Postado Setembro 9, 2012 (editado) 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 Setembro 9, 2012 por Lolksky Link para o comentário https://xtibia.com/forum/topic/193798-shopping-sytem-demo-by-caotic/#findComment-1335655 Compartilhar em outros sites More sharing options...
caotic 393 Postado Setembro 9, 2012 Autor Share Postado Setembro 9, 2012 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 https://xtibia.com/forum/topic/193798-shopping-sytem-demo-by-caotic/#findComment-1335675 Compartilhar em outros sites More sharing options...
Vodkart 1515 Postado Setembro 9, 2012 Share Postado Setembro 9, 2012 (editado) é 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 Setembro 9, 2012 por Vodkart Link para o comentário https://xtibia.com/forum/topic/193798-shopping-sytem-demo-by-caotic/#findComment-1335799 Compartilhar em outros sites More sharing options...
caotic 393 Postado Setembro 9, 2012 Autor Share Postado Setembro 9, 2012 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 https://xtibia.com/forum/topic/193798-shopping-sytem-demo-by-caotic/#findComment-1335899 Compartilhar em outros sites More sharing options...
Stigal 584 Postado Setembro 9, 2012 Share Postado Setembro 9, 2012 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 https://xtibia.com/forum/topic/193798-shopping-sytem-demo-by-caotic/#findComment-1335905 Compartilhar em outros sites More sharing options...
Vodkart 1515 Postado Setembro 10, 2012 Share Postado Setembro 10, 2012 caso precise de ajuda só mandar um PM será um prazer colossal em lhe ajudar Link para o comentário https://xtibia.com/forum/topic/193798-shopping-sytem-demo-by-caotic/#findComment-1335974 Compartilhar em outros sites More sharing options...
Posts Recomendados