Ir para conteúdo
  • Cadastre-se

Wakon

Héroi
  • Total de itens

    3181
  • Registro em

  • Última visita

  • Dias Ganhos

    26

Histórico de Curtidas

  1. Você Tentou
    Wakon recebeu reputação de davidhakitori em Preciso de um script com o sistema de soltar duas magias, e pode alterar o tempo e o local (X e Y)   
    Esta é uma mensagem automática! Este tópico foi movido para a área correta.
    Pedimos que você leia as regras do fórum.
     
  2. Gostei
    Wakon deu reputação a Anderson Sacani em [Revscripts][Spell] Sword Attack - Metin2   
    Boa tarde, eu estava de bobeira e criei uma magia com base em uma skill do Metin2. A magia se chama Sword Attack.
    Essa magia dá dano físico em uma pequena área à sua frente e também aplica o efeito de paralyze em seus inimigos.
    Essa magia possui um sistema de nível, então quanto maior o nível da magia, maior será o dano, maior será a probabilidade de paralizar o inimigo e maior será o gasto de mana.
    Testado hoje 17/11/2023 na versão mais atual do Canary
     
    Esse é o script:
     
    local config = { --[[ * addManaSpentSystem: In Metin2, there is no magic level system based on spent mana points, commonly known as addManaSpent. If you want the magic to increase the player's magic level, leave this option as true. * limitSkillCombatLevel: In Metin2, the maximum combat level with swords that a player can reach is 90; however, in Tibia, there is no such limit. This option is used to restrict the maximum damage that the magic will deal. * damageBasedOnSkillOnly: In Metin2, the damage of spells is solely based on the player's sword skill. In Tibia, however, the damage may also include the weapon's attack. * isDamageBasedOnSwords: In Metin2, only swords exist. In Tibia, there are swords, axes, and clubs. ]] addManaSpentSystem = false, limitSkillCombatLevel = true, damageBasedOnSkillOnly = true, isDamageBasedOnSwords = true, } local combat = Combat() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) combat:setArea(createCombatArea(AREA_WAVE6, AREADIAGONAL_WAVE6)) function onGetFormulaValues(player, skill, attack, factor) local spellLevel = player:getSpellLevelById(SPELL_SWORD_ATTACK) local formula = spellLevel >= 4 and 25.333 or spellLevel >= 3 and 19.6 or spellLevel >= 2 and 15.333 or 9.333 if config.isDamageBasedOnSwords then skill = player:getSkillLevel(SKILL_SWORD) or 1 end if config.limitSkillCombatLevel then if skill > 90 then skill = 90 end end local damage = formula * skill * attack * 0.0175 if config.damageBasedOnSkillOnly then damage = formula * skill end return -damage, -damage end combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") local spell = Spell("instant") function spell.onCastSpell(creature, var) local player = Player(creature) local spellLevel = player:getSpellLevelById(SPELL_SWORD_ATTACK) local mana = spellLevel >= 4 and 190 or spellLevel >= 3 and 138 or spellLevel >= 2 and 100 or 46 if player:getMana() < mana then player:sendCancelMessage("Not enough mana.") return false end player:addMana(-mana) if config.addManaSpentSystem then player:addManaSpent(mana) end local paralyzeChance = spellLevel >= 4 and 30 or spellLevel >= 3 and 23 or spellLevel >= 2 and 18 or 10 local targets = combat:getTargets(creature, var) for _, target in ipairs(targets) do if target:isCreature() then local condition = Condition(CONDITION_PARALYZE) condition:setParameter(CONDITION_PARAM_TICKS, 20000) condition:setFormula(-0.9, 0, -0.9, 0) if math.random(1, 100) <= paralyzeChance then target:addCondition(condition) target:say("OH, I'M SLOW!", TALKTYPE_MONSTER_SAY) end end end return true end spell:group("attack") spell:name("Sword Attack") spell:words("exori ico immo") spell:needDirection(true) spell:cooldown(20 * 1000) spell:groupCooldown(1 * 1000) spell:needWeapon(true) spell:needLearn(true) spell:vocation("knight;true", "elite knight;true") spell:register()  

    E aqui estão dois novos métodos que deverão adicionar à biblioteca para funcionar:
     
    SPELL_SWORD_ATTACK = 599961 function Player.getSpellLevelById(self, spellId) if self:isPlayer() then local storage = self:getStorageValue(spellId) local minValue, maxValue = 1, 4 if storage then storage = math.min(math.max(storage, minValue), maxValue) return storage else error("Invalid spellId in Player.getSpellLevelById.") end end error("Invalid player in Player.getSpellLevelById.") end function Player.setSpellLevelById(self, spellId, value) if self:isPlayer() then local minValue, maxValue = 1, 4 if value <= minValue then value = minValue elseif value >= maxValue then value = maxValue end self:setStorageValue(spellId, value) else error("Invalid player in Player.setSpellLevelById.") end end  
  3. Curtir
    Wakon deu reputação a Underewar em [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

     
     
  4. Curtir
    Wakon recebeu reputação de brunei em MENSAGEM QUANDO LOGAR   
    Vá em "Data/creaturescripts/scripts", abra o arquivo login.lua e abaixo de function onLogin(cid), adicione:
    doPlayerPopupFYI(cid, "Double EXP ativa!")  
  5. Obrigado
    Wakon recebeu reputação de FeeTads em (Resolvido)Chance de aplicar Condition no Inimigo com item!   
    @Maniaco, testa ai, fiz umas alterações no script do @FeeTads:
    local percent = 30 --- Chance de Aplicar Condition local exhaustStorage = 2353255 -- use a mesma em todos os scripts para não ter conditions do mesmo estilo aplicando ao mesmo tempo ou use diferentes storages em cada script para permitir várias conditions diferentes no mesmo target, e cuidado para n usar em outros sistemas para n causar interferência. local ticks = 20 -- quantidade de vezes que vai aplicar a condition local ticksDelay = 1000 -- tempo entre os ticks em milissegundos local minDmg, maxDmg = 5000, 10000 local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) local function apply_condition(target, count) if isCreature(target) then --caso o target morra, acaba o condition local dano = math.ceil(math.random(minDmg, maxDmg)) doCreatureAddHealth(target, -dano) doSendAnimatedText(getCreaturePos(target), "-"..dano, 180) if count > 0 then count = count - 1 addEvent(apply_condition, ticksDelay, target, count) end end return true end function onUseWeapon(cid, var) local target = getCreatureTarget(cid) if isCreature(target) and getCreatureStorage(target, exhaustStorage) - os.time() < 1 then local position1 = getThingPosition(target) if percent >= math.random(1, 100) then doSendMagicEffect(position1, 5) doCreatureSetStorage(target, exhaustStorage, os.time() + ticks) apply_condition(target, ticks) end end return doCombat(cid, combat, var) end  
  6. Obrigado
    Wakon recebeu reputação de FeeTads em (Resolvido)Chance de aplicar Condition no Inimigo com item!   
    @Maniaco, tenta o seguinte, coloca essa função:
    doTargetCombatHealth(nil, target, COMBAT_FIREDAMAGE, -minDmg, -maxDmg, 0xFF) No lugar dessa:
    doCreatureAddHealth(target, -dano) E remove essas linhas:
    local dano = math.ceil(math.random(minDmg, maxDmg)) doSendAnimatedText(getCreaturePos(target), "-"..dano, 180) Ai pra trocar o tipo é só alterar no lugar de COMBAT_FIREDAMAGE, geralmente você encontra os tipos em data/lib/000-constant.lua.
  7. Obrigado
    Wakon recebeu reputação de katumblo em (Resolvido)ERROS: luaGetThingPosition E luaAddEvent   
    @katumblo, o da sakura provavelmente está dando erro quando o alvo morre antes de terminar os hits, testa assim:

    O segundo erro acho que é nessa parte aqui:
     
    addEvent(onCastSpell2, 200, parameters) Está iniciando um evento chamando uma função que não existe(onCastSpell2), tenta remover ou trocar para onCastSpell1 para ver qual fica do jeito que você quer.
  8. Obrigado
    Wakon recebeu reputação de Maniaco em (Resolvido)Chance de aplicar Condition no Inimigo com item!   
    @Maniaco, tenta o seguinte, coloca essa função:
    doTargetCombatHealth(nil, target, COMBAT_FIREDAMAGE, -minDmg, -maxDmg, 0xFF) No lugar dessa:
    doCreatureAddHealth(target, -dano) E remove essas linhas:
    local dano = math.ceil(math.random(minDmg, maxDmg)) doSendAnimatedText(getCreaturePos(target), "-"..dano, 180) Ai pra trocar o tipo é só alterar no lugar de COMBAT_FIREDAMAGE, geralmente você encontra os tipos em data/lib/000-constant.lua.
  9. Obrigado
    Wakon recebeu reputação de katumblo em (Resolvido)(LuaInterface::luaDoPlayerSendChannelMessage) Player not found   
    @katumblo, tenta assim:
     
    doPlayerSendChannelMessage(cid, "", "Mensagem...", TALKTYPE_CHANNEL_W, id_do_channel)  
  10. Gostei
    Wakon recebeu reputação de katumblo em (Resolvido)(LuaInterface::luaDoPlayerSendChannelMessage) Player not found   
    E ai, @katumblo, acho que o problema é que está faltando parâmetros nessa função que está gerando o erro, pelo menos no tfs 0.4 ela espera 5 parâmetros:
     
    doPlayerSendChannelMessage(cid, author, message, SpeakClasses, channel)  
    Nesse cenário eu acho que seria melhor usar a função doPlayerSendTextMessage(cid, MessageClasses, message) ou a função doPlayerSendCancel(cid, message).
    As definições para o segundo parâmetro da função doPlayerSendTextMessage você geralmente encontra em "data/lib/000-constant.lua", pesquisando por MESSAGE_TYPES.
  11. Gostei
    Wakon recebeu reputação de Maniaco em (Resolvido)Chance de aplicar Condition no Inimigo com item!   
    @Maniaco, testa ai, fiz umas alterações no script do @FeeTads:
    local percent = 30 --- Chance de Aplicar Condition local exhaustStorage = 2353255 -- use a mesma em todos os scripts para não ter conditions do mesmo estilo aplicando ao mesmo tempo ou use diferentes storages em cada script para permitir várias conditions diferentes no mesmo target, e cuidado para n usar em outros sistemas para n causar interferência. local ticks = 20 -- quantidade de vezes que vai aplicar a condition local ticksDelay = 1000 -- tempo entre os ticks em milissegundos local minDmg, maxDmg = 5000, 10000 local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) local function apply_condition(target, count) if isCreature(target) then --caso o target morra, acaba o condition local dano = math.ceil(math.random(minDmg, maxDmg)) doCreatureAddHealth(target, -dano) doSendAnimatedText(getCreaturePos(target), "-"..dano, 180) if count > 0 then count = count - 1 addEvent(apply_condition, ticksDelay, target, count) end end return true end function onUseWeapon(cid, var) local target = getCreatureTarget(cid) if isCreature(target) and getCreatureStorage(target, exhaustStorage) - os.time() < 1 then local position1 = getThingPosition(target) if percent >= math.random(1, 100) then doSendMagicEffect(position1, 5) doCreatureSetStorage(target, exhaustStorage, os.time() + ticks) apply_condition(target, ticks) end end return doCombat(cid, combat, var) end  
  12. Curtir
    Wakon deu reputação a FeeTads em (Resolvido)Porta que abre com X skill   
    script perfeito para que ele precisa, porém um adendo, caso ele utilize, não esqueça de mudar os "and" pra "or".
    and significa E, ou seja, skill sword E axe E club, necessita dos 3 pra abrir.
    colocando OR, qualquer uma que seja maior que o estipulado, ja confere
    não sei dizer ao certo se funciona assim, mas creio que cada verificação necessita do parametro, ex:
    if getPlayerSkill(cid, SKILL_SWORD) >= 15 and getPlayerSkill(cid, SKILL_AXE) >= 15 and getPlayerSkill(cid, SKILL_CLUB) >= 15 then  
    creio que só "getPlayerSkill(cid, SKILL_SWORD)" retorna algum boolean
  13. Gostei
    Wakon recebeu reputação de BrunoWots em Modificar Client, Ajuda!   
    A única maneira de customizar o client do Tibia é editando pelo Hex Editor, creio eu.
    Para isso você pode utilizar o XVI32: 
    http://www.handshake.de/user/chmaas/delphi/download/xvi32.zip
     
    1 - Abra o XVI32, clique em File/Open... e selecione o executável do Tibia.
    2 - Aperte CTRL + F, selecione Text String e coloque o que você quer editar ( Exemplo: Magic Level )
    3 - Ai quando encontrar você tem que substituir as letras (Exemplo: Magia Level), para apagar o Level você deve apertar espaço, ou trocar o valor da esquerda na tabela de Hexadecimal por 00.
     
    Cuidados:
    Não pode deletar NADA, absolutamente NADA, se você apertar backspace e deletar algum character, vai bugar e o cliente não vai abrir mais!
    Você só pode substituir as letras, não pode dar um tamanho a mais, como não pode deletar não pode aumentar também!
    Exemplo: Magic Level para Magia do Personagem, vai bugar o cliente!
     
    É isso, tem um Tibia 8.60 meu que eu traduzi, se quiser tirar algumas ideias, apesar que as novas versões tem certas limitações se não me engano!
    http://www.tibiaking.com/forum/topic/51473-cliente-860-traduzido/
  14. Gostei
    Wakon recebeu reputação de DaPYuumii em Utilizando Scripts no MageBot   
    Fala ai galera, hoje respondendo um membro, vi que tem uma função no MageBot que pouca gente conhece(eu mesmo descobri agora) e que permite a utilização de scripts ".lua".
    OBS: Aparentemente ela funciona somente a partir da versão 10.31!
    Para ativar basta marcar a opção "Scripts" no seu MageBot:

    Ao marcar irá aparecer isso no cliente:

     
    Algumas observações:
    Para ativar/desativar os scripts basta clicar nas opções disponíveis na HUD. Para mudar a localização da HUD dos Scripts você segura o mouse no @ e arrasta para o local desejado. Para atualizar a lista de scripts aperte F10.   É isso, espero que gostem.   Se der algum Bug nos scripts, troque por esses: Download:
    http://www.mediafire.com/download/8ag560p1o8kbvtc/Scripts.rar
    Scan:
    https://www.virustotal.com/pt/file/95703ee4f49ade916add3e32c986833c94a76144c2e98a286dd749a7579138a3/analysis/1425779903/
  15. Gostei
    Wakon recebeu reputação de Sipidripisipin em Dragon Ball Evolution + Source (Linux Ubuntu 12.04 e Windows)   
    Parabéns, seu tópico de conteúdo foi aprovado!
    Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
    Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.
     
  16. Gostei
    Wakon deu reputação a luanluciano93 em [TFS 1.5 - 8.60] STYLLER OT - 2023   
    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: 
     
     
     

  17. Gostei
    Wakon recebeu reputação de Hoshi em Quero script de ao matar pokemon aparecer teleport   
    Em "Data/creaturescripts/scripts", copie e cole um arquivo.lua e renomeie para deathTP.lua, apague tudo e cole:
    local t = { tpId = 1387, -- ID do teleport. tpNew = {x = 1057, y = 1057, z = 7}, -- Local onde irá aparecer o teleport. tpPos = {x = 1059, y = 1059, z = 7}, -- Local para onde o teleport irá levar. monster = "rattata", -- Nome do monstro(pokémon/normal), coloque em letra minúscula. timeRemove = 5 -- Tempo para remover o teleport em segundos. } function onKill(cid, target) local function removeTeleport(position) position.stackpos = 1 if (getThingfromPos(position).itemid == t.tpId) then doRemoveItem(getThingfromPos(position).uid) doSendMagicEffect(t.tpNew, 13) end return true end if (isMonster(target) and string.lower(getCreatureName(target)) == t.monster) then doCreateTeleport(t.tpId, t.tpPos, t.tpNew) doCreatureSay(target, "Você tem ".. t.timeRemove .." segundos para entrar no teleport.", TALKTYPE_ORANGE_1, 0, 0, t.tpNew) addEvent(removeTeleport, t.timeRemove * 1000, t.tpNew) end return true end Em "Data/creaturescripts", abra o creaturescripts.xml e adicione:
    <event type="kill" name="deathTP" script="deathTP.lua"/> Novamente em "Data/creaturescripts/scripts", no arquivo login.lua, adicione:
    registerCreatureEvent(cid, "deathTP") Se der algum problema, me avise.
  18. Obrigado
    Wakon recebeu reputação de LeoTK em (Resolvido)SetPlayerStorageValue(cid, Storage, +1) [RESOLVIDO]   
    setPlayerStorageValue(cid, storage, getPlayerStorageValue(cid, storage) + 1)
  19. Gostei
    Wakon deu reputação a FlameArcixt em Remeres Map Editor (3.3) Em grupo (LIVE)   
    ??
    A muito tempo eu procuro um Remere's map editor com a opção Live funcional (Mapear em grupo), no dia (28/02/2021) o membro @WooX  me apresentou esse Editor que possui essa opção funcional, hoje venho compartilhar aqui no Tibiaking, Mesmo que não seja relevante.
    ⛔ Não vou ensinar a instalação, pois é igual em todos os editor, e já existem vários tutoriais de instalação no TibiaKing. ⛔
     
    ? Passo 1: Baixando/Usando Radmin (Necessário para quem não consegue abrir as portas do roteador/modem) ?
    ? Passo 2: Hosteando uma partida no Remere's Map Editor ?
    ? Passo 3: Entrando na live de alguém ?
     Demonstração em ação (Ignorem a musica) 
    ? DEMONSTRAÇÂO ?
     
    ⚠️ DOWNLOAD REMERES MAP EDITOR 3.3: LINK ⚠️
    ⚠️ DOWNLOAD RADMIN: LINK ⚠️
     
     
     
  20. Gostei
    Wakon deu reputação a Tottin em Sistema de Estoque para NPC's.   
    Explicação do Sistema
     
    Recentemente foi levantada uma ideia de Sistema no Discord da Academia de Programação: 
    O sistema consiste em dar maior liberdade pro mercado e tirar a parte monótona dos NPCS que basicamente sempre vendem/compram tudo ao mesmo preço, assim ficando muito longe da realidade de 1 verdadeiro vendedor.
    A ideia é que o NPC venda produtos com base no que ele tenha em estoque, logo para ele vender 1 Blusa ele 1° irá precisar comprá-la de alguém.
    Exemplificando:
    O NPC só irá vender aquilo que comprar, se ele comprar 1 Blusa ele irá disponibilizar para vender 1 Blusa, se ele comprar 7 Blusas, ele irá disponibilizar pra vender 7 Blusas, ao acabar elas, o seu estoque fica vazio e ele deixa de vender até comprar mais.
    O preço que o NPC paga pelo seus produtos é baseado na quantidade de seu estoque, e o valor que ele cobra ao vender os produtos é definido previamente em 1 configuração.
    Exemplo: Quanto + item do mesmo produto o NPC tiver, + barato ele irá pagar nos mesmos, visto que ele já possui 1 estoque grande e na teoria esse produto não é um produto que possui 1 saída muito fácil. Ao mesmo tempo, quanto menor a quantidade de 1 mesmo produto em seu estoque, mais caro ele irá pagar, já que seu estoque sobre aquele produto é pequeno, o que indica que: Ou ele é muito raro, ou ele vende muito fácil, por isso o NPC irá demonstrar + interesse por ele.
    O preço que o NPC cobra é definido previamente e pode ser alterado sempre que desejar.

    Abaixo, o preço de 1 Pearl Shield que o NPC não possui em estoque:
     

    E agora, após o NPC ter comprado 10 Shields do mesmo:


    Enfim, agora que o sistema já foi previamente explicado, vamos a instalação:

    1º Vá para data/lib/ e crie 1 arquivo chamado npc_system.lua, nele você irá adicionar o seguinte código:
     

    2º Agora vá para  data/npcs, crie 1 arquivo chamado: negociante.xml, nele você irá adicionar o seguinte código:
     
    3º Agora vá para data/npcs/scripts, crie 1 arquivo chamado: negociante.lua, nele você irá adicionar o seguinte código:
     
    Instalação finalizada, as áreas configuráveis do sistema estão informadas na lib.
                            Créditos:
    Academia de Programação: Por ter levantado a ideia do sistema.
    @Endless: Por ter ajudado em uma questão de lógica.
    E a mim por ter feito. (Eu acho).

                   Informações adicionais:
    -> O sistema foi testado e não apresentou problemas, porém se vierem a encontrar falhas, favor reportar para que eu possa manter o tópico atualizado/corrigido.
    -> Eu faço correções no sistema caso esteja errado, mas não faço adaptações pro seu servidor. Caso queira variações do sistema, favor enviar seu pedido no discord da Academia de Programação, ou em meu privado: Admin#9865.
  21. Gostei
    Wakon deu reputação a Warzinhuw em ? OTC StoneDrake UI by Shiva - [Free Release]   
    Olá,
    Gostaria de escrever um prefácio, cortesia de um amigo conhecido aqui como Verticos, retratando um pouco da história e da origem, para que saibam o que estão recebendo e porquê.
     
    Há um tempo, criei a GUI para um cliente chamado Tinkz que pagou uma porção do preço de antemão, mantivemos uma ativa comunicação durante o processo de criação. Concordei com ele em enviar algumas partes da interface conforme fui as finalizando, para que ele pudesse já começar a implementar e codificar, pois sei o quão tedioso esse processo costuma ser. Ele me retornou esse favor não me respondendo mais assim que ele estava com todos os arquivos que queria em mãos. Alegadamente, ele foi e vendeu copias do layout em outras comunidades do OT e recebeu muito mais do que seu ‘investimento’ inicial. Desisti de vender o layout já que o cliente original me deu um golpe e Verticos ofereceu me recompensar por isso.
     
    Assim, ele me disse que posso compartilhar publicamente se quisesse. Então por quê não fiz isso antes?
     
    Sei que muitas pessoas estavam esperando por algo assim. Espero que isso agrade o dia de alguém.
    E gostaria de agradecer Verticos novamente por tornar isso possível, de forma alguma eu conseguiria compartilhar tudo isso de graça.
     

    A interface foi criada para ser uma versão um pouco mais estilosa e refinada do mesmo tema da interface do Tibia que todos conhecemos, a versão 7.X. Isso deve parecer familiar, mas novo.
    Tenha em mente que essa interface foi desenvolvida para implementação no OTCliente, mas pode ser usado para qualquer outra finalidade como: website, outro jogo, etc.
     
    Esse pack de interfaces contém apenas imagens e instruções para ajudar na implementação do layout, mas você mesmo terá que fazer isso. Seria muito legal se alguém publicasse uma versão publicamente desenvolvido e disponível para todos os usuários do OTClient, se não, acho que vão ter que pagar para alguns programadores fazerem isso.
    Pessoalmente, não tenho tempo para fazer isso mas posso ajudar se você ficar travado em algum ponto e se tiver uma branch publica para que eu possa contribuir. Ou, poste aqui sobre isso.
    Tem várias coisas uteis nesse pack mesmo para aqueles que só querem simplesmente mudar o visual de algumas coisas em seu client. Por exemplo, alguns ícones de ‘condition’ atualizados (Aqueles que você só espera encontrar em um servidor 7.X). 
     

     
    A interface foi originalmente feita com alguns tons de marrom, mas mais tarde no processo, mais e mais tons desse marrom foram neutralizados então temos um clássico tema de “pedra”.
     
    O layout é flexível e vem com inúmeras peças para possam decidir como usá-las. A combinação deve permitir que seja criado vários setups que combinam com cada gosto. (No exemplo abaixo, o resultado deve ser obtido através de código e não modificando as imagens):
     

     
    Diversos cabeçalhos e bordas de janelas para customizar ainda mais:

     
    Nem preciso dizer, o layout poderia se beneficiar de uma mudança na fonte, mas nem todo mundo está preparado para deixar pra traz o bom e antigo Verdana, então o Vernada foi usado como referencia na maior parte do tempo durante a criação do layout, mas segue aqui uma referência de qualquer forma. Mais informações no ‘readme’.

     
     
     
     

    Mirror 1
     
     Leia o arquivo Readme.txt para mais detalhes úteis.
    Aproveite!
     
    Crétidos: Shiva Shadowsong - (eu apenas traduzi para ele)
    Post orignial: ? OTC StoneDrake UI by Shiva - [Free Release] | OTLand
  22. Gostei
    Wakon deu reputação a Cat em (Novo) Remere's Map Editor 3.7.0   
    REMERE'S MAP EDITOR V3.7
    Suporta versão 10.98. Para versões superiores (12x) use: 
    https://tibiaking.com/forums/topic/101204-otservbr-nulled-otg-rme-map-editor-370-versão-tibia-12-paletas-atualizadas-2020/
     
     
    Créditos: Mignari
    Post Oficial: https://github.com/hjnilsson/rme/releases/tag/v3.7
     
    Novidades:
    Replace on Selected Area menu. c6eb001 Welcome dialog improvements. 0beaa2a Use tab on Position toolbar. ac2dd10 Save minimap export directory in configs. 34567ed Tooltips performance optimization. b4c26bd New creatures for extensions. 6aceb3c Scale factor for high dpi support. ee81d8f Bugs Fixados:
    Fix minimap export crash. cb7c45c Fix ghost selected items in the Browse Field. b2516b8 Fix search result sort. eb9478d Fix Teleport with 'Open Door' option. b4c26bd Fix XMLs syntax. 43d559f  
     
    Downloads
    • RME.zip
    • RME_Winx64_3.7.exe
    • RME_Win_3_7.exe
    • RME_x64.zip
     
    • Source code (zip)
    • Source code (tar.gz)
     
     
  23. Gostei
    Wakon deu reputação a EddyHavoc em Linguagem dos Orcs   
    A Linguagem Orc
    A Linguagem Orc é muito antiga no Tibia, acredita-se que surgiu em Rookgaard em 17 de Março de 2000. Um fato curioso é que com o passar dos tempos aparentemente até mesmo os próprios Orcs foram deixando de falar esta linguagem, ao menos conosco.
    Podemos encontrar bastante informações sobre esta língua em Rookgaard, existem livros escritos e NPCs que podemos conversar usando esta linguagem. Ela pode ser útil para conseguir até mesmo alguns benefícios na ilha.
     
    Abaixo irei citar algumas traduções da linguagem orc para o inglês.
     
    Traduções
    Palavra aprendidas no Livro chamado "My Travels" encontrado na Academia de Rookgaard, acredita-se que este livro foi escrito pela Amber:
    charach -> hi
     
    Palavras aprendidas diretamente com a Amber:
    burp -> no
    mok -> yes
    pixo -> arrow
     
    Palavras aprendidas com o Blind Orc
    Ikem -> I 
    goshak -> Buy
    Porak -> Weapons
    Bata -> Armors and Helmets
    Dora -> Shield
     
    Porak (Weapons):
    Charcha -> Sabre
    Burka -> Short Sword
    Burka Bata -> Sword
    Batuk -> Bow
     
    Bata (Armos and Helmets):
    Aka Bora -> Leather Armor
    Tulak Bora-> Studded Armor
    Hakhak -> Hatchet
    Grofa -> Studded Helmet
     
    Dora (Shields):
    Donga -> Brass Shield
     
    Outras palavras:
    aka -> leather
    ba -> what
    burp -> no
    buta -> stupid
    futchi -> bye
    humak -> human
    ikem -> I
    klamuk -> unknown insult (noun)
    maruk -> you
    nixda -> not enough gold (em alemão é algo como "nichts da" = "nothing there")
    pashak -> sell
    rambo -> thank? or friend?
    ta -> this
    tefar -> bunch or 10 (but orcs can only count to 5, so it's unlikely)
    tulak -> studded (this word is not used in studded helmet)
    ul -> for
    zambo -> thank? or friend?
     
    Palavras encontradas em livros escrito na linguagem dos Orcs próximo a Bear Room Quest:
    5 5 5 5 2 -> 22 (na linguagem orc os números vão até 5)
    arash -> ?
    bana -> destroy? kill?
    batash -> ?
    Booz -> ?
    bota -> ?
    ferut -> ?
    gort -> ?
    karak -> ?
    karakim -> ?
    karek -> ?
    kiskesh -> ?
    mora -> ?
    Omark -> ?
    ouk -> ?
    taka -> ?
    utash -> ?
     
    Palavras encontradas em notas penduradas nas paredes:
    daem -> ?
    desmet -> ?
    irkm -> ?
     
    Exemplo de Negociação com o Blind Orc
    Iniciando a conversa com o Blind Orc sem ser na linguagem Orc:
    (Ele não irá negociar com você se você não falar na linguagem Orc)
    - Hi.
    - Buta humak! -> Stupid human!
    Iniciando a conversa na linguagem Orc:
    Charach. -> Hi.
    Ikem Charach maruk. -> I greet you.
    Negociando:
    Ikem goshak. -> I buy.
    Ikem pashak porak, bata, dora. Ba goshak maruk? -> I sell weapons, armors/helmets, shields. What buying you?
    Negociando Armas:
    Goshak porak. -> Buy weapon.
    Ikem pashak charcha, burka, burka bata, hakhak. Ba goshak maruk? -> I sell sabre, short sword, sword, hatchet. What buying you?
    Negociando Armaduras e Capacetes:
    Goshak bata. -> Buy armor/helmet.
    Ikem pashak aka bora, tulak bora, grofa. Ba goshak maruk? -> I sell leather armor, studded armor, studded helmet. What buying you?
    Negociando escudos:
    Goshak dora. -> Buy shield.
    Ikem pashak donga. Ba goshak maruk? -> I sell brass shield. What buying you?
    Comprando um item:
    Goshak batuk. -> Buy bow.
    Ahhhh, maruk goshak batuk? -> Ahhhh, you buying bow?
    Mok. -> Yes.
    Maruk rambo zambo! -> You thank friend(?)!
    Comprando flechas (Só é possível comprar de 10 em 10):
    Goshak pixo. -> Buy arrows.
    Maruk goshak tefar pixo ul batuk? -> You buy ten(or bunch) arrows for bow?
    Mok. -> Yes.
     
    Considerações Finais
    Vocês gostaram desse tipo de conteúdo? Eu particularmente sou apaixonado pela Lore do Tibia! Deixe um comentário falando sobre o que você achou deste tópico, deste tipo de conteúdo, e o que você gostaria de saber sobre a  história desse jogo maravilhoso em tópicos futuros!
    Até a próxima!
     
    Maruk rambo zambo!
  24. Curtir
    Wakon recebeu reputação de Cat em [Sistema][TFS 1.1 1.2][WindowsModal]Alquimia Avançada   
    Tópico aprovado e movido a área correta, obrigado por compartilhar.
    Você recebeu um REP pela contribuição.
  25. Gostei
    Wakon deu reputação a Cjaker em Tibia 8.60 Editor   
    Heyo, desenvolvi uma ferramenta pra facilitar na criação de um cliente 8.60 customizado.
    > As funcionalidades do software estão visíveis na imagem desse tópico.

    Tutorial: extraia o arquivo pra qualquer diretório, abra o executável 'Tibia86Editor.exe', dentro do software selecione o executável do seu Tibia 8.60 (tem que ser original da CipSoft), selecione um ícone (formato .ico), marque a caixa 'Edit IP' e preencha o seu IP ao lado.

    Existem também outras opções oferecendo maior liberdade de customização
    Não testei todas as opções em um servidor online, sinta-se à vontade pra reportar quaisquer problemas nesse tópico.

    [Imagem]

     
    [Download]
    Tibia 8.60 Editor.zip
    [Download V2]
    Tibia_8.60_EditorV2.zip

    Scan Tibia_8.60_EditorV2: https://www.virustotal.com/gui/file/71f005fa5efca9e042bdcfc4d331231fec99d1c1503197064170490d8e4fcba1?nocache=1
    Scan Tibia_8.60_Editor: https://www.virustotal.com/gui/file/94502bf5a279ef5c567360adb8a7f38885bf0ca96b47574c8bbe2c9475fb7ba9/detection
    Scan Client_8.60.exe: https://www.virustotal.com/gui/file/face25c1ef276d5e70d6368b8e87912bde7325923de2aa7f579ecaa16f847982?nocache=1
    tibia860.zip
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo