Ir para conteúdo

Heyron

Membro
  • Registro em

  • Última visita

Tudo que Heyron postou

  1. Agora em 2025 a CipSoft finalmente está planejando acrescentar esse sistema no Global, coisa que em 2014 o @xWhiteWolf já havia elaborado. Entretanto a Cip implementou uma melhoria no qual permite com que o jogador ative/desative o recurso de ataque direcional quando quiser através de uma opção no client. Em OT Server dá pra ativar/desativar o recurso através de talkaction.
  2. Sim, inclusive encontra até tutoriais no Youtube, é só buscar termos como "Uniform Server Gesior", ou etc.
  3. É alguma coisa envolvendo scripts da pasta creaturescripts.
  4. Xampp é opcional.. Tem também o Uniform Server, que é um ótimo programa e bem menos complexo.
  5. Heyron postou uma resposta no tópico em Anuncie seu OTServer
    Elysia OT (Global Full 8.60) IP: elysiaot-global.servegame.com ✔︎ Login pelo Account Manager 1/1, não temos site. ✔︎ Login zerado é Cast System. XP (Rates): Stages = Sim Experience = 50.0 Skill = 15.0 Magic = 5.0 Loot = 1.0 Spawn = 1.0 Protection Level: 30 ✔︎ Sem itens VIP. ✔︎ Premiação ao upar nível 20, 50 e 80. ✔︎ Itens iniciais por vocação. ✔︎ Free Bless até o level 50. ✔︎ Danos de spells balanceados. ✔︎ Sem fast attack ou ataque rápido (padrão 2seg). ✔︎ Sem itens infinitos, exceto munição de Paladin. Jogue agora! IP: elysiaot-global.servegame.com Versão: 8.60
  6. Em data/weapons/weapons.xml você deve inserir o código abaixo cada munição. swing = "true" As munições ficam no final do arquivo weapons.xml, portanto você deve inserir o código acima em cada ID de munição diferente, como por exemplo na Spear normal, Royal Spear, Power Bolt e etc.. O parâmetro responsável pela Assassin Star ficaria assim, por exemplo: <distance id="7368" level="80" event="function" swing="true" value="default"/> <!-- Assassin Star -->
  7. Se eu estou me propondo a pagar é porque já tentei de diversas formas, mas perdi a linha. Compilar sources que já tem o arquivo vcxproj é moleza, agora quero ver quando as sources só tem os arquivos de cabeçalho (.h) e código fonte (.cpp)
  8. Uso o Microsoft Visual 2019. Se alguém se propor a fazer um vídeo ensinando como compilar uma source no qual contem apenas arquivos .cpp e .h, eu pago.
  9. @Zedgast fica no items.xml e movements.xml apenas.
  10. É simples descobrir isso, dentro do items.xml veja como está o Sword Ring por exemplo.
  11. Heyron postou uma resposta no tópico em Suporte Tibia OTServer
    Para não ficar desigual com quem decide ou não adquirir a promotion, seria interessante um script que limita o level máximo de cada vocação (a promotion). Pena que o ChatGPT está fora do ar, se não poderia tentar solicitar um exemplo de script LUA.
  12. Heyron postou uma resposta no tópico em Suporte Tibia OTServer
    Nesse caso, você pode fazer um aumento gradativo conforme a promotion da vocação. Um breve exemplo: Sorcerer: gainhp="5" gainmana="5" Master Sorcerer: gainhp="7" gainmana="10" Epic Sorcerer: gainhp="9" gainmana="15" E assim vai.. Vale ressaltar que você tem total liberdade para alterar outros atributos que mudam de classe para classe, com ou sem promotion.
  13. Heyron postou uma resposta no tópico em Suporte Tibia OTServer
    Tem muito oque fazer não, chefe. Só alterando isso aqui mesmo: gainhp="5" gainmana="5"
  14. Heyron postou uma resposta no tópico em Suporte Tibia OTServer
    Tenta esse código: FONTE: Chat-GPT -- Função para filtrar a string local function filtrateString(str) if type(str) ~= "string" then return false end local _, first = string.find(str, "a ") local _, last = string.find(str, " ", first + 1) local _, second = string.find(str, "b ") return {str:sub(first + 1, last - 1), str:sub(second + 1)} end -- Tabelas para armazenar as caves exclusivas local caveExclusiva = { {pos = {x = 2321, y = 482, z = 7}, storage = 822081}, {pos = {x = 2324, y = 482, z = 7}, storage = 822082}, -- Adicione as demais caves exclusivas aqui } -- Verifica se a posição é uma cave exclusiva local function isCaveExclusiva(position) for i = 1, #caveExclusiva do if caveExclusiva[i].pos.x == position.x and caveExclusiva[i].pos.y == position.y and caveExclusiva[i].pos.z == position.z then return caveExclusiva[i] end end return nil end -- Função para checar a disponibilidade da cave local function checkCaveAvailability(cid, fromPosition, numerodacave) local storageGlobal = numerodacave + 900000 -- Filtra a string para obter o tempo restante de exaustão local remainingTime = tonumber(filtrateString(getGlobalStorageValue(storageGlobal))[2]) if remainingTime and remainingTime > os.time() then local currentTime = os.time() local timeDiff = os.difftime(remainingTime, currentTime) if timeDiff > 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, a Cave ["..numerodacave.."] não está disponível. Escolha outra CAVE ou aguarde até ela ser liberada.") return true end end local player = Player(cid) local isVIP = player:getPremiumDays() > 0 local exhaustionTime = 10800 -- Tempo de exaustão padrão para jogadores não VIP if isVIP then exhaustionTime = 12600 -- Tempo de exaustão para jogadores VIP end -- Restante do código para verificar a exaustão e permitir acesso à cave return false end -- Exemplo de uso local playerID = 123 -- ID do jogador local playerPosition = {x = 2321, y = 482, z = 7} -- Posição do jogador local caveNumber = 1 -- Número da cave checkCaveAvailability(playerID, playerPosition, caveNumber) Se der erro, tente esse outro: local function filtrateString(str) if type(str) ~= "string" then return false end local first, last = 0, 0 local second, final = 0, #str for i = 1, #str do if string.byte(str:sub(i,i)) == string.byte('a') then first = i + 2 for t = first, #str do if string.byte(str:sub(t,t)) == string.byte(' ') then last = t - 1 break end end end if string.byte(str:sub(i,i)) == string.byte('b') then second = i + 2 end end return {str:sub(first, last), str:sub(second, final)} end local function getPlayerHuntExhaustion(cid) local exhaustStorage = 13540 local exhaustionTime = 1800 -- Tempo de exaustão em segundos (padrão: 30 minutos) local lastTime = getPlayerStorageValue(cid, exhaustStorage) if lastTime and lastTime > os.time() then local remainingTime = lastTime - os.time() return remainingTime else setPlayerStorageValue(cid, exhaustStorage, os.time() + exhaustionTime) return 0 end end function onUse(cid, item, fromPosition, itemEx, toPosition) local playerLevel = getPlayerLevel(cid) local isVIP = false -- Defina como verdadeiro se o jogador for VIP local caveExclusiva = { {pos = {x = 2321, y = 482, z = 7}, storage = 822081}, {pos = {x = 2324, y = 482, z = 7}, storage = 822082}, -- Adicione as demais caves exclusivas aqui } local cave = nil for i = 1, #caveExclusiva do if caveExclusiva[i].pos.x == fromPosition.x and caveExclusiva[i].pos.y == fromPosition.y and caveExclusiva[i].pos.z == fromPosition.z then cave = caveExclusiva[i] break end end if not cave then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Para usar uma Cave Exclusiva, você precisa usar esse item na frente da porta da Cave Exclusiva.") return true end local storageGlobal = cave.storage local remainingTime = tonumber(filtrateString(getGlobalStorageValue(storageGlobal))[2]) if remainingTime and remainingTime > os.time() then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, a Cave ["..numerodacave.."] não está disponível. Escolha outra CAVE ou aguarde até ela ser liberada.") return true end local tempohunt = 0 if playerLevel > 500 then tempohunt = 5400 else tempohunt = 10800 end if isVIP then tempohunt = tempohunt + 1800 -- Adiciona 30 minutos extras para.
  15. Discord eu não tenho, mas se quiser entrar em contato por aqui mesmo via mensagem privada, a vontade.
  16. Sim, pois essa base no qual utilizo é a mesma publicada pelo @Fir3element, entretanto fiz melhorias nas sources. E esse TFS 0.4 Rev3996 é inferior ao TFS 0.4 3777. 3777 é mais estável e com menos bugs.
  17. Servidor totalmente limpo? Só se for a base do TFS 0.4 publicada pelo membro @Fir3element, no qual inclusive ele fez diversas melhorias nessa base e removeu bugs. Entretanto é versão 8.60. Se for do seu interesse, posso compartilhar com você. Essa base aqui é a oque utilizo, e é compatível com o antigo Dev-Cpp do Stian. DOWNLOAD: https://drive.google.com/file/d/11iQoazWVZdJT6HdU7JIvEM3tyPpyzQfP/view?usp=sharing SCAN: https://www.virustotal.com/gui/file/5336ef92d9935b0e47dc07cc7f87cac0719ef969524809144a847e73b276a5d8?nocache=1
  18. Heyron postou uma resposta no tópico em Suporte Tibia OTServer
    A proposta é interessante, mas vai muito de gosto. Eu também tenho o Styller Yurots como preferido, de preferência com EXP baixa e sem item infinito. Mas muitas pessoas preferem o oposto. Na época que eu abria OT, eu sempre atendia primeiramente aos meus gostos, pois eu também queria jogar meu próprio OT e se divertir, pois meu objetivo não era lucrar pra mim, e sim para pagar um host para manter o servidor funcionando.
  19. Achei um TFS 0.4 com suas melhorias e modificações no perfil Github do membro @Sekk, e parece ser a versão inicial do seu projeto de 2017. Essa versão é compatível com o clássico Dev-Cpp do Stian, não dá nenhum erro de compilação e mensagens de warning. Seria interessante você disponibilizar essa versão para download lá no seu tópico do TFS 0.4 by: Fir3element. Se quiser, aqui está: https://drive.google.com/file/d/1toNm0F1FXy8VOZMiQD_YPgejtb7alSel/view?usp=sharing Scan: https://www.virustotal.com/gui/file/fcc01a552d6357db9a32d70018d0fbad9392127da075477d569a8ec5374f6442?nocache=1
  20. A comunidade em si já morreu mano, se até mesmo o próprio global já morreu, quem dirá esses OTzinho. Mas no geral, é bom se espelhar nos 2 melhores servidores que estão consolidados no mercado, o PxG e o OTPokemon.
  21. Como conseguiu arrumar o Character List? Tem como falar oque fez, ou em qual arquivo das sources você alterou?
  22. @Fir3element mano, não sei oque está havendo, mas quando coloco o meu ip global no config.lua, o distro fecha na última etapa de por o servidor online. Em data/logs/admin fica constando esse erro: (Error - void ServicePort::open(IPAddressList, uint16_t)) NETWORK: O endereço solicitado não é válido no contexto Sendo que o IP em config.lua está correto: ip = "200.232.219.106" Agora com o ip V4 normal "192.168.15.4", funciona de boa. Alguma sugestão?
  23. Link arrumado. Em breve mais atualizações.

Informação Importante

Confirmação de Termo