-
Total de itens
3181 -
Registro em
-
Última visita
-
Dias Ganhos
26
Histórico de Curtidas
-
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.
-
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
-
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
-
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!")
-
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
-
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.
-
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.
-
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.
-
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)
-
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.
-
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
-
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
-
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/
-
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/
-
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.
-
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:
-
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. -
Wakon recebeu reputação de LeoTK em (Resolvido)SetPlayerStorageValue(cid, Storage, +1) [RESOLVIDO]
setPlayerStorageValue(cid, storage, getPlayerStorageValue(cid, storage) + 1)
-
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 ⚠️
-
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.
-
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
-
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)
-
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!
-
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.
-
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