Ir para conteúdo
Propaganda

blxr

Membro
  • Total de Posts

    8
  • Registro em

  • Última visita

1 Seguidor

Sobre blxr

Últimos Visitantes

177 visualizações

blxr's Achievements

Apprentice

Apprentice (3/14)

  • Conversation Starter Rara
  • One Year In
  • One Month Later
  • First Post
  • Dedicated

Emblemas Recentes

9

Reputação

  1. Coloca a pasta vcpkg na raiz do Disco Local C ou o que você estiver usando e abre um powershell no local da pasta vcpkg e executa o comando: .\vcpkg integrate install
  2. Você salva o storage no GM, não no player mutado setPlayerStorageValue(cid, 91828, ...) deveria ser no playerMuted Não existe onLogin reaplicando o mute O mute não é reaplicado com tempo restante, só enquanto online O código corrigido ficaria assim: local GMGroup = 6 local maxTimeMute = 60 * 24 * 360 -- até 360 dias local STORAGE_MUTE = 91828 local conditions = {} for i = 1, maxTimeMute do conditions[i] = createConditionObject(CONDITION_MUTED) setConditionParam(conditions[i], CONDITION_PARAM_TICKS, i * 60 * 1000) end function onSay(cid, words, param) if getPlayerGroupId(cid) < GMGroup then return true end if param == "" then doPlayerSendCancel(cid, "Use: !mute nome, tempo(em minutos)") return true end local sep = param:explode(",") local playerMuted = getPlayerByName(sep[1]) local timeMuted = tonumber(sep[2]) if not timeMuted or not conditions[timeMuted] then doPlayerSendCancel(cid, "Escolha um tempo de mute válido.") return true end if not isPlayer(playerMuted) then doPlayerSendCancel(cid, "O jogador precisa estar online para receber o mute.") return true end if getPlayerGroupId(playerMuted) >= getPlayerGroupId(cid) then doPlayerSendCancel(cid, "Você não pode mutar alguém com cargo igual ou maior.") return true end local endTime = os.time() + (timeMuted * 60) doAddCondition(playerMuted, conditions[timeMuted]) setPlayerStorageValue(playerMuted, STORAGE_MUTE, endTime) doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "Você aplicou mute de "..timeMuted.." minuto(s) em "..getPlayerName(playerMuted)..".") doPlayerSendTextMessage(playerMuted, MESSAGE_STATUS_DEFAULT, "Você foi mutado por "..timeMuted.." minuto(s).") return true end E no login.lua ou creaturescripts/onLogin teria que guardar essa info do storage, mais ou menos assim: local STORAGE_MUTE = 91828 function onLogin(cid) local muteTime = getPlayerStorageValue(cid, STORAGE_MUTE) if muteTime ~= -1 and muteTime > os.time() then local remaining = math.ceil((muteTime - os.time()) / 60) local condition = createConditionObject(CONDITION_MUTED) setConditionParam(condition, CONDITION_PARAM_TICKS, remaining * 60 * 1000) doAddCondition(cid, condition) doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "Você ainda está mutado por "..remaining.." minuto(s).") elseif muteTime ~= -1 then setPlayerStorageValue(cid, STORAGE_MUTE, -1) end return true end E teria que registrar o evento em creaturescripts.xml <event type="login" name="MuteLogin" script="login.lua"/>
  3. No TFS 0.3.6, a função doPlayerSetSpecialDescription() não altera corretamente o texto exibido ao olhar outro jogador. O look padrão do servidor continua sendo usado, ignorando essa descrição dinâmica. Para funcionar corretamente, o texto do look precisa ser gerado manualmente dentro do onLook e enviado com doPlayerSendTextMessage, cancelando o look padrão. Seu script corrigido ficaria assim (Testa e depois me fala se funcionou!) function getPlayerFrags(cid) local time = os.time() local times = {today = (time - 86400), week = (time - (7 * 86400))} local contents = {day = {}, week = {}, month = {}} local result = db.getResult( "SELECT pd.date 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 " .. "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 date = result:getDataInt("date") if date > times.today then table.insert(contents.day, date) elseif date > times.week then table.insert(contents.week, date) else table.insert(contents.month, date) end until not result:next() result:free() end return table.maxn(contents.day) + table.maxn(contents.week) + table.maxn(contents.month) end function onLogin(cid) registerCreatureEvent(cid, "fraglook") return true end function onLook(cid, thing, position, lookDistance) if not isPlayer(thing.uid) then return true end local frags = getPlayerFrags(thing.uid) local string = "" -- LOOK EM OUTRO JOGADOR if thing.uid ~= cid then string = "You see " .. getCreatureName(thing.uid) .. "." string = string .. " [Frags: " .. frags .. " - Deaths: " .. getPlayerDeaths(thing.uid) .. "]" doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string) return false end -- LOOK EM SI MESMO string = "You see yourself." if getPlayerFlagValue(cid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then string = string .. " You are " .. getPlayerGroupName(cid) .. "." elseif getPlayerVocation(cid) ~= 0 then string = string .. " You are " .. getPlayerVocationName(cid) .. "." else string = string .. " You have no vocation." end string = string .. " [Frags: " .. frags .. " - Deaths: " .. getPlayerDeaths(cid) .. "]" if getPlayerNameByGUID(getPlayerPartner(cid), false, false) ~= nil then string = string .. " You are " .. (getPlayerSex(cid) == 0 and "wife" or "husband") .. " of " .. getPlayerNameByGUID(getPlayerPartner(cid)) .. "." end if getPlayerGuildId(cid) > 0 then string = string .. " You are " .. (getPlayerGuildRank(cid) == "" and "a member" or getPlayerGuildRank(cid)) .. " of the " .. getPlayerGuildName(cid) if getPlayerGuildNick(cid) ~= "" then string = string .. " (" .. getPlayerGuildNick(cid) .. ")." else string = string .. "." end end if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then string = string .. "\nHealth: [" .. getCreatureHealth(cid) .. " / " .. getCreatureMaxHealth(cid) .. "]" string = string .. ", Mana: [" .. getCreatureMana(cid) .. " / " .. getCreatureMaxMana(cid) .. "]." string = string .. "\nIP: " .. doConvertIntegerToIp(getPlayerIp(cid)) .. "." end if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then string = string .. "\nPosition: [X:" .. position.x .. "] [Y:" .. position.y .. "] [Z:" .. position.z .. "]." end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string) return false end Registro do evento creaturescripts.xml <event type="look" name="FragLook" script="fraglook.lua"/> login.lua registerCreatureEvent(cid, "FragLook")
  4. Fala, galera! 👋 Depois de muito desenvolvimento, ajustes e testes, estou colocando meu site à venda. É um site completo, pensado para quem quer lançar ou profissionalizar um servidor PokéTibia/Tibia, sem depender de templates genéricos ou sistemas quebrados. 🧩 O que é esse site? É um site moderno e funcional, desenvolvido com foco em: ✔️ Performance ✔️ Organização ✔️ Visual profissional ✔️ Facilidade de manutenção ✔️ Experiência do jogador Ideal tanto para quem está começando quanto para quem já tem servidor rodando e quer subir o nível. ⚙️ Recursos gerais 👉 Layout moderno e responsivo 👉 Estrutura organizada (fácil de editar / expandir) 👉 Páginas essenciais prontas 👉 Pensado para PokéTibia / Tibia / OTS 👉 Código limpo e escalável 👉 Compatível com personalizações futuras (Sem gambiarra, sem sistema engessado) 💰 Planos e valores 💵 R$ 550,00 — Somente o site 💵 R$ 650,00 — Site + instalação 💵 R$ 850,00 — Site + instalação + personalização do seu jeito 🎨 O que entra na personalização? No plano completo (R$ 850,00), eu faço: ✔️ Ajustes visuais ao seu gosto ✔️ Cores, identidade e estilo do servidor ✔️ Pequenas mudanças estruturais ✔️ Adequação ao seu projeto Tudo alinhado com a ideia do seu server. 🛠️ Suporte 📅 30 dias de suporte inclusos em qualquer plano Suporte para: ✔️ Dúvidas ✔️ Ajustes básicos ✔️ Correções se necessário ⚠️ Informações importantes ❌ Produto digital ❌ Não possui devolução ✅ Você recebe exatamente o que foi descrito Transparência total 👍 🎯 Pra quem é esse site? Esse site é ideal para: ✔️ Donos de PokéTibia ✔️ Servidores que querem parecer profissionais ✔️ Quem cansou de sites genéricos ✔️ Quem quer algo pronto, bonito e funcional 🖼️ Imagens / Demonstração do Site Sistema de Notícias: Página Inicial: Página de Downloads: Página de Rankings: Página de Punições: Página de Mapas (Aparece o mapa ao clicar no mapa que deseja ver, exemplo da imagem, eu cliquei no "Johto"): Página de Clãs/Guilds: Character Page Login Page Account Page Tem outras milhares de páginas, se quiserem eu gravo um vídeo mostrando o site para visualizar melhor como é os efeitos/animações e etc. 📩 Interessado? Entre em contato comigo por mensagem privada ou responda aqui no tópico. Posso mostrar prints, explicar melhor cada parte e tirar dúvidas sem compromisso. Valeu, galera! 🚀🔥
  5. Obrigado pelo ótimo conteúdo! Pessoal, para quem não deseja substituir o client_options inteiro, irei mostrar como modificar somente o client_options para ajustar a opacidade dos efeitos. 🛠️ Passo 1: Editando o options.lua Abra o arquivo: /client_options/options.lua Encontre a linha: local defaultOptions = { Adicione a seguinte linha logo abaixo: gameOpacity = 100, 🛠️ Passo 2: Ajustando a Função setOption Ainda no mesmo arquivo, procure pela função: function setOption(key, value, force) Após o último elseif key dentro dessa função, adicione: elseif key == 'gameOpacity' then graphicsPanel:getChildById('gameOpacityLabel'):setText(tr('Efeitos e opacidade do missil: %s%%', value)) g_game.setEffectOpacity(value) end 🛠️ Passo 3: Editando o graphics.otui Abra o arquivo: /client_options/graphics.otui Adicione estas linhas: Label id: gameOpacityLabel margin-top: 6 @onSetup: | local value = modules.client_options.getOption('gameOpacity') self:setText(tr('Opacidade de Efeitos e Misseis: %s%%', value)) OptionScrollbar id: gameOpacity margin-top: 3 minimum: 0 maximum: 100
  6. Tem como me passar seu whatsapp ou discord? Mandei solicitação no discord, o meu é: luiz7filipe
×
  • Criar Novo...