Jump to content
underewarr

Sistema de Log Simples.

Recommended Posts

Como Modificar e criar novos logs?
Use uma função que salva o valor dos arquivos, assim você pode criar um sistema de log. Simples.
A maneira como você usa é tão grande quanto a sua imaginação.

 

Lua(LIB)

Please login or register to see this spoiler.

Share this post


Link to post
Share on other sites
5 horas atrás, XZero disse:

kkk não entendi, poderia ser mais especifico ?

@XZero

log ( "dados / logs / logins.log" , "Player" .. getPlayerName ( cid ) .. "logado no jogo." ) 

Vamos adicionar mais logs alem do nome do jogador

log ( "dados / logs / logins.log" , "Level" .. getPlayerLevel ( cid ) .. "Possui o level." ) 

na mesma linha 

 log ( "dados / logs / logins.log" , "Player" .. getPlayerName ( cid ) .. "logado no jogo." .. getPlayerLevel ( cid ) .. "Possui o level." ) 

Share this post


Link to post
Share on other sites
14 minutos atrás, underewarr disse:

@XZero

log ( "dados / logs / logins.log" , "Player" .. getPlayerName ( cid ) .. "logado no jogo." ) 

Vamos adicionar mais logs alem do nome do jogador

log ( "dados / logs / logins.log" , "Level" .. getPlayerLevel ( cid ) .. "Possui o level." ) 

na mesma linha 

 log ( "dados / logs / logins.log" , "Player" .. getPlayerName ( cid ) .. "logado no jogo." .. getPlayerLevel ( cid ) .. "Possui o level." ) 

Claro que eu sei disso, eu criei uma função:

Please login or register to see this spoiler.

Que salva logs dos players separadamente, eu só queria saber como consigo abrir esse log e editar, apagar, ou modificar no script, porque adicionar eu já sei!

Share this post


Link to post
Share on other sites
2 minutos atrás, XZero disse:

Claro que eu sei disso, eu criei uma função:

Please login or register to see this spoiler.

Você pdoe incluir outra função para ler dentro do jogo o log file, não entendi bem você quer administrar o log deletar ver etc ingame?
 

Share this post


Link to post
Share on other sites
2 horas atrás, underewarr disse:

Você pdoe incluir outra função para ler dentro do jogo o log file, não entendi bem você quer administrar o log deletar ver etc ingame?
 

As vezes quando o player reloga no meu ot perde algum item, não é sempre, mas acontece, o caso é,  eu consigo salvar os items de cada slot no log ao deslogar, porém quero que verifique ao logar,  caso falte alguma item, será devolvido automaticamente, ou seja eu quero saber como o script pode ler o que tem escrito no log e depois apagar para salvar um novo.

Share this post


Link to post
Share on other sites

Você pode sim verificar slots via movements.

mas acredito que esse sistema que voce quer fazer nao necessita de log mas daria para adicionar o log pela camada de evento onlogin.

 

aqui você pode verificar os slots.

local slotName = {"Head Slot", "Amulet Slot", "Backpack Slot", "Armor Slot", "Right Hand", "Left Hand", "Legs Slot", "Feet Slot", "Ring Slot", "Ammo Slot"}
local player = getPlayerByNameWildcard(param)
if isPlayer(player) == TRUE then
local text = getPlayerName(player).."'s Equipment: " 
for i=1, 10 do
text = text.."\n"
local item = getPlayerSlotItem(player, i)
if item.itemid > 0 then
if isContainer(item.uid) == TRUE then
text = text..slotName..": "..getItemNameById(item.itemid)..getItemsInContainer(item, 1)
else
text = text..slotName..": "..getItemNameById(item.itemid)
end
else
text = text..slotName..": Empty"
end
end
doShowTextDialog(cid, 6579, text)
else
   
doPlayerSendCancel(.. getPlayerLevel ( cid ) .. "Possui o level." ))
end
return TRUE
end

