Ir para conteúdo

Posts Recomendados

Tipo: GLOBALEVENT

Versão: 8.6

Nivel: Intermediário

 

Olá pessoal.Eu estou querendo um script em globalevent onde editamos o arquivo SHOP.LUA onde o player compra qualquer item no shop do gesior e quando recebe ao dar look aparece toda a description do item e mais um description "pertence a "nome do player" [iD: xxx]

 

vou dar um exemplo com a arcane staff:

 

01:02 You see an arcane staff (Atk:69, Def:40).

It can only be wielded properly by players of level 75 or higher.

It weighs 40.00 oz.

Pertence a Edmolla [iD: 1]

 

Explicando:

 

Verde: ID normal do item ou seja não precisa mecher em nada no item

Laranja: O que eu quero que apareça,pois é uma maneira de achar quem clona items no ot.esse [id:1] significa que se eu pesquisar na database sobre id na tabela items é obrigatorio aparecer id's diferentes por exemplo: 10 players compraram 10 items no ot CADA ITEM tera seu id por ordem de compra.

 

abaixo segue o meu script de shop não gostaria que fosse mudado porém so acrecentado o comando:

-- ### 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)
	doItemSetAttribute(new_container, "description", 'PERTENCE A ' .. getCreatureName(cid) .. ' [iD:' .. id .. '].')
					local iter = 0
					while iter ~= container_count do
	local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
	doItemSetAttribute(new_item, "description", 'PERTENCE A ' .. getCreatureName(cid) .. ' [iD:' .. id .. '].')
	doAddContainerItemEx(new_container, new_item)
							iter = iter + 1
					end
					received_item = doPlayerAddItemEx(cid, new_container)
					else
					local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
	doItemSetAttribute(new_item, "description", 'PERTENCE A ' .. getCreatureName(cid) .. ' [iD:' .. id .. '].')
					received_item = doPlayerAddItemEx(cid, new_item)
					end
					if received_item == RETURNVALUE_NOERROR then
					doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'ACABOU DE CHEGAR >> '.. add_item_name ..' << DO SHOP DO OT.VERIFIQUE SUA BACKPACK OU DEPOT')
	doPlayerSave(cid)
					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

 

em um outro forum eu encontrei a linha que da pra por no script:

 

doItemSetAttribute(new_container, "description", 'Pertence a ' .. getCreatureName(cid) .. ' [iD:' .. id .. '].')

 

Eu tentei colocar mais dava erro no script...se puderem me ajudar ficarei eternamente grato.

 

 

OBS: FIZ UM TÓPICO ENORME NA ESPERANÇA DE QUE PUDESSEM ENTENDER.

Link para o comentário
https://xtibia.com/forum/topic/180369-colocar-nome-do-comprador-ao-receber-item-do-shop-gesior/
Compartilhar em outros sites

  • 1 month later...

Eu peguei um Aqui mesmo no Xtibia e funcionou, mas só nos itens você coloca isso aqui no 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", "Este Item foi Adquirido por ".. 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, 'Você acaba de Receber >> '.. add_item_name ..' << do Shop System.')

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

esse script do xtibia, funciona etrne aspas, pois ele aparece o nome do comprador, mais qndo vc equipa o valor some e volta ser um item como qualquer outro sem nenhum caracter espericial e o script se nao me engano tbm usa creatureevents!!

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