Ir para conteúdo
  • Cadastre-se

Npc Auction Versão 1.0 [Atualizado]


Posts Recomendados

[Error - GlobalEvent Interface]
data/globalevents/scripts/npc_shop.lua:onThink
Description:
data/lib/004-database.lua:66: [Result:getDataInt] Result not set!
stack traceback:
        [C]: in function 'error'
        data/lib/004-database.lua:66: in function 'getDataInt'
        data/lib/Npc_Shop.lua:88: in function 'doPlayerAddDepotItem'
        data/globalevents/scripts/npc_shop.lua:20: in function <data/globalevents/scripts/npc_shop.lua:1>
[Error - GlobalEvents::think] Couldn't execute event: ItemsNpcShopt

 

porque dá esse erro ?

Link para o post
Compartilhar em outros sites
  • Respostas 61
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Versões: Foi feito para servidores que não tem o market system, mas funciona desde o 8.54 até 9.6+ Suporta: servidores Sqlite e MySql Sobre: O Npc basicamente funciona da seguinte maneira, v

ótimo script! como faço para ele mandar mensagem global com o anúncio? adicionei o globalevents mas não está mandando mensagem.. adicionei 2 items para testar.. e não está dando erro na distro.

vou refazer o   simple task pro 5.0 autoloot npc auction   mas depois das provas, talvez no começo de julho kkk então aguardem

Posted Images

@Vodkart Mano poderia ajudar ? Olha esse erro que fica dando. como ajeitar ?

Spoiler

[Error - GlobalEvent Interface]
data/globalevents/scripts/npc_shop.lua:onThink
Description:
data/lib/004-database.lua:66: [Result:getDataInt] Result not set!
stack traceback:
        [C]: in function 'error'
        data/lib/004-database.lua:66: in function 'getDataInt'
        data/lib/Npc_Shop.lua:88: in function 'doPlayerAddDepotItem'
        data/globalevents/scripts/npc_shop.lua:20: in function <data/globalevents/scripts/npc_shop.lua:1>
[Error - GlobalEvents::think] Couldn't execute event: ItemsNpcShopt

 

Link para o post
Compartilhar em outros sites
  • 4 weeks later...
  • 2 weeks later...
Em 15/05/2017 em 19:57, Darcio Antonio disse:

Tudo que vou adicionar no npc pra venda da asim esse item noa existe

 

1.png


conseguiu resolver?

@Vodkart é possivel fazer um aglomerado de itens só? sem ser por categorias? ou da bug

Editado por pablobion (veja o histórico de edições)

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites
  • 8 months later...

Estou com o mesmo erro
 

@Vodkart Mano poderia ajudar ? Olha esse erro que fica dando. como ajeitar ?

  Ocultar conteúdo
[Error - GlobalEvent Interface]
data/globalevents/scripts/npc_shop.lua:onThink
Description:
data/lib/004-database.lua:66: [Result:getDataInt] Result not set!
stack traceback:
        [C]: in function 'error'
        data/lib/004-database.lua:66: in function 'getDataInt'
        data/lib/Npc_Shop.lua:88: in function 'doPlayerAddDepotItem'
        data/globalevents/scripts/npc_shop.lua:20: in function <data/globalevents/scripts/npc_shop.lua:1>
[Error - GlobalEvents::think] Couldn't execute event: ItemsNpcShopt

@Vodkart ajuda nois seu canalha kkk

Link para o post
Compartilhar em outros sites

kkk qual versão de vcs? instalaram tudo certo? LIB e tal?

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

vo por as paradas aqui.
ISSO ESTA EM LIB

Spoiler

