Ir para conteúdo
  • Cadastre-se

Gesior entrega itens sem parar


Posts Recomendados

Pessoal, estou com um sério problema com o shop do meu gesior... eu compro algo e ele simplesmente entre o item sem parar! A dá esse erro no log, 

 

Lua Script Error: [GlobalEvent Interface] 
data/globalevents/scripts/others/shop.lua:onThink 
data/globalevents/scripts/others/shop.lua:57: attempt to perform arithmetic on local 'storage' (a string value) 
stack traceback: 
[C]: in function '__add' 
data/globalevents/scripts/others/shop.lua:57: in function 
[Error - GlobalEvents::think] Failed to execute event: shop 

 

 

alguém sabe como resolvo isso?

 

Meu server tbm está com esse erro, possa ser que tenha algo relacionado:::

 

[Error - mysql_real_query] Query: DELETE FROM `global_storage` WHERE `value` != '-1'; 
Message: Table 'revolution.global_storage' doesn't exist 

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

Rode essa query no seu banco:

CREATE TABLE `global_storage` (
	`key` INT UNSIGNED NOT NULL,
	`world_id` TINYINT(2) UNSIGNED NOT NULL DEFAULT 0,
	`value` VARCHAR(255) NOT NULL DEFAULT '0',
	UNIQUE (`key`, `world_id`)
) ENGINE = InnoDB;

Atenciosamente,

Bruno Minervino

Link para o post
Compartilhar em outros sites
  • 1 month later...

problema continua!

Lua Script Error: [GlobalEvent Interface]
data/globalevents/scripts/others/shop.lua:onThink
data/globalevents/scripts/others/shop.lua:57: attempt to perform arithmetic on local 'storage' (a string value)
stack traceback:
[C]: in function '__add'
data/globalevents/scripts/others/shop.lua:57: in function
[Error - GlobalEvents::think] Failed to execute event: shop

 

 

Rode essa query no seu banco:

CREATE TABLE `global_storage` (
	`key` INT UNSIGNED NOT NULL,
	`world_id` TINYINT(2) UNSIGNED NOT NULL DEFAULT 0,
	`value` VARCHAR(255) NOT NULL DEFAULT '0',
	UNIQUE (`key`, `world_id`)
) ENGINE = InnoDB;
Link para o post
Compartilhar em outros sites

Em data/Globalevents/Scripts/shop.lua Adicione o Seguinte Script!

 

-- ### CONFIG ###
-- message send to player by script "type" (types you can check in "global.lua")
SHOP_MSG_TYPE = 19
-- time (in seconds) between connections to SQL database by shop script
SQL_interval = 30
-- ### END OF CONFIG ###
function onThink(interval, lastExecution)
    local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';")
    if(result_plr:getID() ~= -1) then
        while(true) do
            id = tonumber(result_plr:getDataInt("id"))
            action = tostring(result_plr:getDataString("action"))
            delete = tonumber(result_plr:getDataInt("delete_it"))
            cid = getCreatureByName(tostring(result_plr:getDataString("name")))
            if isPlayer(cid) == TRUE then
                local itemtogive_id = tonumber(result_plr:getDataInt("param1"))
                local itemtogive_count = tonumber(result_plr:getDataInt("param2"))
                local container_id = tonumber(result_plr:getDataInt("param3"))
                local container_count = tonumber(result_plr:getDataInt("param4"))
                local add_item_type = tostring(result_plr:getDataString("param5"))
                local add_item_name = tostring(result_plr:getDataString("param6"))
                local received_item = 0
                local full_weight = 0
                if add_item_type == 'container' then
                    full_weight = getItemWeightById(itemtogive_id, 1)
                end
                local free_cap = getPlayerFreeCap(cid)
                if full_weight <= free_cap then
                    if add_item_type == 'container' then
                        local new_container = doCreateItemEx(container_id, 1)
                        local iter = 0
                        while iter ~= container_count do
                            doAddContainerItem(new_container, itemtogive_id, itemtogive_count)
                            iter = iter + 1
                        end
                        received_item = doPlayerAddItemEx(cid, new_container)
                    else
                        local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
                        received_item = doPlayerAddItemEx(cid, new_item)
                    end
                    if received_item == RETURNVALUE_NOERROR then
                        doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'Voce acaba de receber o item >> '.. add_item_name ..' << de nosso shopping, obrigado por ser um ilustrissimo donate!')
                        db.executeQuery("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
                        db.executeQuery("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
                        doPlayerSave(cid)
else
                        doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'Seu item >> '.. add_item_name ..' << esta esperando por voce. Por favor faça o local para este item em sua mochila e aguarde cerca de 30 segundos para obte-lo.')
                    end
                else
                        doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'Seu item >> '.. add_item_name ..' << esta esperando por voce. O peso do item e '.. full_weight ..' oz., Vc tem no momento '.. free_cap ..' oz. de capacidade livre. Coloque alguns itens no deposito e espere cerca de 30 segundos para obte-lo.')
                end
            end
            if not(result_plr:next()) then
                break
            end
        end
        result_plr:free()
    end
    return TRUE
