TE

[ Resolvido ]Helpcomo Fazer Para Gesior Entregar Itens Do Shop E Premium Account Do Shop Online Automaticamente?

Por terabite, 08 de mar. de 2012 em Archived

dúvida
otserv
tibia
7
1.7k
terabiteT
08 de março de 2012 às 20:13

NAO TO CONSEGUINDO FAZER O GESIOR ENTREGAR ITENS AUTOMATICAMENTE ALGUEM ME AJUDA POR FAVOR ??? DOU VARIOS REP+ PRECISO MUIDO JA TESTEI TODOS OS TUTORIAS DO XTIBIA E OUTROS FORUMS E NENHUM DEU CERTO... AJUDEM AE PLX

Piabeta KunP
09 de março de 2012 às 15:44

existem milhoes de tutos do msmo tipo, antes de postar algo procure ou se informe onde possa ter!

 

Apenas faça isso em seu ot, na psta globalevents abra globalevents.xml e cole isso:

 

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

 

e nas pasta scripts, crie um arquivo chamado shop.lua e add isso dentro:

 

-- ### 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 ..' << 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

 

Caso use war system o valos no globalevents.xml deve conter 3 numroes zeros (000) a mais pois warsystem ultiliza contagem por milesegundos!

 

Agradeça com Reputaçao! +rep!

Editado Março 9 por PiabetaMan01

terabiteT
09 de março de 2012 às 18:35

vlw funciono muito ja dei seu rep+

Piabeta KunP
09 de março de 2012 às 19:18

de nada, qualquer duvida mande um pm! e sempre q resolver uma duvida reporte para o fexamento do topico!

 

Duvida Sanada Reportando!

3 semanas depois...
23 de março de 2012 às 21:51

Tópico resolvido.

Piabeta KunP
26 de março de 2012 às 01:59

so nao foi movido para a sessao correta!

96luli969
01 de abril de 2012 às 14:12

So tenho uma duvida para onde vai esse Item que eu comprei?