Ir para conteúdo
  • Cadastre-se

[BUG] SHOP System Gesior Account Maker


Posts Recomendados

Olá, estou aqui para pedir ajuda de vocês que manjam do assunto to com um gesior aqui e adicionei systema de item para comprar no site,

ai vou la e compro o Item, recebo o item no jogo mais o item fica vindo de 30 em 30

segundos que foi o tempo configurado no script,

gostaria de saber como faço para colocar para o item vir uma vez só, e sem contar que nas tranzações historico, fala que minha compra não foi entregue ou realizala sei lá, quem souber ajudar posta ai que eu vou +Rep.

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

ta3.gif

Melhor, comunidade de Tibia, e OTServ Parabéns TibiaKing por você existir.

Link para o post
Compartilhar em outros sites

mude seu shop.lua em globalevents para este:

 

  -- ### 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, 'You received >> '.. add_item_name ..' << from OTS shop.')
                        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)
                    end
                end
            end
            if not(result_plr:next()) then
                break
            end
        end
        result_plr:free()
    end
    return TRUE
end 

DEDICADO BRASIL

Professional Internet Datacenter

banner_divulgativo_468x60.gif

 

Tudo oque você precisa para ter certeza de que não há nada que vai estragar teus planos em seu projeto Gamer/Engine, nós somos uma empresa qualificada em Segurança em servidores, obtemos técnicos especializados, que possam lhe alertar sobre qualquer falha que você esteja sofrendo.

 

- Visite o site

Link para o post
Compartilhar em outros sites

O erro ainda persiste olha o que aparece no distrito, quando entrega o item para o player e ai a cada 30 seg ele envia o item novamente e da esse mesmo erro de novo olha:

 

 

[10/06/2013 20:50:12] [Error - GlobalEvent Interface]
[10/06/2013 20:50:12] data/globalevents/scripts/shop.lua:onThink
[10/06/2013 20:50:12] Description:
[10/06/2013 20:50:12] data/globalevents/scripts/shop.lua:43: attempt to call field 'Query' (a nil value)
[10/06/2013 20:50:12] stack traceback:
[10/06/2013 20:50:12]     data/globalevents/scripts/shop.lua:43: in function <data/globalevents/scripts/shop.lua:7>
[10/06/2013 20:50:12] [Error - GlobalEvents::think] Couldn't execute event: shop

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

ta3.gif

Melhor, comunidade de Tibia, e OTServ Parabéns TibiaKing por você existir.

Link para o post
Compartilhar em outros sites
-- ### 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, 'You received >> '.. add_item_name ..' << from OTS shop.')
                        db.escapeString("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
                        db.escapeString("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
                                                doPlayerSave(cid)
                    end
                end
            end
            if not(result_plr:next()) then
                break
            end
        end
        result_plr:free()
    end
    return TRUE
end 

DEDICADO BRASIL

Professional Internet Datacenter

banner_divulgativo_468x60.gif

 

Tudo oque você precisa para ter certeza de que não há nada que vai estragar teus planos em seu projeto Gamer/Engine, nós somos uma empresa qualificada em Segurança em servidores, obtemos técnicos especializados, que possam lhe alertar sobre qualquer falha que você esteja sofrendo.

 

- Visite o site

Link para o post
Compartilhar em outros sites

Agora, ele parou de dar o erro no Distrito, mais ainda continua mandando o item excessivamente.

 

Quando eu visualizo a tabela "Z_SHOP_HISTORY_ITEM" tem uma linha la, que esta assim olha:

 

1 Death Foxy 2656250   2656250 0 0 wait 1370907685 0

 

Onde está wait é a transação o status que ela está, acho que tá com problema no "Z_OTS_COMUNICATION" me manda uma tabela dele ai Pra eu adiciona no pelo SQL quem sabe não resolvo o problema.

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

ta3.gif

Melhor, comunidade de Tibia, e OTServ Parabéns TibiaKing por você existir.

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

Você usa TFS 0.4   Troque: db.executeQuery Por: db.query

 

to com o mesmo problema, aonde se localiza isso que é pra trocar? 

TE AJUDEI ? DA REP+

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