esse código deve retornar todos os equipamentos no log mas ele não vai salvar nem retornar o item quando o player relogar, me diga voce entende o suficiente para conseguir criar este código?

você só tem que configurar ao log de forma adequada.

Share this post


Link to post
Share on other sites
11 minutos atrás, underewarr disse:

Você pode sim verificar slots via movements.

mas acredito que esse sistema que voce quer fazer nao necessita de log mas daria para adicionar o log pela camada de evento onlogin.

 

aqui você pode verificar os slots.

local slotName = {"Head Slot", "Amulet Slot", "Backpack Slot", "Armor Slot", "Right Hand", "Left Hand", "Legs Slot", "Feet Slot", "Ring Slot", "Ammo Slot"}
local player = getPlayerByNameWildcard(param)
if isPlayer(player) == TRUE then
local text = getPlayerName(player).."'s Equipment: " 
for i=1, 10 do
text = text.."\n"
local item = getPlayerSlotItem(player, i)
if item.itemid > 0 then
if isContainer(item.uid) == TRUE then
text = text..slotName..": "..getItemNameById(item.itemid)..getItemsInContainer(item, 1)
else
text = text..slotName..": "..getItemNameById(item.itemid)
end
else
text = text..slotName..": Empty"
end
end
doShowTextDialog(cid, 6579, text)
else
   
doPlayerSendCancel(.. getPlayerLevel ( cid ) .. "Possui o level." ))
end
return TRUE
end

esse código deve retornar todos os equipamentos no log mas ele não vai salvar nem retornar o item quando o player relogar, me diga voce entende o suficiente para conseguir criar este código?

você só tem que configurar ao log de forma adequada.

Eu falo A e você entende Z, parece que eu estou conversando com um gringo que está usando o google tradutor, decha para la cara, vlw a intenção!!!

Share this post


Link to post
Share on other sites
4 minutos atrás, underewarr disse:

SUKA BLYAT

Alias já descobri como edita o log no script usando o:

io.open

:read

