Postado Maio 31, 2012 12 anos 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 <?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 Junho 1, 2012 12 anos por Vodkart (veja o histórico de edições) [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Maio 31, 2012 12 anos 2º versão testada e aprovada...obrigado Vodkart por compartilhar conosco! # Regras Gerais - TibiaKing.com # Contato: augusto@tibiaking.comNão respondo dúvidas via MP.
Postado Maio 31, 2012 12 anos Autor Obrigado por testar a 2° versão vlw [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Maio 31, 2012 12 anos Reputei. Bom. Mas alguém poderia testar a 1ª versão? VEJA+ [OTServ] Verdades e Mentiras [10.41] Union RPG Server - by Sonkis & JimmyTwoShoes Mostrar conteúdo oculto old . [s
Postado Junho 1, 2012 12 anos Autor a primeira é só para ficar salvo no banco de dados desse jeito: a segunda fica no arquivo.txt assim Citar World: 0 - Devil Traded: [1988:1,8925:1,5919:1,7429:1] for [8852:1] With Player Vodk Arte. At 31 May 2012 - 11:08:05. ---------------------------------------------------------- World: 0 - Devil Traded: [1988:1,8925:1,5919:1,7429:1] for [1987:1,2160:26,2160:100,2160:100] With Player Vodk Arte. At 31 May 2012 - 11:51:02. ---------------------------------------------------------- [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.