end

e em Data/Globalevents/globalevents.xml Adicione a Seguinte Tag:

<globalevent name="shop" interval="30000" script="shop.lua"/>

 

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

"Ainda que eu ande pelo vale da sombra da morte, não temerei mal algum, pois tu estás comigo. Salmos 23:4"

 

Link para o post
Compartilhar em outros sites

Não resolveu... Ele para de entregar itens mas da erro no distro e nao entrega nada pra quem compra;

 

 

 

 

Consegui resolver... Eh só usar o script que deixei la embaixo. shop.lua de globalevents

Soução:


-- ### CONFIG ###

-- time (in seconds) between connections to SQL database by shop script
SQL_interval = 30
-- ### END OF CONFIG ###
function onThink(interval, lastExecution)
local result_plr = db.storeQuery('SELECT * FROM z_ots_comunication')
if result_plr ~= false then
  repeat
   local id = tonumber(result.getDataInt(result_plr, 'id'))
   local action = tostring(result.getDataString(result_plr, 'action'))
   local delete = tonumber(result.getDataInt(result_plr, 'delete_it'))
   local player = Player(tostring(result.getDataString(result_plr, 'name')))
   if player then
    local itemtogive_id = tonumber(result.getDataInt(result_plr, 'param1'))
    local itemtogive_count = tonumber(result.getDataInt(result_plr, 'param2'))
    local container_id = tonumber(result.getDataInt(result_plr, 'param3'))
    local container_count = tonumber(result.getDataInt(result_plr, 'param4'))
    local add_item_type = tostring(result.getDataString(result_plr, 'param5'))
    local add_item_name = tostring(result.getDataString(result_plr, 'param6'))
    local received_item = 0
    local full_weight = 0
    local itemType = ItemType(itemtogive_id)
    if add_item_type == 'container' then
     if itemType:isRune() then
      full_weight = container_count * itemType:getWeight()
     else
      full_weight = container_count * itemType:getWeight(itemtogive_count)
     end
     full_weight = full_weight + ItemType(container_id):getWeight()
    else
     if itemType:isRune() then
      full_weight = itemType:getWeight()
     else
      full_weight = itemType:getWeight(itemtogive_count)
     end
    end

    local free_cap = player:getFreeCapacity()
    if full_weight <= free_cap then
     if add_item_type == 'container' then
      local new_container = Game.createItem(container_id, 1)
      local iter = 0
      while iter ~= container_count do
       new_container:addItem(itemtogive_id, itemtogive_count)
       iter = iter + 1
      end
      received_item = player:addItemEx(new_container)
     else
      local new_item = Game.createItem(itemtogive_id, itemtogive_count)
      received_item = player:addItemEx(new_item)
     end

     if type(received_item) == 'number' and received_item == RETURNVALUE_NOERROR then
      player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'You received >> ' .. add_item_name .. ' << from OTS shop.')
      db.query('DELETE FROM `z_ots_comunication` WHERE `id` = ' .. id)
      db.query('UPDATE `z_shop_history_item` SET `trans_state` = \'realized\', `trans_real` = ' .. os.time() .. ' WHERE id = ' .. id)
     else
      player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, '>> ' .. add_item_name .. ' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about ' .. SQL_interval .. ' seconds to get it.')
     end
    else
     player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, '>> ' .. add_item_name .. ' << from OTS shop is waiting for you. It weight is ' .. (full_weight / 100) .. ' oz., you have only ' .. (free_cap / 100) .. ' oz. free capacity. Put some items in depot and wait about ' .. SQL_interval .. ' seconds to get it.')
    end
   end
  until not result.next(result_plr)
  result.free(result_plr)
end
return true
end

Editado por je19921992 (veja o histórico de edições)
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