Shop.lua Adicionando Nome Nos Items Comprados.

  • 1
  • 2

Natanael Beckman

Administrador
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 06/08/06Posts: 554Char no Tibia: Balacky

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.

znExesyD.png

servercore.png

ka9

~> Scripter <~...~> Diias <~
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 01/02/09Posts: 18Char no Tibia: Nabuconozzor

Muito bom, mais seria show, se coloca-se para deleta o item. Tipo o player compra o item lá no shop se ele passar para outro player o item seria auto-deletado.

sou botafogo de coração

hsb.gif

 

Sou Tricolor de Coração

 

diilasrullez.gif

Dเเαร яuℓℓэž

Natanael Beckman

Administrador
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 06/08/06Posts: 554Char no Tibia: Balacky

hmmm, é bem mais facíl bota pra só o player poder usar o item ;D

znExesyD.png

servercore.png

ka9

~> Scripter <~...~> Diias <~
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 01/02/09Posts: 18Char no Tibia: Nabuconozzor

Tbm, mais tipo, se esse player tiver o item vip e morrer RED, ae chega o outro player e pega e fica sem uzar... era mais facil deleta o item...

sou botafogo de coração

hsb.gif

 

Sou Tricolor de Coração

 

diilasrullez.gif

Dเเαร яuℓℓэž

Natanael Beckman

Administrador
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 06/08/06Posts: 554Char no Tibia: Balacky

=s Verdade... agora ae é com os grandes scripter.

kkkkk

znExesyD.png

servercore.png

tdp157

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 11/02/07Posts: 10Char no Tibia: Knight Zodic

1 pequena pergunta !

 

ah alguma action que eu possa usar para restringir que o item comprado pelo shop so possa ser usado pelo player que compro?

Site do meu ot: http://godofwar.servegame.com:8090
Versao: 8.60
mapa: global full
exp: (stages) inicia em 100x
skill: 50x
ml: 15x
loot: próprio

Natanael Beckman

Administrador
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 06/08/06Posts: 554Char no Tibia: Balacky

Não, mais existem outras formas mais complicadas que é necessario você saber um pouco de progamação.

znExesyD.png

servercore.png

paladinzinhoo

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 20/09/08Posts: 16Char no Tibia: Blable Bucks

cara quando vc for fazer uma postagem vc deveria colocar a versão do ot, em qual serv testou, e explicar onde colocar e etc...

CoLoRaDo

Colorado Das Glórias, o Orgulho do Brasil
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 27/04/09Posts: 242Gênero: MasculinoChar no Tibia: Askators

bom vo aproveitar que nao passou 1 mês ainda! hehe

eu queria saber esse shop.lua onde fica???

 

aki soh tem shopsystem.php e shopadmin.php!!! como eu faço o q tem q fazer?

Natanael Beckman

Administrador
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 06/08/06Posts: 554Char no Tibia: Balacky

data/globalevents/scripts

 

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

znExesyD.png

servercore.png

vctolivo95

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/06/11Posts: 56

Aqui funfo direitinho valew !

Aldebaran-OT Server Baiak custom inaugurado 18/08/12.

Rajas

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 30/12/07Posts: 132Gênero: MasculinoChar no Tibia: Hannibol

cara isso eh soh fazer em moviments, pq ele cria uma descrição do item...

guixap

Beyond Sky
avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 30/09/08Posts: 174Char no Tibia: Knight do Momento

Teria como fazer isso para items comprado por talkaction?



Porque meu Shop System é por talk :X

Desvendando Scripting:



Thanks: Marcelin e Demonbholder

 

yeti.gif

  • 1
  • 2