Ir para conteúdo

Mateus Robeerto

Héroi
  • Registro em

  • Última visita

  1. Look for the author Roddet, he already made both versions work for TFS 0.3.6 and 0.4, very complete and with clean syntax. You should search for it on Otland. If you are using TFS 0.x, then yes: https://otland.net/threads/tfs-0-x-simple-autoloot-for-older-versions.283750/
  2. Mateus Robeerto reagiu a uma resposta no tópico: Gesior - Baiak-PvP 2020
  3. Using onStatsChange in TFS 1.x? That's completely incorrect — the proper way is to use onHealthChange and onManaChange. However, there is an alternative that doesn't require using two separate functions. It's working — I did it for OTG Global. Take a look at this: https://github.com/otg-br/global-11x/blob/main/data/scripts/custom_system_event/boosted_creature_system_full.lua#L192 @Under, dá uma olhada nesse sistema. O que eu fiz é bem diferente do seu, mas está funcionando 100%. Ele exibe monstros como estátuas, mostra informações de boost, porcentagem de XP e loot. Também envia mensagens com essas informações ao logar. Além disso, dá pra colocar em um piso com actionID, e quando o jogador pisa, aparece a mensagem ou executa um comando. Tudo está funcionando perfeitamente, inclusive o loot e a experiência. Se quiser, fique à vontade para dar uma olhada, adaptar para o seu GitHub ou até tornar público.
  4. Erimyth reagiu a uma resposta no tópico: TFS 1.4+ Guild System – Classic Style!
  5. Eu estava trabalhando neste sistema apenas por diversão, mas acabei gostando muito dele. Quem se lembra dos velhos dias do TFS 0.x, 0.3.6 e 0.4, quando você podia usar o comando !create guild name para convidar outros jogadores? Bons tempos! Decidi compartilhá-lo com a comunidade tibiaking. Está funcionando e foi testado na versão 1.4.2 (build 1098). Acredito que deve funcionar a partir da versão 1.3+ em diante. Aqui estão as imagens.. .Guild_System _ Classic_Style.lua
  6. elinardoslva começou a seguir Mateus Robeerto
  7. Mateus Robeerto postou uma resposta no tópico em Suporte Tibia OTServer
    local function doPlayerAddResets(player, count) local playerId = player:getId() local currentResets = db.storeQuery("SELECT resets FROM players WHERE id = " .. player:getGuid()) if currentResets then local newResets = result.getNumber(currentResets, "resets") + count db.query("UPDATE players SET resets = " .. newResets .. " WHERE id = " .. player:getGuid()) result.free(currentResets) else print("Erro ao obter os resets do jogador.") end end
  8. É bem simples e direto. Pegue o items.otb e o xml do servidor, coloque-os em data/860/. Depois, abra e selecione o SPR do cliente do servidor, edite conforme necessário, e pronto! Qualquer versão do RME abre esse mapa do Thunder normalmente, porém recomendo o OTAcademy.
  9. Black Frost21 reagiu a uma resposta no tópico: Teleport Problem
  10. Apresentarei o sistema da gamestore, semelhante ao do Canary/otservBrasil, que está funcionando perfeitamente com o TFS 1.x+. A gamestore foi testada com o TFS 1.4.2, utilizando o protocolo 1098. Basta clicar nos links abaixo para ver os GIFs de como funciona: Tibia client cip 1098. https://imgur.com/6GkEKYY OtClient v8 (Kondra ou OTAcademy). https://imgur.com/z1Mr9Lr OTClient com um módulo personalizado (também vou disponibilizá-lo gratuitamente). https://imgur.com/3wSwiba Para exibir as imagens in game, você precisa configurar seu site, seja Gesior, MyAcc ou Znote. Lembre-se de definir corretamente o local das imagens e verificar o config.lua. -- Store configuration storeImagesUrl = "http://localhost/images/store/" storeCoinsPacketSize = 25 Incluí o repositório com dois commits que exigem alterações na source e no Lua. O primeiro e o segundo commits trazem correções para entrega de itens, outfits premium, etc. 1 = https://github.com/Mateuzkl/forgottenserver-1.4.2-clean/commit/25907d1e472911f69a2dffb3cd73f599d0655d90 2 = https://github.com/Mateuzkl/forgottenserver-1.4.2-clean/commit/2c5aec16c6407035d4b515cfd594548496ca42f9 É só baixar store.rar e adicionar ao seu site, seja MyAcc, Gesior, etc. https://github.com/Mateuzkl/forgottenserver-1.4.2-clean/commit/2c5aec16c6407035d4b515cfd594548496ca42f9 module game_store.rar. https://github.com/Mateuzkl/forgottenserver-1.4.2-clean/blob/main/game_store.rar Fiz as alterações necessárias para o TFS 1.3+ Nekiro e agora está funcionando bem. Vou enviar o commit, então acompanhe. Boa sorte! Depois disso, você deve adicionar o otc feature.lua e incluír. g_game.enableFeature(GameIngameStore) g_game.enableFeature(GameIngameStoreServiceType) g_game.enableFeature(GameIngameStoreHighlights) commit tfs 1.3 + downgrade nekiro. https://github.com/Mateuzkl/TFS-1.5-Downgrades-8.60/commit/873dd0a98dbe4b82a556107f2aa95b8820a3a9c7 Aproveite! OBS: Alguém, mod ou administrador, não sei como adicionar GIFs neste fórum. Tentei adicionar e não apareceu nada, então coloquei apenas links. Alguém pode explicar como fazer isso?
  11. <!-- StepIn for multiple action IDs leading to the PVP arena --> <movevent event="StepIn" actionid="7400" script="arenaPVP.lua" /> <movevent event="StepIn" actionid="7401" script="arenaPVP.lua" /> <!-- StepIn for returning to the saved position --> <movevent event="StepIn" actionid="7402" script="backsavedposition.lua" /> arenaPVP.lua function onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if not player then return true end -- Save the player's current position to storage local playerPosition = player:getPosition() -- Save the exact X, Y, Z coordinates in player's storage player:setStorageValue(50001, playerPosition.x) -- Save X position player:setStorageValue(50002, playerPosition.y) -- Save Y position player:setStorageValue(50003, playerPosition.z) -- Save Z position -- Teleport the player to the PVP area local pvpPosition = Position(158, 122, 7) -- Coordinates of the PVP area player:teleportTo(pvpPosition) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) -- Send a welcome message player:sendTextMessage(MESSAGE_INFO_DESCR, "Welcome to the PVP area. Fight with honor!") return true end backsavedposition.lua function onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if not player then return true end -- Retrieve the player's original position from storage local x = player:getStorageValue(50001) local y = player:getStorageValue(50002) local z = player:getStorageValue(50003) -- Check if the position is valid (storage returns -1 if nothing was saved) if x == -1 or y == -1 or z == -1 then player:sendTextMessage(MESSAGE_STATUS_WARNING, "Error: No original position found.") return true end -- Increment Y by 1 to move the player down one tile y = y + 1 -- Create the corrected original position object using the stored values local originalPosition = Position(x, y, z) -- Teleport the player back to their adjusted original position player:teleportTo(originalPosition) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) return true end
  12. Mateus Robeerto postou uma resposta no tópico em Sprites
    Para quem quer sprites de todos os personagens da versão 13.21, estão aqui. É só baixar, escolher alguns e adicionar ao seu projeto. Boa sorte e seja feliz! https://github.com/EPuncker/1098extended
  13. É melhor baixar do GitHub, onde o Oen fez tudo pronto em um único revscript. Basta pegar, adicionar ao seu servidor em data/scripts e pronto. https://github.com/Oen44/TFS-Upgrade-System
  14. Eu recomendo que você baixe o otclient da Academy, é bem melhor do que o Kondra. Eu sei que o otclient da Mehah é mais atualizado sim. Tente seguir o que o L3K0T disse. Se não funcionar, vou me empenhar para resolver o caso e fazer com que funcione tanto o otclient da Academy quanto o da Mehah. Desista da minha base TFS que tem montaria e modal widow... e baixe a base da Sarah, muito melhor e mais atualizada. Ela possui montaria e suporta opcode através do config.lua do servidor para ativar a montaria, entre outras coisas. Vale a pena experimentar a base da Sarah!
  15. como ta tag XML?? local criticalConfig = { normal = { storage = 48913, damage = 100, chanceMultiplier = 3, effect = 54, text = "+BOOSTER!", textColor = 31, combatEffect = 255 }, danger = { storage = 48904, damage = 150, chanceMultiplier = 3, effect = 52, text = "DANGER!", textColor = 190, combatEffect = 255 } } function onCombat(cid, target) if isPlayer(cid) and isCreature(target) then local chance = math.random(1, 1000) local function applyCritical(criticalType) local config = criticalConfig[criticalType] local criticalChance = getPlayerStorageValue(cid, config.storage) or 0 print("Tentando aplicar crítico do tipo:", criticalType) -- Debug if chance <= (criticalChance * config.chanceMultiplier) then local combat = createCombatObject() if combat then print("Combat criado com sucesso") -- Debug else print("Erro ao criar combat") -- Debug return false end setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, config.combatEffect) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -config.damage, -config.damage, 0, 0) local result = doCombat(cid, combat, numberToVariant(target)) if result == RETURNVALUE_NOERROR then print("Combat executado com sucesso") -- Debug else print("Erro ao executar combat, código de retorno:", result) -- Debug end doSendAnimatedText(getCreaturePosition(target), config.text, config.textColor) doSendMagicEffect(getCreaturePosition(cid), config.effect) return true end return false end -- Tenta aplicar o crítico 'normal' e se falhar, tenta aplicar o 'danger' if not applyCritical('normal') then applyCritical('danger') end else print("Erro: cid não é jogador ou target não é criatura.") -- Debug end return true end XML <event type="combat" name="CriticalSam" script="criticalsam.lua"/>
  16. Eu só dei uma melhorada no script e limpei a sintaxe em LUA. local criticalConfig = { normal = { storage = 48913, damage = 100, chanceMultiplier = 3, effect = 54, text = "+BOOSTER!", textColor = 31, combatEffect = 255 }, danger = { storage = 48904, damage = 150, chanceMultiplier = 3, effect = 52, text = "DANGER!", textColor = 190, combatEffect = 255 } } function onCombat(cid, target) if isPlayer(cid) and isCreature(target) then local chance = math.random(1, 1000) local function applyCritical(criticalType) local config = criticalConfig[criticalType] local criticalChance = getPlayerStorageValue(cid, config.storage) or 0 if chance <= (criticalChance * config.chanceMultiplier) then local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, config.combatEffect) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -config.damage, -config.damage, 0, 0) doCombat(cid, combat, numberToVariant(target)) doSendAnimatedText(getCreaturePosition(target), config.text, config.textColor) doSendMagicEffect(getCreaturePosition(cid), config.effect) return true end return false end -- Tenta aplicar o crítico 'normal' e se falhar, tenta aplicar o 'danger' if not applyCritical('normal') then applyCritical('danger') end end return true end

Informação Importante

Confirmação de Termo