Ir para conteúdo
  • Cadastre-se

[Resolvido] Sitema de FRAGS não funciona !


Posts Recomendados

Galera, por favor me ajudem, eu sei que tem muitas pessoas que tem o mesmo problema que eu no Styller Yourots 0.9, o sistema de frags não contam de maneira alguma, você pode matar quantos players quiser sem pegar frags, ja mudei e o config.lua, mudei o distro,mudei DLLS alterei a talkaction dos frags por outro e nada gente...

Link para o post
Compartilhar em outros sites

teste esse.

talkactions/scripts



local config = {

useFragHandler = getBooleanFromString(getConfigValue('useFragHandler')),

advancedFragList = getBooleanFromString(getConfigValue('advancedFragList'))

}


function onSay(cid, words, param, channel)

if(not config.useFragHandler) then

return false

end


local time = os.time()

local times = {today = (time - 86400), week = (time - (7 * 86400))}


local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC")

if(result:getID() ~= -1) then

repeat

local content = {

name = result:getDataString("name"),

level = result:getDataInt("level"),

date = result:getDataInt("date")

}

if(content.date > times.today) then

table.insert(contents.day, content)

elseif(content.date > times.week) then

table.insert(contents.week, content)

else

table.insert(contents.month, content)

end

until not result:next()

result:free()

end


local size = {

day = table.maxn(contents.day),

week = table.maxn(contents.week),

month = table.maxn(contents.month)

}

if(config.advancedFragList) then

local result = "Frags gained today: " .. size.day .. "."

if(size.day > 0) then

for _, content in ipairs(contents.day) do

result = result .. "\n* " .. os.date("%d %B %Y %X at ", content.date) .. content.name .. " on level " .. content.level

end


result = result .. "\n"

end


result = result .. "\nFrags gained this week: " .. (size.day + size.week) .. "."

if(size.week > 0) then

for _, content in ipairs(contents.week) do

result = result .. "\n* " .. os.date("%d %B %Y %X at ", content.date) .. content.name .. " on level " .. content.level

end


result = result .. "\n"

end


result = result .. "\nFrags gained this month: " .. (size.day + size.week + size.month) .. "."

if(size.month > 0) then

for _, content in ipairs(contents.month) do

result = result .. "\n* " .. os.date("%d %B %Y %X at ", content.date) .. content.name .. " on level " .. content.level

end


result = result .. "\n"

end


local skullEnd = getPlayerSkullEnd(cid)

if(skullEnd > 0) then

result = result .. "\nYour " .. (getCreatureSkullType(cid) == SKULL_RED and "red" or "black") .. " skull will expire at " .. os.date("%d %B %Y %X", skullEnd)

end


doPlayerPopupFYI(cid, result)

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You currently have " .. size.day .. " frags today, " .. (size.day + size.week) .. " this week and " .. (size.day + size.week + size.month) .. " this month.")

if(size.day > 0) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Last frag at " .. os.date("%d %B %Y %X", contents.day[1].date) .. " on level " .. contents.day[1].level .. " (" .. contents.day[1].name .. ").")

end


local skullEnd = getPlayerSkullEnd(cid)

if(skullEnd > 0) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your " .. (getCreatureSkullType(cid) == SKULL_RED and "red" or "black") .. " skull will expire at " .. os.date("%d %B %Y %X", skullEnd))

end

end


return true

end

talkaction.xml

<talkaction words="!frags" event="script" value="frags.lua"/>

Se não der avise.

Sign's


r6z42f.png
Feito por: Anne Motta

dxo51e.png
Feito por: Mim! kk ' Primeira Sign *-*




Link para o post
Compartilhar em outros sites

teste esse.

talkactions/scripts



local config = {

useFragHandler = getBooleanFromString(getConfigValue('useFragHandler')),

advancedFragList = getBooleanFromString(getConfigValue('advancedFragList'))

}


function onSay(cid, words, param, channel)

if(not config.useFragHandler) then

return false

end


local time = os.time()

local times = {today = (time - 86400), week = (time - (7 * 86400))}


local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC")

if(result:getID() ~= -1) then

repeat

local content = {

name = result:getDataString("name"),

level = result:getDataInt("level"),

date = result:getDataInt("date")

}

if(content.date > times.today) then

table.insert(contents.day, content)

elseif(content.date > times.week) then

table.insert(contents.week, content)

else

table.insert(contents.month, content)

end

until not result:next()

result:free()

end


local size = {

day = table.maxn(contents.day),

week = table.maxn(contents.week),

month = table.maxn(contents.month)

}

if(config.advancedFragList) then

local result = "Frags gained today: " .. size.day .. "."

if(size.day > 0) then

for _, content in ipairs(contents.day) do

result = result .. "\n* " .. os.date("%d %B %Y %X at ", content.date) .. content.name .. " on level " .. content.level

end


result = result .. "\n"

end


result = result .. "\nFrags gained this week: " .. (size.day + size.week) .. "."

if(size.week > 0) then

for _, content in ipairs(contents.week) do

result = result .. "\n* " .. os.date("%d %B %Y %X at ", content.date) .. content.name .. " on level " .. content.level

end


result = result .. "\n"

end


result = result .. "\nFrags gained this month: " .. (size.day + size.week + size.month) .. "."

if(size.month > 0) then

for _, content in ipairs(contents.month) do

result = result .. "\n* " .. os.date("%d %B %Y %X at ", content.date) .. content.name .. " on level " .. content.level

end


result = result .. "\n"

end


local skullEnd = getPlayerSkullEnd(cid)

if(skullEnd > 0) then

result = result .. "\nYour " .. (getCreatureSkullType(cid) == SKULL_RED and "red" or "black") .. " skull will expire at " .. os.date("%d %B %Y %X", skullEnd)

end


doPlayerPopupFYI(cid, result)

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You currently have " .. size.day .. " frags today, " .. (size.day + size.week) .. " this week and " .. (size.day + size.week + size.month) .. " this month.")

if(size.day > 0) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Last frag at " .. os.date("%d %B %Y %X", contents.day[1].date) .. " on level " .. contents.day[1].level .. " (" .. contents.day[1].name .. ").")

end


local skullEnd = getPlayerSkullEnd(cid)

if(skullEnd > 0) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your " .. (getCreatureSkullType(cid) == SKULL_RED and "red" or "black") .. " skull will expire at " .. os.date("%d %B %Y %X", skullEnd))

end

end


return true

end

talkaction.xml

<talkaction words="!frags" event="script" value="frags.lua"/>

Se não der avise.

Se não me engano isso é em creaturescripts, dá uma olhada lá e ver se você encontra algo de errado

Não deu certo o talkaction arius, entao thiago, o que eu posso olhar em creature script?

Link para o post
Compartilhar em outros sites

Eu já descobri qual foi o problema e já resolvi!!!

pra quem não sabe ou por acaso venha a procurar algo nesse tópico, sempre confira seu config.lua na parte

Código:

deathlistenabled = true

é muito babaca o erro, mais é isso galera, para quem estava queimando a cabeça com esse bug maldito

Link para o post
Compartilhar em outros sites
  • 1 month later...

Eu já descobri qual foi o problema e já resolvi!!!

pra quem não sabe ou por acaso venha a procurar algo nesse tópico, sempre confira seu config.lua na parte

Código:

deathlistenabled = true

é muito babaca o erro, mais é isso galera, para quem estava queimando a cabeça com esse bug maldito

GLORIA A DEUS O SALVADOR DA PATRIA, É TAO SIMPLES MAS PORQUE OS MALANDROS QUE DISPONIBILIZAM O OT DEIXA ISSO DESATIVADO, VOCES QUE TAO LENDO ISSO NAO SABEM QUANTOS ADMINS DE OTSERVER ESTAO PROCURANDO ESSA RESPOSTA.SE ALGUEM CRIAR UM POST DA OS CREDITOS PARA ESSE CARA, ELE MERECE!

VALEU AE "luiggiandreatta" :)

:)

:)

:)

Link para o post
Compartilhar em outros sites
  • 1 month later...
  • 6 months later...

