Ir para conteúdo

Featured Replies

Postado
  • Solução

Tente usar este: 

 

-- ### 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 == 0 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 .. ' oz., you have only ' .. free_cap .. ' 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

  • Respostas 10
  • Visualizações 819
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

Posted Images

Postado

Caso não der, pode usar o meu

-- ### 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
container_weight = getItemWeightById(container_id, 1)
if isItemRune(itemtogive_id) == TRUE then
items_weight = container_count * getItemWeightById(itemtogive_id, 1)
else
items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count)
end
full_weight = items_weight + container_weight
else
full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
if isItemRune(itemtogive_id) == TRUE then
full_weight = getItemWeightById(itemtogive_id, 1)
else
full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
end
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, 'Você recebeu: '.. add_item_name ..' do shopping online.')
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 .. ";")
else
doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << Seu item esta esperando por você. Por favor libeere um local para este item em sua mochila e aguarde '.. SQL_interval ..' segundos para obte-lo.')
end
else
doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << Seu item esta esperando por você. O peso do item é '.. full_weight ..' oz. Você tem no momento '.. free_cap ..' oz. de capacidade livre. Coloque alguns itens no depósito e espere cerca de '.. SQL_interval ..' segundos para obte-lo.')
end
end
if not(result_plr:next()) then
break
end
end
result_plr:free()
end
return TRUE
end
Postado
  • Autor

luanluciano93

Eu usei esse uma vez e ele funcionou por algumas horas e depois o bug continuou, estou usando ele agora e esta fucionando normalmente, vou deixar online pra ver se vai bugar de novo.

 

-- ### 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 == 0 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 .. ' oz., you have only ' .. free_cap .. ' 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

 

 

luanluciano93 e o nosso sistema vip que estamos vendo neste topico, http://www.tibiaking.com/forum/topic/49770-tfs-11-vip-system-by-luanluciano93/

você nao respondeu mas =(

 

 

keilost1

o seu da o seguinte erro.

post-103802-0-99154400-1431383834_thumb.

 

post-103802-0-99154400-1431383834_thumb.

Postado

Opa, esqueci de mudar uma função

-- ### 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.storeQuery("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
container_weight = getItemWeightById(container_id, 1)
if isItemRune(itemtogive_id) == TRUE then
items_weight = container_count * getItemWeightById(itemtogive_id, 1)
else
items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count)
end
full_weight = items_weight + container_weight
else
full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
if isItemRune(itemtogive_id) == TRUE then
full_weight = getItemWeightById(itemtogive_id, 1)
else
full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
end
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, 'Você recebeu: '.. add_item_name ..' do shopping online.')
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 .. ";")
else
doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << Seu item esta esperando por você. Por favor libeere um local para este item em sua mochila e aguarde '.. SQL_interval ..' segundos para obte-lo.')
end
else
doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << Seu item esta esperando por você. O peso do item é '.. full_weight ..' oz. Você tem no momento '.. free_cap ..' oz. de capacidade livre. Coloque alguns itens no depósito e espere cerca de '.. SQL_interval ..' segundos para obte-lo.')
end
end
if not(result_plr:next()) then
break
end
end
result_plr:free()
end
return TRUE
end

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

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo