Ir para conteúdo

Trade Logs


Vodkart

Posts Recomendados

Explicação:

 

Vocês sabem que os comandos que o GOD usa ficam salvos em um arquivo.txt certo?

Esse sistema é parecido, só que quando o jogador for trocar items pelo trade vão ficar salvo os IDS dos items que foram trocados e os nomes dos players.

 

 

 

 

1° Versão é feita pelo Banco de dados:

 

 

obs: Eu só testei em servidor com Sqlite, não sei se vai funcionar para os demais como mysql.

 

 

Query:

CREATE TABLE players_trade (
	id	INTEGER NOT NULL,
	world_id INTEGER NOT NULL,
	player_id INTEGER NOT NULL,
	target_id INTEGER NOT NULL,
	player_items  INTEGER NOT NULL,
	target_items  INTEGER NOT NULL,
	date	 INTEGER NOT NULL,
PRIMARY KEY ( id )
);

 

TradeLogDB.xml

<?xml version="1.0" encoding="UTF-8"?>  
<mod name="Trade Log" version="1.0" author="Vodkart" contact="none.com" enabled="yes">  
<config name="TradeLog_func"><![CDATA[
function natural(number)
local n = number - math.floor(number)
return n >= 0.5 and math.ceil(number) or math.floor(number)
end
function containerItemsToString(cont)
  local s = ""
  for _ = 0, getContainerSize(cont) - 1 do
  local item = getContainerItem(cont, _)
  s = s..",".. item.itemid
  if isContainer(item.uid) and getContainerSize(item.uid) > 0 then
	 s = s..":1"..containerItemsToString(item.uid)
  else
	 s = s..":".. natural(getItemWeight(item.uid)/getItemWeightById(item.itemid))
  end
  end
  return s
end
]]></config>
<event type="login" name="TradeRegister" event="script"><![CDATA[
function onLogin(cid)
registerCreatureEvent(cid, "TradeLog")
return true
end]]></event>	  
<event type="tradeaccept" name="TradeLog" event="script"><![CDATA[
domodlib('TradeLog_func')
function onTradeAccept(cid, target, item, targetItem)
if (not isPlayer(cid)) or (not isPlayer(target)) then return false end
local items1,items2 = ""..item.itemid,""..targetItem.itemid
items1 = isContainer(item.uid) and getContainerSize(item.uid) > 0 and items1..":1"..containerItemsToString(item.uid) or items1 ..":".. natural(getItemWeight(item.uid)/getItemWeightById(item.itemid))
items2 = isContainer(targetItem.uid) and getContainerSize(targetItem.uid) > 0 and items2 ..":1"..containerItemsToString(targetItem.uid) or items2 ..":".. natural(getItemWeight(targetItem.uid)/getItemWeightById(targetItem.itemid))
db.executeQuery("INSERT INTO `players_trade` (`world_id`, `player_id`, `target_id`, `player_items`, `target_items`, `date`) VALUES ('".. getConfigValue("worldId") .."', '".. getPlayerGUID(cid) .."', '".. getPlayerGUID(target) .."', '".. items1 .."', '".. items2 .."', '".. os.time() .."');")
return true
end
]]></event>
</mod>

 

 

2° Versão é salvo em um arquivo.txt em data/logs

 

 

TradeLog.xml

<?xml version="1.0" encoding="UTF-8"?>  
<mod name="Trade Log" version="1.0" author="Vodkart" contact="none.com" enabled="yes">  
<config name="TradeLog_func"><![CDATA[
function natural(number)
local n = number - math.floor(number)
return n >= 0.5 and math.ceil(number) or math.floor(number)
end
function containerItemsToString(cont)
  local s = ""
  for _ = 0, getContainerSize(cont) - 1 do
  local item = getContainerItem(cont, _)
  s = s..",".. item.itemid
  if isContainer(item.uid) and getContainerSize(item.uid) > 0 then
	 s = s..":1"..containerItemsToString(item.uid)
  else
	 s = s..":".. natural(getItemWeight(item.uid)/getItemWeightById(item.itemid))
  end
  end
  return s
end
]]></config>
<event type="login" name="TradeRegister" event="script"><![CDATA[
function onLogin(cid)
registerCreatureEvent(cid, "TradeLog")
return true
end]]></event>	  
<event type="tradeaccept" name="TradeLog" event="script"><![CDATA[
domodlib('TradeLog_func')
function onTradeAccept(cid, target, item, targetItem)
if (not isPlayer(cid)) or (not isPlayer(target)) then return false end
local items1,items2 = ""..item.itemid,""..targetItem.itemid
items1 = isContainer(item.uid) and getContainerSize(item.uid) > 0 and items1..":1"..containerItemsToString(item.uid) or items1 ..":".. natural(getItemWeight(item.uid)/getItemWeightById(item.itemid))
items2 = isContainer(targetItem.uid) and getContainerSize(targetItem.uid) > 0 and items2 ..":1"..containerItemsToString(targetItem.uid) or items2 ..":".. natural(getItemWeight(targetItem.uid)/getItemWeightById(targetItem.itemid))
f = io.open("data/logs/Trades.txt", "a+")
f:write("World: ".. getConfigValue("worldId") .." -  "..getPlayerName(cid).." Traded: [".. items1 .."] for [".. items2 .."] With Player "..getPlayerName(target)..". At " .. os.date("%d %B %Y - %X.", os.time()) .."\n\n----------------------------------------------------------\n")
f:close()
return true
end
]]></event>
</mod>

 

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

Blz cara, eu não sei para que serve trade logs e acho que muitos que entrarem aqui também não vão saber, tem como você explicar melhor?

Vlw ae abraço

 

pronto, atualizado.

Link para o comentário
Compartilhar em outros sites

Queria uma ajudinha, eu gostaria de usar esse sistema pelo log em txt, porém queria que mudasse pra tipo:

Fizesse apenas o log se o item tiver o id x,y,z... entenderam?

 

com isso voce faz mais controles sobre os itens VIP, pq em meu server tem umas pessoas que doam, pegam os items e abre disputa...

Link para o comentário
Compartilhar em outros sites

Um sistema desse feito pelas sources não iria ter nenhuma diferença notável, pois sua execução não "pesa" muito no processamento e memória do servidor.

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

  • 10 months later...
  • 5 years later...
Em 31/05/2012 em 16:17, Vodkart disse:

Explicação:

 

Vocês sabem que os comandos que o GOD usa ficam salvos em um arquivo.txt certo?

Esse sistema é parecido, só que quando o jogador for trocar items pelo trade vão ficar salvo os IDS dos items que foram trocados e os nomes dos players.

 

 

 

 

1° Versão é feita pelo Banco de dados:

 

  Mostrar conteúdo oculto

 

obs: Eu só testei em servidor com Sqlite, não sei se vai funcionar para os demais como mysql.

 

 

Query:

 



CREATE TABLE players_trade (
	id	INTEGER NOT NULL,
	world_id INTEGER NOT NULL,
	player_id INTEGER NOT NULL,
	target_id INTEGER NOT NULL,
	player_items  INTEGER NOT NULL,
	target_items  INTEGER NOT NULL,
	date	 INTEGER NOT NULL,
PRIMARY KEY ( id )
);
 

 

 

TradeLogDB.xml

 



<?xml version="1.0" encoding="UTF-8"?>  
<mod name="Trade Log" version="1.0" author="Vodkart" contact="none.com" enabled="yes">  
<config name="TradeLog_func"><![CDATA[
function natural(number)
local n = number - math.floor(number)
return n >= 0.5 and math.ceil(number) or math.floor(number)
end
function containerItemsToString(cont)
  local s = ""
  for _ = 0, getContainerSize(cont) - 1 do
  local item = getContainerItem(cont, _)
  s = s..",".. item.itemid
  if isContainer(item.uid) and getContainerSize(item.uid) > 0 then
	 s = s..":1"..containerItemsToString(item.uid)
  else
	 s = s..":".. natural(getItemWeight(item.uid)/getItemWeightById(item.itemid))
  end
  end
  return s
end
]]></config>
<event type="login" name="TradeRegister" event="script"><![CDATA[
function onLogin(cid)
registerCreatureEvent(cid, "TradeLog")
return true
end]]></event>	  
<event type="tradeaccept" name="TradeLog" event="script"><![CDATA[
domodlib('TradeLog_func')
function onTradeAccept(cid, target, item, targetItem)
if (not isPlayer(cid)) or (not isPlayer(target)) then return false end
local items1,items2 = ""..item.itemid,""..targetItem.itemid
items1 = isContainer(item.uid) and getContainerSize(item.uid) > 0 and items1..":1"..containerItemsToString(item.uid) or items1 ..":".. natural(getItemWeight(item.uid)/getItemWeightById(item.itemid))
items2 = isContainer(targetItem.uid) and getContainerSize(targetItem.uid) > 0 and items2 ..":1"..containerItemsToString(targetItem.uid) or items2 ..":".. natural(getItemWeight(targetItem.uid)/getItemWeightById(targetItem.itemid))
db.executeQuery("INSERT INTO `players_trade` (`world_id`, `player_id`, `target_id`, `player_items`, `target_items`, `date`) VALUES ('".. getConfigValue("worldId") .."', '".. getPlayerGUID(cid) .."', '".. getPlayerGUID(target) .."', '".. items1 .."', '".. items2 .."', '".. os.time() .."');")
return true
end
]]></event>
</mod>
 

 

 

 

2° Versão é salvo em um arquivo.txt em data/logs

 

  Mostrar conteúdo oculto

 

TradeLog.xml

 



<?xml version="1.0" encoding="UTF-8"?>  
<mod name="Trade Log" version="1.0" author="Vodkart" contact="none.com" enabled="yes">  
<config name="TradeLog_func"><![CDATA[
function natural(number)
local n = number - math.floor(number)
return n >= 0.5 and math.ceil(number) or math.floor(number)
end
function containerItemsToString(cont)
  local s = ""
  for _ = 0, getContainerSize(cont) - 1 do
  local item = getContainerItem(cont, _)
  s = s..",".. item.itemid
  if isContainer(item.uid) and getContainerSize(item.uid) > 0 then
	 s = s..":1"..containerItemsToString(item.uid)
  else
	 s = s..":".. natural(getItemWeight(item.uid)/getItemWeightById(item.itemid))
  end
  end
  return s
end
]]></config>
<event type="login" name="TradeRegister" event="script"><![CDATA[
function onLogin(cid)
registerCreatureEvent(cid, "TradeLog")
return true
end]]></event>	  
<event type="tradeaccept" name="TradeLog" event="script"><![CDATA[
domodlib('TradeLog_func')
function onTradeAccept(cid, target, item, targetItem)
if (not isPlayer(cid)) or (not isPlayer(target)) then return false end
local items1,items2 = ""..item.itemid,""..targetItem.itemid
items1 = isContainer(item.uid) and getContainerSize(item.uid) > 0 and items1..":1"..containerItemsToString(item.uid) or items1 ..":".. natural(getItemWeight(item.uid)/getItemWeightById(item.itemid))
items2 = isContainer(targetItem.uid) and getContainerSize(targetItem.uid) > 0 and items2 ..":1"..containerItemsToString(targetItem.uid) or items2 ..":".. natural(getItemWeight(targetItem.uid)/getItemWeightById(targetItem.itemid))
f = io.open("data/logs/Trades.txt", "a+")
f:write("World: ".. getConfigValue("worldId") .." -  "..getPlayerName(cid).." Traded: [".. items1 .."] for [".. items2 .."] With Player "..getPlayerName(target)..". At " .. os.date("%d %B %Y - %X.", os.time()) .."\n\n----------------------------------------------------------\n")
f:close()
return true
end
]]></event>
</mod>
 

 

 

@Vodkart essa segunda versão tem q criar q pasta no logs ??

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...