Ir para conteúdo

[Encerrado] Porque Itens do Shop não vão para o player?


shuzin

Posts Recomendados

globalevents

<?xml version="1.0" encoding="UTF-8"?>

<globalevents>

<!-- Server Events -->

<globalevent name="save" interval="3600000" event="script" value="save.lua"/>

<globalevent name="clean" interval="7200000" event="script" value="clean.lua"/>

<globalevent name="init" type="startup" event="script" value="init.lua"/>

<globalevent name="globalsave" type="globalsave" event="script" value="init.lua"/>

<globalevent name="record" type="record" event="script" value="record.lua"/>

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

</globalevents>

 

 

 

 

shop.lua

 

 

-- ### 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, '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 .. ";")

else

doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << Seu item esta esperando por voce. Por favor faça o 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 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 '.. SQL_interval ..' segundos para obte-lo.')

end

end

if not(result_plr:next()) then

break

end

end

result_plr:free()

end

return TRUE

end

 

 

 

ps: linux!

Editado por shuzin
Link para o comentário
Compartilhar em outros sites

Use esse:

 

 

 

shop.lua

 

 

-- ### 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, 'You received >> '.. add_item_name ..' << from OTS shop.')

db.query("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 voce. Por favor faça o 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 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 '.. SQL_interval ..' segundos para obte-lo.')

end

end

if not(result_plr:next()) then

break

end

end

result_plr:free()

end

return TRUE

end

 

 

 

espero ter ajudado.

Editado por murilo103
Link para o comentário
Compartilhar em outros sites

Tenta esse

 

Vá em Pasta do seu OT -> data -> globalevents -> globalevents.xml:

 

<globalevent name="shop" interval="30" event="script" value="shop.lua"/>

 

Agora vá em Pasta do seu OT -> data -> globalevents -> scripts -> shop.lua:

 

local SHOP_MSG_TYPE = MESSAGE_EVENT_ORANGE
local SQL_interval = 30
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
				    local id = tonumber(result_plr:getDataInt("id"))
				    local action = tostring(result_plr:getDataString("action"))
				    local delete = tonumber(result_plr:getDataInt("delete_it"))
				    local cid = getCreatureByName(tostring(result_plr:getDataString("name")))
				    if isPlayer(cid) 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)
										    doItemSetAttribute(new_item, "description", "This item can only be used by the player ".. getPlayerName(cid) .."!")
										    doItemSetAttribute(new_item, "aid", getPlayerGUID(cid)+10000)
										    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 .. ";")
								    else
										    doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. 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
								    doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. 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
				    if not(result_plr:next()) then
						    break
				    end
		    end
		    result_plr:free()
    end
    return true
end

Link para o comentário
Compartilhar em outros sites

Tipo, eu dou 15 points para o player, dai entro com a conta do player, tento comprar um item no shop do site de 15 points,

só que no ultimo purchase, ele vai para uma tela que diz que eu tenho os mesmo 15 points, é como se eu comprasse, retorna-se meus points e o item não vai para o player!

Sacou?

Link para o comentário
Compartilhar em outros sites

  • 5 years later...
A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta.

+ Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda.
* Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...