:write

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Yan Liima
      #Introdução
      Bom hoje estarei trazendo aqui o sistema de Ping feito pelo Mock, com uma pequena adaptação feita por mim para funcionar em TFS 0.4(talvez podendo funcionar em outras)
      Pois o que ele disponibilizou foi apenas para TFS 0.3.6 e nem foi muito utilizado pela comunidade. Muitos servidores daqui para download tem script no talk mas a lib está totalmente errada e não tem o code nas sources.
      Esse sistema tem varias utilizades, podendo usar o comando !ping para verificar seu ms ou até mesmo você por para kikar jogadores com ms muito alto...
      Se você não sabe o cliente já tem um sistema de ping, e getOtsystime é como os.time () + os.clock (), você tem ano, mês, dia, hora, minutos, segundos, milisegundos...
      Enfim chega de enrolação e vamos lá!
      Code para TFS 0.4 e OTX:
      Please login or register to see this spoiler.
       
      Prontinho, agora seu servidor está pronto para utilizar as funções de Ping. Seja criativo!
      Ahh você é daqueles que quer tudo na mão né? Aqui vai um talkactions para ver o ping.
       
      Em talkactions/scripts crie um arquivo chamado playerping.lua, cole isto dentro:
      -- Script by Yan Liima(Night for xtibia.com) function onSay(cid, words, param, channel) local ms = ping.CheckPing(cid) doPlayerSendTextMessage(cid,22,"Ping aproximado --> ["..ms.."].") return true end Em talkactions.xml
      <talkaction words="!ping" event="script" value="playerping.lua"/>  
    • By Poccnn
      Fala XTibianos!
      Vim disponibilizar e ensinar como usar a livraria xml em lua, desenvolvida por mim. 
       
      Ela foi desenvolvida para substituir a livraria padrão disponibilizada por lua para trabalhar com dados xml.
      Essa livraria não requer a dll-xml necessária para a livraria padrão lua.
       
      Aqui tem o tutorial criado por mim para demonstrar as funções e suas implementações da livraria luaxml.

      Please login or register to see this link.
       
      Vamos lá.
      Primeiro, a livraria: 
      Please login or register to see this spoiler.
       
      Obs. Os codigos estão codificados em utf8, converta para ansi antes de usa-los.
       
      É isso ae pessoal, espero que gostem; qualquer erro ou sugestão serão bem vindas. obrigado.
       
    • By Poccnn
      Hail Xtibianos.
       
      Trago a vós uma serie de funções que eu uso no meu servidor e que pode ser úteis ao seu.
      Lembrando que algumas funções podem fazer uso de uma livraria xml criado por mim e posta nesse tópico.
       
       
      Essa função tem por objetivo criar uma data formatada (00:00:00) de um intervalo de tempo.
       
      function intervalClockFormat(ini,fim) --[[( Marcryzius )]]--local ini,fim = tonumber(ini),tonumber(fim)if not(ini or fim)then return "error",print('function intervalClock erro: type de variaveis invalidas') endlocal tienpo = fim-ini-- existe o parametro de dia, mas não está sendo retornado (usado).local day,hour,minu,seco  = tienpo/60/60/23%30,math.floor(tienpo/60/60%23), math.floor(tienpo/60%60),math.floor(tienpo%60)    return (hour < 10 and "0"..hour or hour)..":"..(minu < 10 and "0"..minu or minu)..":"..(seco < 10 and "0"..seco or seco)endEx: print(intervalClockFormat(os.time(),os.time()+98)) >> 00:01:38print(intervalClockFormat(os.time(),os.time()+6598)) >> 01:49:58
      Essas funções tem por objetivo salvar as informações de uma determinada quest e saber se o player tem essa quest salva em seu histórico. 
      function saveQuestsInfor(uid,name,cid,other) --[[( Marcryzius )]]----[[    uid = Item.uid usado no bau(entre outros) para receber o item da Quest    name = nome do item dado ao player ou nome da quest    cid = identificacao do player    other = informacoes adicionais para serem salvas junto a quest]]--if not(db.executeQuery("SELECT * FROM `server_quests`;"))then -- caso a table não exista, será criada    db.executeQuery("CREATE TABLE `server_quests` (`uid` INTEGER, `name` VARCHAR(255), `name_player` VARCHAR(255), `pos` VARCHAR(255), `other` TEXT);")end-- caso o parametro uid seja numero, se pega a posição do item ou, caso não, se pega a posição do player.local other,pos2 = other or '',''local pos = type(uid) == 'number' and getThingPos(uid) or getCreaturePosition(cid)    pos2 = 'x='..pos.x..', y='..pos.y..', z='..pos.z        -- verifica se tudo está correto.    if not(type(name) == 'string') or not(tonumber(cid))then         return false, print('Funcao requer parametros: name,cid')     end        -- salva as informações na database.    db.executeQuery("INSERT INTO `server_quests` (`uid`, `name`, `name_player`,`pos`,`other`) VALUES ("..(uid or tonumber(pos.x..''..pos.y..''..pos.z))..",'"..name.."', '"..getCreatureName(cid).."','"..pos2.."','"..other.."');")    return trueendfunction getSaveQuestsInfor(uid,cid) --[[( Marcryzius )]]--local str = false    if(tonumber(uid))then        str = db.getResult("SELECT * FROM `server_quests` WHERE `uid` = '"..uid.."' AND `name_player` = ".. db.escapeString(getCreatureName(cid))..";")    elseif(type(uid) == 'string')then        str = db.getResult("SELECT * FROM `server_quests` WHERE `name_player` = " ..db.escapeString(getCreatureName(cid)).. " AND `name` = '"..uid.."';")    else        return false,print('getSaveQuestInfor: tipo de uid invalido > '..tostring(type(uid)))    end    return (str:getID() == -1) and true or false end  
      Essa função serve para por a primeira letra de cada palavra da 'msg' em maiúscula.
      function upperPrimer(msg) --[[( Marcryzius )]]--local txt = ''    for k in string.gmatch(msg,'%a+') do        if(#k > 1)then            txt = txt..' '..k:gsub("^%a", function(s) return s:upper() end)        else            txt = txt..' '..k        end    end    return txt:sub(2,-1)endEx:print(upperPrimer("toda primeira letra de cada palavra desse texto foi colocada em maiusculo")) >> Toda Primeira Letra De Cada Palavra Desse Texto Foi Colocada Em Maiusculo  
      Função criada para determinar o valor inteiro mais próximo de uma fração.
      function math.proxInteger(value) --[[( Marcryzius )]]-- local value = tonumber(value)    if not(value)then return 0,print('Function error: math.proxInteger() > valor => '..type(value)) end    return value-math.floor(value) < 0.5 and math.floor(value) or math.ceil(value)end  
      Essa função converte a 'string' em números e devolve a soma de todos os números.
      function getStoreString(str) --[[( Marcryzius )]]--local store = 0    if(type(str) == 'string')then        for pos = 1,#str do            store = store+str:sub(pos,pos):byte()        end    elseif(type(str) == 'number')then        return str    else        print('function getStoreString adverte: tipo de parametro invalido. ('..type(str)..')')    end    return storeendEx:print(getStoreString("lua")) >> 322  
      Pega o level necessário para usar a arma dentro do arquivo weapons.xml
      function getLevelNeedToWeaponById(itemid) --[[( Marcryzius )]]--local xfile = xml:load("data/weapons/weapons.xml"):find('%a+','id',itemid)    return tonumber(xfile and xfile.level) or 0end
      Essa função faz uma verificação se há um town em uma determinada área.
      function getTownInArea(pos, ranger) --[[( Marcryzius )]]--local ranger,townid,bloked = ranger or 200,1,{getTownId('Gods Island'),getTownId('Isle of Destiny')} -- towns suprimidos    while getTownName(townid) do    local get  = getTownTemplePosition(townid)        if not(isInArray(bloked,townid)) and ((pos.x >= get.x-ranger and pos.x <= get.x+ranger)and(pos.y >= get.y-ranger and pos.y <= get.y+ranger))then            return townid        else            townid = townid+1        end    end    return 0 --retorna 0 (zero) para servir como condição.end
      Pega o nome e o level do top
      function getTopLevel() --[[( Marcryzius )]]--local target,name,level = db.getResult("SELECT `name`, `level` FROM `players` WHERE `group_id` <= 2 ORDER BY 'level' DESC;"),"",0    if(target:getID() ~= -1) then         repeat        local glevel = target:getDataInt("level")                if(level < glevel)then                name,level = target:getDataString("name"),    glevel            end        until not(target:next())     end    target:free()    return name,levelend  
      Verifica se existe o nome de um player mesmo ele estando offline.
      function playerExistName(nome) --[[( Marcryzius )]]--local db = db.getResult("SELECT `name` FROM `players` WHERE `id` = " ..getPlayerGUIDByName(nome).. ";")    if not(db:getID() == -1) then        return db:getDataString("name")    end    return falseend  
      Retorna o tempo vigente apenas em segundos
      function HorasParaSegundos() --[[( Marcryzius )]]--    local hour,minu,second = tostring(os.date("%H:%M:%S")):match('(%d+)%d+)%d+)')    return ((tonumber(hour) or 0)*3600)+((tonumber(minu) or 0)*60)+secondend  
    • By marcelinhok
      como o titulo ja diz, alguem me ajuda a colocar meu ot tibia em % o hp e mp ? ele e ot lvl alto ai fica as macadas de vida. Queria saber se alguem pode me ajudar passo a passo a botar porcentagem.
    • By marcelinhok
      Então galera .

      Queria saber se alguém poder disponibiliza um script de relfect. Seria +/- assim um cara usa um ring e ao usar esse ring refletia 10% de dano da pessoa que esta atacando. Sera que alguém pode ajudar ?

      Id do item: 11387

      Agradeço desde e ja ! *-*-
×
×
  • Create New...