Ir para conteúdo

Shop.lua Adicionando Nome Nos Items Comprados.


Posts Recomendados

Galera eu vi um tópico aqui no XTibia de um cara tentando concluir o Shop.lua dele pra quando o player comprasse um item no shop ja vinhesse nesse item o nome do player...

Eu particulamente tenho um servidor e sofro com items cloner =C. Isso ta send bom porque agora estou sabendo de onde esta vindo os cloner do meus items VIP. E assim descubro ligeiramente a raiz de tudo.

Bom deixando de bla bla bla, aqui vai o script.

 

 

data/globalevents/globalevents.xml

 

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

 

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

 

Creditos pra min por ir em busca da solução e ao Cykotitan por me trazer a solução.

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

  • 2 weeks later...
  • 3 weeks later...

agora sim!! sera que é melhor editar seu post la em cima???

 

bekman me manda o seu msn por pm!

 

 

to com problemas na vip do site e do ot e preciso de ajuda!

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

  • 3 months later...
  • 2 weeks later...
×
×
  • Criar Novo...