Ir para conteúdo

Pra Onde Vai Os Itens Comprados No Site Gesior 0.3.8?


saho

Posts Recomendados

s faça isso:

Crie um script com nome shop.lua no globalevents e coloque 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 ..' << 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

Coloque isso no globalevents.xml

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

 

e execute esse comando na database:

CREATE TABLE IF NOT EXISTS `z_ots_comunication` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`type` varchar(255) NOT NULL,
`action` varchar(255) NOT NULL,
`param1` varchar(255) NOT NULL,
`param2` varchar(255) NOT NULL,
`param3` varchar(255) NOT NULL,
`param4` varchar(255) NOT NULL,
`param5` varchar(255) NOT NULL,
`param6` varchar(255) NOT NULL,
`param7` varchar(255) NOT NULL,
`delete_it` int(2) NOT NULL default '1',
PRIMARY KEY (`id`)
);
CREATE TABLE IF NOT EXISTS `z_shop_offer` (
`id` int(11) NOT NULL auto_increment,
`points` int(11) NOT NULL default '0',
`itemid1` int(11) NOT NULL default '0',
`count1` int(11) NOT NULL default '0',
`itemid2` int(11) NOT NULL default '0',
`count2` int(11) NOT NULL default '0',
`offer_type` varchar(255) default NULL,
`offer_description` text NOT NULL,
`offer_name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE IF NOT EXISTS `z_shop_history_item` (
`id` int(11) NOT NULL auto_increment,
`to_name` varchar(255) NOT NULL default '0',
`to_account` int(11) NOT NULL default '0',
`from_nick` varchar(255) NOT NULL,
`from_account` int(11) NOT NULL default '0',
`price` int(11) NOT NULL default '0',
`offer_id` int(11) NOT NULL default '0',
`trans_state` varchar(255) NOT NULL,
`trans_start` int(11) NOT NULL default '0',
`trans_real` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
);
CREATE TABLE IF NOT EXISTS `z_shop_history_pacc` (
`id` int(11) NOT NULL auto_increment,
`to_name` varchar(255) NOT NULL default '0',
`to_account` int(11) NOT NULL default '0',
`from_nick` varchar(255) NOT NULL,
`from_account` int(11) NOT NULL default '0',
`price` int(11) NOT NULL default '0',
`pacc_days` int(11) NOT NULL default '0',
`trans_state` varchar(255) NOT NULL,
`trans_start` int(11) NOT NULL default '0',
`trans_real` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
);

Link para o comentário
Compartilhar em outros sites

ele fica falando

 

Crown Legs << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about 30 seconds to get it.

 

mais n chega nada, eu relogo e n chega

Link para o comentário
Compartilhar em outros sites

O problema e que eu estou com 5mil de cap e sem equip.

 

O unban, tirar redskull, o trocar name... ta funcionando blz.

 

Cara no codigo aqui eu dei uma olhada, e eu sako um pouco de java e ta o segunte... no phpmyadmin o parametro 3 no zcomunication ta vazio, no codigo ele seria o container_id, no caso acho que o local pra onde o item iria. Será esse o erro?

Link para o comentário
Compartilhar em outros sites

o ot veio com script proprio. Este

 

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

 

Ja testei com seu codigo, e esse... mais nao funciona

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...