_config_npc_shop = {
ShowMyItems_shop = true, -- se vai mostrar os seus proprios items no trade no shop
each_deposit = 0, -- quanto vai custar para adc item no shop
days_limit = 7, -- limit de dias que o npc vai vender seu item
items_limit = 10, -- max items q vc pode depositar no npc
items_block = {2160,2152,2148}, -- items que o npc n vai poder vender
WithDraw_storage = 725201 -- n mexa
}
function doSetDepositNpc(player, amount, type)
local query = db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id` = ".. player .." AND `key` = ".. _config_npc_shop.WithDraw_storage)
if query:getID() ~= -1 then
return db.query("UPDATE `player_storage` SET `value` = `value` "..(type == "add" and "+" or "-").." "..amount .." WHERE `player_id` = ".. player .." AND `key` = ".. _config_npc_shop.WithDraw_storage)
end
end
function getDepositNpc(cid)
return getPlayerStorageValue(cid, _config_npc_shop.WithDraw_storage)
end
function getItemByName(name)
    local items = io.open("data/items/items.xml", "r"):read("*all")
    local get = items:match('name="' .. name ..'"')
    if get == nil or get == "" then
        return false
    end
return true
end
function getItemType(itemid)
    local slottypes = {"head", "body", "legs", "feet", "shield", "sword","wand", "club", "axe", "distance", "ammunition"}
    local arq = io.open("data/items/items.xml", "r"):read("*all")
    local attributes = arq:match('<item id="' .. itemid .. '".+name="' .. getItemNameById(itemid) ..'">(.-)</item>')
    if attributes == nil or attributes == "" then
        return "others"
    end
    local slot = ""
    for i,x in pairs(slottypes) do
        if attributes:find(x) then
                slot = x
                    break
            end
    end
    if slot == "body" then slot = "armor" end
return slot
end
function getRowsShopByPlayer(player_id)
local qry,s = db.getResult("SELECT `player_id` FROM `shop_npc` WHERE `player_id` = "..player_id),0
if(qry:getID() ~= -1) then
repeat
s = s + 1
until not(qry:next())
qry:free()
end
return s
end
function isItemInShop(id, amount)
local info = db.getResult("SELECT `item_id`,`count` FROM `shop_npc` WHERE `id` = "..id)
if(info:getID() ~= -1) then
return info:getDataInt("count") < amount and false or true
end
return false 
end
function doDeleteShopItem(id)
local info = db.getResult("SELECT `item_id` FROM `shop_npc` WHERE `id` = "..id)
if(info:getID() ~= -1) then
return db.query("DELETE FROM `shop_npc` WHERE `id` = "..id)
end
return false 
end
function doAddItemShop(cid, itemid, amount, type, price)
return db.query("INSERT INTO `shop_npc` (`player_id`, `item_id`, `count`, `type`, `price`, `date`) VALUES ('".. getPlayerGUID(cid).."', '".. itemid .."', '".. amount .."', '".. type .."', '".. price .."','".. os.time() .."');")
end
function doRemoveShopItem(id, amount)
local info = db.getResult("SELECT `count` FROM `shop_npc` WHERE `id` = "..id)
if(info:getID() ~= -1) then
return db.query("UPDATE `shop_npc` SET `count` = `count` - "..amount.." WHERE id = "..id)
end
return false 
end
function getPlayerByShopID(id)
local qry = db.getResult("SELECT `player_id` FROM `shop_npc` WHERE id = "..id)
if(qry:getID() ~= -1) then
return getPlayerNameByGUID(qry:getDataInt("player_id"))
end
return false
end
function doPlayerAddDepotItem(pid, item, count)
local item,count = {item},{(count or 1)}
    for k,v in ipairs(item) do
    local ls = db.getResult("SELECT `sid` FROM `player_depotitems` WHERE `player_id` = "..pid.." ORDER BY `sid` DESC LIMIT 1")
    return db.query("INSERT INTO `player_depotitems` (`player_id`, `sid`, `pid`, `itemtype`, `count`, `attributes`) VALUES ("..pid..", "..(ls:getDataInt("sid")+1)..", 101, "..v..", "..count[k]..", '')") or false
    end
end
---------- offline messages --------------
		OfflineMessagesConfig = {
			separatorAfterNickname = ',',
			messageSavingDirectory = 'data/logs/offline_msg.txt', -- dir with saved messages (folder must exsist!)
			delayBeetwenShowMessageOnLogin = 750, -- delay in ms to show received messages on login, to deactivate type 0
			messageFormatString = '[%s] %s: %s', -- date, author, message
			dateFormatString = '%d.%m.%Y %H:%M:%S' -- date string format
		}

Action  DO NPC AGORA

Spoiler

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,msg = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid,string.lower(msg)
local weaponsTypes = {"head", "armor", "legs", "feet", "shield", "sword", "wand", "rod", "club", "axe", "distance", "ammunition", "others"}
if isInArray({'apprise', 'check', 'items', 'item', 'list'}, msg) then
local qry,k,str = db.getResult("SELECT `item_id`, `count`, `price` FROM `shop_npc` WHERE `player_id` = "..getPlayerGUID(cid)),0,"My Items Deposited:\n\n"
if(qry:getID() ~= -1) then
repeat
k = k + 1
str = str..""..qry:getDataInt("count").." "..getItemNameById(qry:getDataInt("item_id")).." - "..qry:getDataInt("price").." Gps "..(tonumber(qry:getDataInt("count")) > 1 and "Each" or "").."\n"
until not (qry:next()) or k >= _config_npc_shop.items_limit
qry:free()
doPlayerPopupFYI(cid, str)
else
selfSay("Currently you do not have items deposited in shop", cid)
end
elseif isInArray({'report', 'withdraw'}, msg) then
if getDepositNpc(cid) <= 0 then
selfSay("Sorry, but your balance is 0.", cid)
else
selfSay("You have "..getDepositNpc(cid).." gps deposited, you want to remove how many gps?", cid)
talkState[talkUser] = 8
end
elseif talkState[talkUser] == 8 then
if tonumber(msg) and tonumber(msg) > 0 and tonumber(msg) <= getDepositNpc(cid) then
setPlayerStorageValue(cid, _config_npc_shop.WithDraw_storage, (getDepositNpc(cid)-tonumber(msg)))
doPlayerAddMoney(cid, tonumber(msg))
selfSay("you withdrew "..msg.." gps, now you have "..getDepositNpc(cid).." of balance.", cid)
talkState[talkUser] = 0
else
selfSay("You can not remove that amount.", cid)
talkState[talkUser] = 0
end
elseif isInArray({'deposit', 'depositar', 'sell', 'selling','vender'}, msg) then
if getRowsShopByPlayer(getPlayerGUID(cid)) < _config_npc_shop.items_limit then
selfSay('Which item you want to put for sale?', cid)
talkState[talkUser] = 2
else
selfSay('Sorry, you can only add '.._config_npc_shop.items_limit..' items per time.', cid)
talkState[talkUser] = 0 
end  
elseif talkState[talkUser] == 2 then
name,item = msg,getItemByName(msg)
if msg == '' or tonumber(msg) or not item then
talkState[talkUser] = 0 
selfSay("This item does not exist.", cid) return true
elseif not isItemMovable(item) or isInArray(_config_npc_shop.items_block, getItemIdByName(name))  then
talkState[talkUser] = 0 
selfSay("you can not add this item.", cid) return true
end
item = getItemIdByName(name)
selfSay('how many of that item you want to add to the shop?', cid)
talkState[talkUser] = 3
elseif talkState[talkUser] == 3 then
if tonumber(msg) and tonumber(msg) > 0 and tonumber(msg) <= 100 and getPlayerItemCount(cid, item) >= tonumber(msg) then
count = tonumber(msg)
selfSay('very well, and that each item will cost how much?', cid)
talkState[talkUser] = 4
else
selfSay(getPlayerItemCount(cid, item) < tonumber(msg) and 'Sorry, but you not have '..msg..' items to deposit' or 'enter a valid number from 1 to 100.', cid)
end
elseif talkState[talkUser] == 4 then
if tonumber(msg) and tonumber(msg) > 0 and tonumber(msg) < 9999999 then
price = msg
selfSay('You really want to put {'..count..' '..name..'} per {'..price..'} gps '..(count > 1 and 'each' or '')..' for sale? Will cost '.. _config_npc_shop.each_deposit ..' by deposit, ok? {yes}', cid)
talkState[talkUser] = 6
else
selfSay('choose a valid number.', cid)
end
elseif msgcontains(msg, "yes") and talkState[talkUser] == 6 then
if doPlayerRemoveMoney(cid, _config_npc_shop.each_deposit) then
item,price = getItemIdByName(name),price
if doPlayerRemoveItem(cid, item, count) then
doAddItemShop(cid, item, count, getItemType(item), tonumber(price))
selfSay('Congratulations, the item was successfully added to the list and will be sold to date: '..os.date("%d %B %Y %X ", (os.time() + _config_npc_shop.days_limit*24*60*60))..'.', cid)
talkState[talkUser] = 0
else
selfSay('Sorry, but could not be completed because you do not have the items.', cid)
talkState[talkUser] = 0
end
else
selfSay('Sorry, but you do not have gps sufficient to deposit this item.', cid)
talkState[talkUser] = 0
end
elseif isInArray({'trade', 'comprar', 'buy', 'buying', 'shop'}, msg) then
selfSay('What type of item you want to buy: {head}, {armor}, {legs}, {feet}, {shield}, {sword}, {wand}, {rod}, {club}, {axe}, {distance}, {ammunition} ou {others} ?', cid)
talkState[talkUser] = 7    
elseif talkState[talkUser] == 7 then
if isInArray(weaponsTypes, msg) then
if msg == "rod" then msg = "wand" end
local qry,trade,show = db.getResult("SELECT `id`, `player_id`, `item_id`, `count`, `price`  FROM `shop_npc` WHERE `type` = "..db.escapeString(msg)),{},true
if(qry:getID() ~= -1) then
repeat
if not _config_npc_shop.ShowMyItems_shop and qry:getDataInt("player_id") == getPlayerGUID(cid) then
show = false
end
if show == true then
table.insert(trade,{id= qry:getDataInt("item_id"), buy= qry:getDataInt("price"), db= qry:getDataInt("id"), name= getItemNameById(qry:getDataInt("item_id")), amount = qry:getDataInt("count")})
end
until not(qry:next())
qry:free()
else
selfSay('Sorry, but there is no such item at the moment.', cid) return true
end
local items = {}  
    for _, item in ipairs(trade) do
    items[item.id] = {item_id = item.id, buyPrice = item.buy, changeDb = item.db, subType = item.amount, realName = item.name}
end 
    local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks)  
        if items[item].buyPrice ~= 0 and amount <= items[item].subType then
        if isItemInShop(items[item].changeDb, amount) then
            doPlayerRemoveMoney(cid, amount * items[item].buyPrice)
            if isItemStackable(items[item].item_id) then
            doPlayerAddItem(cid, items[item].item_id, amount) 
            else
            for i = 1, amount do 
                doPlayerAddItem(cid, items[item].item_id, 1)  
            end
            end
            local player,sell_price = getPlayerByNameWildcard(getPlayerByShopID(items[item].changeDb)),amount*items[item].buyPrice
            if(not player) then
             doSetDepositNpc(getPlayerGUIDByName(getPlayerByShopID(items[item].changeDb)), sell_price, "add")
         local file = io.open(OfflineMessagesConfig.messageSavingDirectory .. getPlayerByShopID(items[item].changeDb) .. '.Gandhi', 'a+')
        if(not file) then return true end
        local msgfrom, msgoff = "[Npc Auction]",{"Were sold "..amount.." "..getItemNameById(items[item].item_id).." and you received "..sell_price.." gps by items."}
        file:write(OfflineMessagesConfig.messageFormatString:format(os.date(OfflineMessagesConfig.dateFormatString), msgfrom, table.concat(msgoff, OfflineMessagesConfig.separatorAfterNickname)) .. '\n')
        file:close()
             else
             setPlayerStorageValue(player,_config_npc_shop.WithDraw_storage, getDepositNpc(player)+sell_price)
             doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE,"[Npc Auction] Were sold "..amount.." "..getItemNameById(items[item].item_id).." and you received "..sell_price.." gps by items.")  
             end
            if amount == items[item].subType then
            doDeleteShopItem(items[item].changeDb)
            else
            doRemoveShopItem(items[item].changeDb, amount)
            end
            closeShopWindow(cid)
            else
           selfSay('desculpe mas este item acabou de ser comprado.', cid)
           closeShopWindow(cid)
        end           
            else
         selfSay('you can only buy '..items[item].subType..'x of items.', cid)
        end 
    end 
     openShopWindow(cid, trade, onBuy, onSell) 
     else
     selfSay('do not sell this item type.', cid)
     end
     elseif msg == "no" and talkState[talkUser] >= 1 then
     selfSay("tudo bem então.", cid)
     talkState[talkUser] = 0
     npcHandler:releaseFocus(cid)
     end  
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

Editado por Darcio Antonio (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

 @Vodkart, script interessante :wink:
porem eu acho que tem um bug... instalei tudo certinho , o script não aceita items editados/customizados?


tentei depositar uma "Armor +2" (que seria uma knight armor) e deu como item nao existe

logo em seguida, pedi pra depositar uma leather boots e funcionou, ue o.O
image.png.d479e0daa85bad5dcd1472b945cdf911.png

Link para o post
Compartilhar em outros sites

e existe o nome do item sendo "armor +2" no items.xml ?

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

sim, tipo, eu renomeei a knight armor pra "armor +2", dai o npc parece que nao aceita item renomeado 

 

essa aqui seria a knight armor:

Spoiler

    <item id="2476" article="a" name="Armor +2">
        <attribute key="weight" value="1250" />
        <attribute key="absorbPercentAll" value="2" />
        <attribute key="armor" value="20" />
        <attribute key="slotType" value="body" />
    </item>

 

dai o npc nao aceita, nao sei porq

Link para o post
Compartilhar em outros sites
16 minutos atrás, Darcio Antonio disse:

Ajuda nois no erro de o npc nao devolver os itens pfv ? @Vodkart

1.thumb.png.f113968c7b06d7b57248beeb7a18e95c.png

 

 

vou refazer o

 

simple task pro 5.0

autoloot

npc auction

 

mas depois das provas, talvez no começo de julho kkk

então aguardem <3

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
6 minutos atrás, Darcio Antonio disse:

faz primeiro o npc pfv kkk

 

 

combinado ?

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
  • 3 weeks later...

Antes de atualizar o código, alguem tem uma sugestão?

 

Vou colocar para o npc devolver os itens

Arrumar a lib

Remove bugs possíveis.

 

 

obrigado

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

@Vodkart
tipo, em vez do player selecionar (boots,legs,armor,helmet.........) pra nao perder tempo, checando de 1 em 1, tem como só mostrar os items que estao disponiveis nao?, tipo ele fala hi/trade e ja mostrava os items que estão a venda tudo em uma categoria só

Link para o post
Compartilhar em outros sites
14 minutos atrás, poko360 disse:

@Vodkart
tipo, em vez do player selecionar (boots,legs,armor,helmet.........) pra nao perder tempo, checando de 1 em 1, tem como só mostrar os items que estao disponiveis nao?, tipo ele fala hi/trade e ja mostrava os items que estão a venda tudo em uma categoria só

 

vou colocar uma categoria 'All' então, que mostra tudo de uma vez ou escolhe por categoria mesmo.

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

##script atualizado

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.




×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo