Tudo que Underewar postou
-
Cooldown spells poketibia
Não é possivel te ajudar com essas informações, informe o servidor/base que você usa e se possível o link para download caso esteja disponível.
-
Transformar script em action
Parece que você está tentando aplicar um bônus multiplicador de dano com base no nível do jogador. Eu percebi que você está usando getPlayerDamageMultiplier(pid) para obter o multiplicador de dano do jogador, mas você mencionou que getDamageMultiplier está retornando nil. Troque a sua função add bonus por essa e faça o teste. local function addBonuses(pid) local bonus = getInfo(pid) if bonus and bonus.damage_percent then local currentMultiplier = getPlayerDamageMultiplier(pid) or 1.0 setPlayerDamageMultiplier(pid, currentMultiplier + (bonus.damage_percent / 100.0)) local mensagem = "[SISTEMA DE BÔNUS]\nVocê recebeu um bônus de +" .. bonus.damage_percent .. "% de dano." doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, mensagem) doRemoveItem(item.uid, 1) end end Em todo caso essa função getPlayerDamageMultiplier deveria existir nesse contexto, caso não exista você pode adicionar na suas funções existentes ou criar um arquivo separado. damage_multiplier_lib.lua DamageMultiplierLib = {} -- Function to get the player's damage multiplier function DamageMultiplierLib.getPlayerDamageMultiplier(playerId) local player = Player(playerId) if player then return player:getDamageMultiplier() end return nil end -- Function to set the player's damage multiplier function DamageMultiplierLib.setPlayerDamageMultiplier(playerId, value) local player = Player(playerId) if player then player:setDamageMultiplier(value) end end -- Return the library table return DamageMultiplierLib Se você adicionar essa função a cima então atualizei o seu script na função addBonus -- local DamageMultiplierLib = require("damage_multiplier_lib") LEMBRE-SE DE IMPORTAR A LIB A CIMA PARA FUNCIONA CORRETAMENTE! -- Your existing code local function addBonuses(playerId) local bonus = getInfo(playerId) if bonus and bonus.damage_percent then local currentMultiplier = DamageMultiplierLib.getPlayerDamageMultiplier(playerId) or 1.0 DamageMultiplierLib.setPlayerDamageMultiplier(playerId, currentMultiplier + (bonus.damage_percent / 100.0)) local mensagem = "[SISTEMA DE BÔNUS]\nVocê recebeu um bônus de +" .. bonus.damage_percent .. "% de dano." doPlayerSendTextMessage(playerId, MESSAGE_EVENT_ADVANCE, mensagem) doRemoveItem(item.uid, 1) end end Não testei.
- Faço Logo e faço forum para seu tibia!
- SHINOBI KINGDOM ONLINE: VENHA NESSA JORNADA NINJA CONOSCO!
-
PXG Reversal, Structs e Offsets
Não é tão simples acho que você deveria começar por aqui. Game Hacking Tutorials - Guided Hacking Inicialmente você pode começar com cheat engine procurando offsets mais simples como textos ou inteiros, no entanto futuramente pode altera e começar usar o IDA para passar instruções diretamente via HEX. Não é um processo muito facil, existem DLLS disponiveis que podem facilitar no entanto se você não tem nem um conhecimento sobre Engenharia reversa, dedveria procurar alguns tutorial com cheat engine bem faceis. Enfim é um longo caminho espero que consiga algum recurso util no link acima.
-
[Tutorial Definitivo] Como usar ExtendedOpcodes OTC (Client-Side | Server-Side) + JSON Encoder
Também demorei a entender na verdade porque pegamos de fontes ruims e acaba que mais confundi do que ajuda a entender, no entanto esse simples sistema garante ao scripter a possiblidade de criar novas funcionalidades usando como base! Fico feliz que tenha ajudado a entender melhor sobre o assunto!
- [Servidor] Hellgrave Exodus BR (TFS 1.4) v1.7.0(10.98)
-
[Tutorial Definitivo] Como usar ExtendedOpcodes OTC (Client-Side | Server-Side) + JSON Encoder
Tutorial: Criando um Sistema de Enviar efeito com OTClient. Neste tutorial, vamos criar um sistema simples de Enviar efeito no OTClient. Este sistema permitirá que os jogadores ativem um efeito especial e vejam uma janela ao clicar em um botão específico. Pré-requisitos: Ambiente de Desenvolvimento: Certifique-se de ter um ambiente de desenvolvimento configurado com OTClient Edubart. Conhecimento Básico em Lua: Familiaridade com a linguagem de script Lua. Passo 1: Estrutura do projeto Organize seu projeto conforme abaixo: OTC / MODS Passo 2: Criando a Interface Gráfica (OTUI) game_pass.otui Repare que em nossa interface nossos botões de ação entram no caminho do module e iniciam uma função que esta disponivel em nosso game_pass.lua (Client-Side) Passo 3: Criando funções Client-Side Agora com as funções criada podemos chamar elas de acordo com a necessidade em nosso arquivo de interface. Por exemplo a função effect() que foi chamada em nosso arquivo de interface.otui agora é criada aqui para mostrar o efeito ao jogador. game_pass.lua Passo 4: Registrando o novo Mod Agora podemos registrar e iniciar nosso modulo usando o arquivo de configuração game_pass.otmod Feito isso ja podemos ver nosso module no client e enviar opcodes através do gameprotocol e também receber o buffer para manipular os dados podemos utilizar : protocolGame:sendExtendedOpcode(14, "1") Basicamente oque estamos fazendo é armazenando o valor 1 na variaval 14 do ExtendedOpcode e futuramente podemos recuperar esse valor. Recuperamos esse valor em nosso server side data/creatuerscript/otc/game_pass.lua Verificando se o opcode é 14 se for 14 então fazemos x ação. Show, tendo isso em mente para que o nosso client-side consiga receber com sucesso o efeito enviado ao jogador então utilizamos Passo 5: Criando o Server-side responsavel por enviar o efeito correto ao jogador dependendo do opcode selecionado no nosso cliente. data/creaturescripts/otc/game_pass.lua Passo 6: Registrando o evento para evitar erros futuros! Para que tudo funcione corretamente sem erros é necessário registrar o evento no creaturescript.xml / login.lua creaturescript.xml <event type="extendedopcode" name="GamePass" script="otc/game_pass.lua" /> login.lua player:registerEvent("GamePass") Ótimo agora ao selecionar o menu recompensa o jogador recebera um efeito. Espero que tenha ficado claro como usar Opcodes/ExetendedOpcodes. Arquivos usados no tutorrial: OTC MODULE game_pass.rar Creaturescript game_pass.lua Vi muitos tutoriais desatualizado então resolvi trazer esse! Reparem que nesse caso passamos creature como parametro do buffer isso porque precisamos enviar um efeito no player. Melhorando a formatação com JSON Encoder
-
[10.98] [TFS1.2] PokeFans - Poketibia com Level System, Boost, Status e Painel de Moves + PokeAdons
Da pra usar como base e melhorar os sistemas!
-
Players clonando itens
Basicamente isso é devido ao script responsável por atualizar o jogador na tfs podem ser encontrados aqui forgottenserver/src/iologindata.cpp at master · thetibiaking/forgottenserver (github.com) Você pode adicionar unique ids + storage nos items do servidor e verificar se foi clonado no entanto isso não vai ser nada eficiente, o melhor a se fazer é corrigir oque esta derrubando o servidor. Attacks ddos não conseguem desligar seu servidor, se quiser saber mais sobre ddos ou proteção de uma olhada aqui. [Linux] Proteção contra DDOS usando Módulo Dos_Evasive do Apache - Tutoriais Infraestrutura & Proteção - TibiaKing - Tudo sobre Tibia, OTServ e Bots!} Como o @FeeTads em casos mais avançados você pode usar o gdb. Como você disse o save acontece quando o personagem reloga e quando o server cai ele pega o ultimo save assim possibilitando o clone.
-
[Oferta de Scripts] Ajuda gratuita para desenvolvimento de OTServer - Envie seus pedidos!"
Não entendi seu pedido pode me explicar melhor ?
-
[TFS 1.5 - 8.60] STYLLER OT - 2023
@luanluciano93
-
[Oferta de Scripts] Ajuda gratuita para desenvolvimento de OTServer - Envie seus pedidos!"
Aqui esta. ---Config local conf = { maxSlotCount = 1, ignoredIds = {} } --End function choose(...) --- Function by mock. local arg = {...} return arg[math.random(1, #arg)] end if not getItemAttack then function getItemAttack(uid) return getItemAttribute(uid, 'attack') end function getItemDefense(uid) return getItemAttribute(uid, 'defense') end end local function isArmor(uid) -- Function by Mock the bear. if (getItemInfo(uid.itemid).armor ~= 0) and (getItemWeaponType(uid.uid) == 0) then return true end return false end local function isWeapon(uid) -- Function by Mock the bear. uid = uid or 0 local f = getItemWeaponType(uid) if f == 1 or f == 2 or f == 3 then return true end return false end local function isShield(uid) -- Function by Mock the bear. uid = uid or 0 if getItemWeaponType(uid) == 4 then return true end return false end local function isBow(uid) -- Function by Mock the bear. uid = uid or 0 if getItemWeaponType(uid) == 5 and not isItemStackable(uid) then return true end return false end function onUse(cid, item, fromPosition, itemEx, toPosition) -- Script by mock the bear (MTB) if item.uid == 0 or item.itemid == 0 then return false end toPosition.stackpos = 255 if item.uid == 0 or item.itemid == 0 then return false end toPosition.stackpos = 255 -- Check if the vocation is 4 (Paladin) or 5 (Knight) if getPlayerVocation(cid) ~= 4 and getPlayerVocation(cid) ~= 5 then doPlayerSendTextMessage(cid, 24, "Only Paladins and Knights can use this item.") return true end if isInArray(conf.ignoredIds, itemEx.itemid) or (not getItemWeaponType(itemEx.uid) or getItemWeaponType(itemEx.uid) > 5) or (getItemWeaponType(itemEx.uid) == 0 and not isArmor(itemEx)) or itemEx.itemid == 0 or itemEx.type > 1 or isItemStackable(itemEx.uid) then doPlayerSendTextMessage(cid, 24, "You can't open a slot on this item.") return true end if isCreature(itemEx.uid) then return false end local nam = getItemName(itemEx.uid) function getper() local n = 1 for i = 1, 10 do n = n + math.random(0, 10) if n < 8 * i then break end end return n end function getSlotCount(nam) local c = 0 for _ in nam:gmatch('%[(.-)%]') do c = c + 1 end return c end if getSlotCount(nam) < conf.maxSlotCount then local l = choose('hp') local p = getper() doSendMagicEffect(toPosition, 30) nam = nam .. ' [' .. l .. '.+' .. p .. '%]' doSendAnimatedText(toPosition, l .. ' ' .. p .. '%', 120) doItemSetAttribute(itemEx.uid, 'name', nam) doRemoveItem(item.uid, 1) else doPlayerSendTextMessage(cid, 24, "You can't open a slot on this item.") end return true end
- [Oferta de Scripts] Ajuda gratuita para desenvolvimento de OTServer - Envie seus pedidos!"
-
[Oferta de Scripts] Ajuda gratuita para desenvolvimento de OTServer - Envie seus pedidos!"
Claro se possivel deixe a referencia da passiva atual.
-
(Resolvido)HELP House Doors TFS 0.4
Movido para a area correta mais atenção na proxima. Acho que você esta com problemas no RME na hora de cadastrar casas então você pode configurar portas diretamente no seu RME data/ClientVersion/Walls.xml Configure as portas corretamente e use F5 apartir disso deve ser possivel inserir houseids nas portas normalmente. Pelo que vejo não ha problemas no sistemas de portas no servidor.
-
[Oferta de Scripts] Ajuda gratuita para desenvolvimento de OTServer - Envie seus pedidos!"
Até onde eu sei os sons estão no cliente/server e não temos acesso ao código fonte do cliente então pegamos endereços e manipulamos, seria necessário uma dll ou alterar com ida ou outro software novos sounds no client da cip. No server side apenas referenciamos os sons ja configurados. Por não usar canary base eu imagino que se você utilizar o otcv8 ou mehah você não vai ter os sons disponiveis, isso porque não é server based e sim client based. Não existem muitas ferramentas para o client 13. Mas existe uma api capaz de manipular dados, o repositorio oficial esta desatualizado mas você encontra outros repositorios atualizados no github. https://github.com/jo3bingham/TibiaAPI Realmente não sei te dizer ao certo eu não uso atualmente nem um servidor com base canary e estou por fora de muitos updates do client 13x.
-
Socorro (Onde fica area pedidos e suporte) .Dps que mudou nao conseguir achar mais !
Se não estou enganado agora é aqui Suporte & Pedidos - TibiaKing - Tudo sobre Tibia, OTServ e Bots!
-
[CUSTOM][ANDROID]860] Dragon Ball Universe
Pela descrição parece ser mto divertido!
-
[Recrutamento] Road to Laugh Tale
Legal! Boa sorte com o projeto.
- Erro AutoLoot
- [TFS 1.3] Otg Server - 11x / Otcv8 / Otc Menah / 12.40 (BASE CLEAN)
- [TibiaKing] TFS 1.5 Downgrade 8.60
-
Imbuement System 8.60
Seria melhor adaptar o script em questão!
-
Servidor TFS 1.3 Versão 8.6 com site Gesior
https://github.com/thetibiaking/ttk-tfs-downgrade-8.60