SALVO CARA ! MUITISSIMO OBRIGADO S2

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por luanluciano93
      STYLLER OT - 2023 - TFS 1.5 (8.60)
       
      Olá pessoal, hoje venho apresentar meu projeto open para vocês. Sou muito fã do mapa STYLLER, sempre em horas vagas procurava joga-lo, para quem não conhece: é um servidor estilo baiak com mais RPG, e como tenho me interessado pelas engines 1.X, resolvi criar um projeto de servidor Styller usando o TFS 1.5 para versão 8.60. O projeto está sendo desenvolvido no github (projeto github) onde posto atualizações diárias (changelog). Vocês podem postar dúvidas, erros/bugs, dicas e qualquer outra coisa aqui no tópico ou criar um issue no github. Lembre-se de dar FOLLOW no projeto no github e SEGUIR o projeto aqui no fórum para acompanhar as atualizações.
      Informações do Servidor e Sistemas:
      Versão: 8.60 Engine: TFS 1.5 MillhioreBT Downgrade - Branch: main (Nov 11, 2023, 104 commits) Informações. Atualizações. Server Info:
      Dúvidas, erros, dicas e contribuições:
      Caso tenha dúvidas, ou queira resolver algum bug/erro, dar dicas para o projeto, ou também ajudar em sua construção, crie um issue / pull requests pelo github ou use esse tópico.
      Website compatível:
      ZnoteACC - ranch: v2 (Jul 10, 2022, 613 commits) Créditos:
      luanluciano93 GOD Bon (mapa yourots) MillhioreBT, Nekiro e TFS team (pela engine do servidor) leoloko12 (mapa styller) outros Download:
      Todos os arquivos, libs e executável (para windows) estão no repositório do projeto no github (que é onde eu atualizo constantemente), basta fazer o download lá e juntar com a primeira parte.
       
      - LINK GITHUB DO PROJETO STYLLER: https://github.com/luanluciano93/styller
       
      Clique em CODE e depois Download ZIP
       

       
      Imagens: 
       
       
       

    • Por FeeTads
      SALVE rapaziada do TK, esses dias vim pensando em novos scripts pro meu OT, e em um deles eu precisava que determinada area não contasse frag pro player que matasse outros, PORÉM eu precisava que os players que morressem nessa area ainda assim tivessem as penalidades da sua morte, procurei por ai, achei alguns scripts que apenas tiravam o SKULL e não realmente o FRAG do player.

      **script atualizado 22/10/2023** - melhorado e otimizado, levei o script pra puxar as infos por .lua / creatureScripts

      vou disponibilizar o code aqui, e o que fazer pra determinada area não contar frag.

      SOURCE OTX 2 / TFS 0.x, Funciona em TFS 1.x mudando as tags e ajeitando as sintaxes.

      vá em creatureevent.cpp

      procure por:
      else if(type == "preparedeath") _type = CREATURE_EVENT_PREPAREDEATH;
      Adiciona abaixo:
      else if(type == "nocountfrag") _type = CREATURE_EVENT_NOCOUNTFRAG;

      procure por:
      case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath";  
      Adicione abaixo: 
      case CREATURE_EVENT_NOCOUNTFRAG: return "noCountFragArea";

      procure por:
      case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList";
      Adicione abaixo:
      case CREATURE_EVENT_NOCOUNTFRAG: return "cid, target";

      agora no mesmo arquivo, vá até o final do arquivo e adicione essa função:
      uint32_t CreatureEvent::executeNoCountFragArea(Creature* creature, Creature* target) { //noCountFragArea(cid, target) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::ostringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; scriptstream << "local target = " << env->addThing(target) << std::endl; if(m_scriptData) scriptstream << *m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ std::ostringstream desc; desc << creature->getName(); env->setEvent(desc.str()); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); lua_pushnumber(L, env->addThing(target)); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::noCountFragArea] Call stack overflow." << std::endl; return 0; } }

      agora vá em creatureevent.h

      procure por:
      CREATURE_EVENT_PREPAREDEATH
      adicione abaixo:
      CREATURE_EVENT_NOCOUNTFRAG

      procure por:
      uint32_t executePrepareDeath(Creature* creature, DeathList deathList);
      Adicione abaixo:
      uint32_t executeNoCountFragArea(Creature* creature, Creature* target);

      agora vá em player.cpp

      procure por:
      bool Player::onKilledCreature(Creature* target, DeathEntry& entry)
      abaixo de:
      War_t enemy; if(targetPlayer->getEnemy(this, enemy)) { if(entry.isLast()) IOGuild::getInstance()->updateWar(enemy); entry.setWar(enemy); }
      Adicione o seguinte código:
      if (targetPlayer){ CreatureEventList killEvents = getCreatureEvents(CREATURE_EVENT_NOCOUNTFRAG); for (const auto &event : killEvents) { if (!event->executeNoCountFragArea(this, target)) { return true; } } }

      //

      Feito isso, tudo completo na sua source, agora é necessário adicionar o creaturescript dentro do servidor

      vá até creaturescripts/scripts
      crie um arquivo chamado, "noCountFragInArea.lua"
      e dentro dele cole o código:
       
      --[[ script feito por feetads / TibiaKing ]]-- --[[ discord: feetads / FeeTads#0246 ]]-- -- Add positions here for which you do not want to count frags local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, -- from = area superior esquerda / to = area inferior direita (formando um quadrado) } local onlyKillerInArea = false -- only killer need to be in area? function noCountFragArea(cid, target) if not isCreature(cid) or not isCreature(target) then return true end local posKiller = getPlayerPosition(cid) local posTarget = getPlayerPosition(target) for i = 1, #areas do local area = areas[i] if isInArea(posKiller, area.from, area.to) then if onlyKillerInArea then return false elseif isInArea(posTarget, area.from, area.to) then return false end end end return true end
      agora em creaturescripts.xml
      <event type="nocountfrag" name="fragarea" event="script" value="noCountFragInArea.lua"/>
      agora em creaturescripts/scripts/login.lua
       procure por OU semelhante a esse:
      registerCreatureEvent(cid, "AdvanceSave")
      e abaixo adicione:
      registerCreatureEvent(cid, "fragarea")

      //


      Agora tudo certo, quando quiser adiciona uma area que não pega frag, vá até o script e apenas coloque a area, igual o demonstrado no script

      Exemplo:
      local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, [2] = {from = {x = 1000, y = 1000, z = 7}, to = {x = 1100, y = 1100, z = 7}}, }
      assim somente colocando a area no script e abrindo o server ou dando /reload, já funcionará a area como não pegar frag.
      Esse sistema pode ser bom pra areas de pvp ativo, onde você ainda quer que o player que morrer perca os atributos, como se fosse uma morte normal, porém não conta frag pra quem matar.
      Bom pra sistemas tipo castle 48h (guild war), onde há diversas mortes e risco de pegar red, atrapalhando a war.

      Façam bom proveito dos scripts, e deixem os créditos no script rsrs

      **Eu fiz as alterações e o simples código por isso vim disponibilizar, créditos meus**
    • Por Deletera
      Atenção! Os arquivos disponibilizados abaixo são da versão 12.64!
      Para obter otserv 12.64+ atualizado com novas áreas e novos gráficos acesse o github oficial do projeto OTX: https://github.com/opentibiabr/otservbr-global
       
      Servidor feito especialmente para jogadores que gostam do Tibia Oldstyle,
      mas colocado na versao 12 com novas funcionalidades, mounts, outfits e itens.  
       
      Todos Outfits sao frees & Addons coletando itens
       
      PVP clássico, old school times
       
      Spells adaptadas a versao 8.60
       
      Mais de 50 quests na Teleport Room
       
      Tasks e Missions para explorar o mapa
       
      Raids automáticas com novos bosses
       
      Reward System desabilitado, loot tradicional (bem melhor assim, certo?)
       
      Áreas custom e inovadoras como Hogwarts
       
      Em resumo, o OT busca ser simples, resgatando a naturalidade do que era o baiak da versão 8.60 em 2009, mas com implementações 12x+
       
      ◄IMAGENS►
      ◄DATAPACK & DLLS►
      » OTX Baiak Styller 12.64 MediaFire (Scan)
       » OtservBR Dlls & Executável (Windows 64x)
      (Antes de rodar o OT verifique de usar a mesma database e configurar o login no config.lua)
       
      ◄CLIENTS►
      » Tibia Client 12.64 MediaFire (Scan)
      (Para conectar ao cliente 12 (localhost), acesse usando 127.0.0.1_client.exe, localizado na pasta bin.)
       
      ◄WEB►
      » [GesiorAcc] para Tibia 12.64 MediaFire (Scan)
      Instale o XAMP para rodar com a data base e site disponíveis
      (não se esquece de alterar o login e senha no config.lua, para o atual a senha do mysql está como "XIPA2")
       
      » [Data base] acc/email e senha: god/god MediaFire (Scan)
      O OT está configurado para aceitar acc no lugar de email (opcional) para usar as acc de testes é senha 123123
       
      ◄Créditos►
      Waldir Teixeira (Saruman/Deletera) &
       
    • Por Cat
      ÁGUA TRANSPARENTE NO TIBIA
       
      Amostra/teste:

       
      Download Tibia.otfi -> Arquivo necessário para ativar transparência no seu client.
      (coloque junto ao tibia.dat e tibia.spr)
      Tibia.otfi
       
      Para ativar a transparência nas versões 8.54 e 8.60 é necessário o uso de dll:
      https://github.com/SaiyansKing/Tibia-Extended-Client-Library
       
      Download Object Builder -> Programa usado para add sprites
      https://github.com/ottools/ObjectBuilder/releases/tag/v0.4.8
       
      Download Item Editor -> Usado para cadastrar as propriedades de itens novos e abrir no map editor.
      https://github.com/ottools/ItemEditor/releases/tag/v0.5.1
       
      Download Sprites
      Contém:
      - Sprites de piso d'água full ground + 1 estilo borda (recomendo usar todos como borda, tirar full ground)
      - Sprites borda água-barranco.
      - Sprites borda água-areia.
      - Sprites borda areia-barranco-água.
      - Sprites borda água solo.
      - Sprites cachoeira + quedas d'água versão leste/norte
      - Sprites água transparente versão córrego (12x)
      sprites transparentes.rar
       
       
      (Senha para abrir o arquivo: tibiaking)

       
    • Por fezeRa
      Eu queria saber se tem como diminuir o tempo de frags no server?
      Não é o tempo de red skull/white skull...
      É o tempo de frags mesmo, tipo se eu matar um cara agora, daqui 1 hora vai sair o frag dele, ou daqui 2 hora, etc, tem como mudar isso?
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo