Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''Derivado', 'Criptografia' ou 'OTClient''.



Mais opções de pesquisa

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • A Cidade OTBR
    • OTServ Brasil
    • Atendimento
    • Taverna
  • Projetos Open Source
    • Canary
    • OTServBR-Global
    • Mehah OTClient
    • MyAAC
  • OpenTibia
    • Notícias e Discussões
    • Suporte - Dúvidas, Bugs, Erros
    • Downloads
    • Tutoriais
    • Show-Off
  • Outros
    • Design

Encontrado 147 registros

  1. eeai gurizada, meu otclient parece que nao le a função "onlook" por exemplo ,eu quero que ao dar look num player apareça a mensagem "teste" no default chat fiz o script e pa ,no client normal aparece, no otclient nao ,pelo amor de deus algm ajuda ?
  2. OTClient Jogar Tibia (Global/Original)

    Primeiramente gostaria de parabenizar todos os envolvidos pelo OTClient, ficou muito bem feito a primeira vista. Bom, minha duvida é, atualmente é possível jogar o Tibia original/global com o OTClient? Se sim, qual IP eu deveria utilizar para me logar? Agradeço desde ja, Kaotar.
  3. OTClient Duvida top menu

    Como faço pra esconder o top menu ? ou alguns de seus icones ?
  4. Derivado [8.54] Naruto Atarashi Online V2

    Naruto Atarashi Online É pessoal depois de quase dois anos, está ai o Nrtao V.2. Agora terá updates frequentes então esse é o começo.... Menu: ├ Informações; ├ Ajustes; ├ Erros; ├ Senha; ├ Prints; ├ Download; ├ Scan; └ Créditos. Informações Nome Do Servidor: Naruto Atarashi Online Max Usuários Online: Quanto seu computador e net aguentarem. Recomendado até 100 (Mapa muito pequeno). Ele Contém:"Mapa Próprio" ; "Jutsus Próprio" / ( Diga "!jutsus" para saber Seu Jutsu) "Transformações" "Quest Própria". Ajustes 0.1 - Modificado Dat e Spr novamente 0.2 - Arrumado Outifts Dos Personagens E Monstros 0.3 - Adicionado mapa novo (Ainda sendo feito) 0.4 - Novos Montros 0.5 - Novos Trainers 0.6 - Novas Houses 0.7 - Criada Uma Arena PvP 0.8 - Arrumado Sistema Ver Jutsus 0.9 - Adicionado 19 vocações todas com transformações 1.0 - Arrumado Jutsus Que Não Funcionavam / Alguns novos Erros 0.1 - Pode Se Levar Debug Em Alguns Montros / (Ainda Um Pouco) 0.2 - Pode se levar debug com o GOD quando dizer "!Justus" 0.3 - Mapa pequeno ainda sendo feito. Obs - Se Achar Mais, Basta Entrar Em Contato Com: [email protected] Senha Senha Para Entrar No Server / (Do GOD): god / god Prints Download's NrtAo 2.7 (servidor) NrtAo 2.7 (client) NrtAo 2.7 (completo) Scan Servidor Client [url="https://www.virustotal.com/pt/file/bcb037e8e262a8f5d690713dfd4888af51a6a291f10fec02107bd5d632a083db/analysis/%5DCompleto%5B/URL%5D Créditos 97% Eu (Avuenja) - Motivo: "Edição Final / Ajustes Finais / Implementação De Sistemas / E Outros". 3% (Stigal) - Motivo: "Por ainda conter alguns dos seus ajustes".
  5. Derivado [8.54] Naruto Atarashi Online V1 Beta

    Naruto Atarashi Online Menu: ├ Informações; ├ Ajustes; ├ Erros; ├ Senha; ├ Prints; ├ Download; ├ Scan; ├ Creditos; └ Agradecimento. Informações Nome Do Servidor: Naruto Atarashi Online Max Usuarios Online: 100 Online Ele Contém: "Mapa Próprio", "Jutsus Próprio" / ( Diga "!jutsus" para saber Seu Jutsu), "Quest Propria". Ajustes 0.1 - Modificado Dat e Spr (Modificado Por Avuenja) (21/Março) 0.2 - Arrumado Outifts Dos Personagens E Monstros / (Arrumado Por Avuenja) (20/Abril) 0.3 - Arrumado Corpos Dos Montros / Dando Debug quando Players Matavam Os Mesmos / (Arrumado Por Avuenja) (26/Abril) 0.4 - Novos Montros / (Adicionado Por Avuenja) (28/Abril) 0.5 - Erro Trainer / Pouca Vida / ( Arrumado Novamente Por Avuenja) (08/Maio) 0.6 - Novas Houses / (Adicionado Por Avuenja) (26/Maio) 0.7 - Criada Uma Arena PvP / (Adicionado Por Avuenja) (26/Maio) 0.8 - Criado Sistema Ver Jutsus / (Adicionado Por Avuenja) (26/Maio) 0.9 - Arrumado Jutsus Que Não Funcionavam / (Arrumado Por Avuenja) (26/Maio) Erros 0.1 - Anbu Em Casa Separada Na Cidade Principal / (Ainda Não Arrumado) 0.2 - Pode Se Levar Debug Em Alguns Montros / (Ainda Um Pouco) Obs - Se Achar Mais, Basta Entrar Em Contato Com: [email protected] Senha Do GOD: god / god PrintScreen Download's NrtAo V1 Scan NrtAo V1 Créditos 50% Eu (Avuenja) - Motivo: "Edição Final / Ajustes Finais / Implementação De Sistemas / E Outros". 45% (Stigal) - Motivo: "Edição Mediana / Alguns Ajustes". 5% (Seven) - Motivo: "Edição Inicial".
  6. Galera eu sou novo com OtClient mas pude observer que tuda nao passa de alterar arquivos e criar novos scripts hehe porem na parte de criar sou mt novato.. gostaria de saber como posso mudar os cursores do OtClient para ficar mais a cara do meu projeto de harrypotter obrigado
  7. OTClient Ajuda OTC Titulo

    Galera teria como mudar o Titulo do OTC ? se tiver como eu faço isso ? obs: o icone eu mudei agora falta o titulo...
  8. OTClient Bug

    Fiz o download deste OTClient: http://forums.otserv.com.br/showthread.php?211118-Otc-6-3 E quando tento mover um item da bp ele pode até mover más a imagem continua na bp e não aparece no local que eu movi... Para ser mais exato vou dar um exemplo tenho na minha backpack 10 gold coins quando movo 5 para algum local este local recebe os 5 gold coins que movi más a imagem não é exibida no client o mesmo acontece na bp a imagem dos 10gp permanecesse.. Se eu reabro a minha backpack ou saio do local que movi o item e volto até ele o item aparece alguem conhece este bug e pode me ajudar? estou utilizando a versão 10.10 Um print do terminal do console quando tento mover algum item: https://www.dropbox.com/s/qg2vpf2vzt49rn8/Captura%20de%20tela%202014-01-01%2015.27.13.png
  9. OTClient [Shaders] Help .-.

    Olá pessoal, pouco tempo atrás comecei a mexer com OtClient e estou realmente empolgado, especialmente com a parte de shaders (efeito ambiente), é ai que entra minha dúvida: Encontrei um probleminha no comportamento das shaders, basicamente shaders como a Fog (névoa) sofrem algo parecido com um lag no momento em que o personagem se movimenta (troca de sqm), não se comporta de uma forma contínua, é como se a shader acompanhasse o personagem. Aparentemente o pessoal da PxG (https://www.pokexgames.com/) concertou esse problema no client deles. Dei uma pesquisada, mas é meio complicado encontrar conteúdo envolvendo OtClient pela Internet, achei uma pessoa com a mesma dúvida mas não havia solução na página. Enfim, peço ajuda aos senhores. Agradeço desde já.
  10. Boa noite galera, Como alguns já sabem, sou um dos programadores do servidor Tales of Fantasy, e recentemente compilei uma função para carregar arquivos criptografados no OTC sem que dê problemas nos módulos. Se alguém estiver interessado, posso compilar seu arquivo .Lua e disponibilizar o .Exe com a função compilada. Eu cobro por arquivo compilado caso alguém tenha interesse. É muito melhor investir para ter segurança nos arquivos do seu servidor, do que correr o risco de ter informações roubadas. Estou divulgando este serviço porque precisamos arrecadar fundos para hospedar o server futuramente em um dedicado com boas configurações. Então não pense que está pagando pelo serviço, e sim, colaborando conosco para o desenvolvimento na espreita. OBS: A função funciona apenas em arquivos .Lua, seu arquivo .OTUI e .OTMOD não ficaram em hide, mas pelo .Lua qualquer um consegue modelar o ML dos arquivos. Se tiver interesse, mensagem Off-me aqui. Obrigado.
  11. Bom dia, eu estou com um problema na minha distro da seguinte maneira Quando eu puxo algum item para no empilháveis ele não junta sozinho, por exemplo tenho 90 de gold na bp dai mato algum bixo e puxo a grana que ele dropa para minha bp ele não stacka nos 90 e sim vai para outro slot da bp fazendo assim eu ter que junta manual todos itens empilháveis que eu pego. alguém tem ideia do que pode ser?
  12. Oi gente eu tenho essa dúvida Como posso esconder a minha dat e spr em "ot-Client" então eu não vou roubar? PD: Não compile ... ______________________________________ En español: ¿Como puedo esconder mi spr y dat en "Ot-client" ? Hola gente tengo esta duda ¿Como puedo esconder mi dat y spr en "ot-Client" para que no me roben? PD: Sin compilar...
  13. OTClient Erro

    Quando eu coloco o protocolo 9.60, ou qualquer outra versão, aparece um erro desse jeito: "Não foi possível carregar o arquivo dat/spr, por favor coloque um arquivo válido em /things/960/Tibia" O quê eu faço? Nem entendo disso.
  14. Eu gostaria de saber como retirar o botão exit do topmenu pois eu coloquei um botão exit ja na enter game.
  15. OTClient Otc bot

    Fiz o download da versão do OTC 0.6.3, e gostaria de saber como coloca aquele bot no client, porque baxei o cliente de varios ots que ja vem com o bot, gostaria de saber como coloco ele!
  16. OTClient [MOD]Changelog

    O que faz? Esse mod é uma janela onde você pode escrever o que quiser, como por exemplo as atualizações do seu servidor. Instalação: 1 - Descompacte o arquivo .rar na pasta mods 2 - Pronto, o mod irá carregar automaticamente ao iniciar o client 3 - Você pode editar o texto da janela pelo arquivo changelog.lua Download: http://www.mediafire.com/?85u58ixs4x15bxb Screenshot: Créditos: Summ
  17. OTClient Tres Duvidas

    -Como retirar todos os botões na area de cima e só deixa o de opção -Como por o botao exit na parte de por a conta e a senha? -Como por o titulo centralizado?
  18. Bem tenho Opcodes Instalado mais não manjo muito das funç~~ dele, ver se um membro aqui do forum pd ajudar ai vai o script. Script inventory.lua InventorySlotStyles = { [inventorySlotHead] = "HeadSlot", [inventorySlotNeck] = "NeckSlot", [inventorySlotBack] = "BackSlot", [inventorySlotBody] = "BodySlot", [inventorySlotRight] = "RightSlot", [inventorySlotLeft] = "LeftSlot", [inventorySlotLeg] = "LegSlot", [inventorySlotFeet] = "FeetSlot", [inventorySlotFinger] = "FingerSlot", [inventorySlotAmmo] = "AmmoSlot" } Backgrounds = { [0] = { path = '/images/inventory/Anbu_INV.png', id = 'background_anbu'}, [1] = { path = '/images/inventory/Uchiha_INV.png', id = 'background_uchiha'}, [2] = { path = '/images/inventory/Hyuuga_INV.png', id = 'background_hyuuga'}, [3] = { path = '/images/inventory/Aburame_INV.png', id = 'background_aburame'}, [4] = { path = '/images/inventory/Nara_INV.png', id = 'background_nara'}, [5] = { path = '/images/inventory/Inuzuka_INV.png', id = 'background_inuzuka'}, [6] = { path = '/images/inventory/Akimichi_INV.png', id = 'background_akimichi'}, [7] = { path = '/images/inventory/Maito_INV.png', id = 'background_maito'}, [8] = { path = '/images/inventory/Uchiha_INV.png', id = 'background_uchiha'}, } inventoryWindow = nil inventoryPanel = nil inventoryButton = nil function init() connect(LocalPlayer, { onInventoryChange = onInventoryChange }) connect(g_game, { onGameStart = refresh }) g_keyboard.bindKeyDown('Ctrl+I', toggle) inventoryButton = modules.client_topmenu.addRightGameToggleButton('inventoryButton', tr('Inventory') .. ' (Ctrl+I)', '/images/topbuttons/inventory', toggle) inventoryButton:setOn(true) inventoryWindow = g_ui.loadUI('inventory', modules.game_interface.getRightPanel()) inventoryWindow:disableResize() inventoryPanel = inventoryWindow:getChildById('contentsPanel') local itemWidget = inventoryPanel:getChildById('slot9') itemWidget:setVisible(false) local itemWidget = inventoryPanel:getChildById('slot10') itemWidget:setVisible(false) refresh() inventoryWindow:setup() inventoryWindow:close() inventoryButton:setOn(false) end ProtocolGame.registerExtendedOpcode(26, function (protocol, opcode, buffer) local bg = Backgrounds[tonumber(vocation)] or Backgrounds[0] vocation = bg print(vocation) end ) function terminate() disconnect(LocalPlayer, { onInventoryChange = onInventoryChange }) disconnect(g_game, { onGameStart = refresh }) g_keyboard.unbindKeyDown('Ctrl+I') inventoryWindow:destroy() inventoryButton:destroy() end function refresh() local player = g_game.getLocalPlayer() for i=InventorySlotFirst,InventorySlotLast do if g_game.isOnline() then onInventoryChange(player, i, player:getInventoryItem(i)) else onInventoryChange(player, i, nil) end end end function toggle() refresh() if inventoryButton:isOn() then inventoryWindow:close() inventoryButton:setOn(false) else inventoryWindow:open() inventoryButton:setOn(true) end end function onMiniWindowClose() inventoryButton:setOn(false) end -- hooked events function onInventoryChange(player, slot, item, oldItem) local player = g_game.getLocalPlayer() if(player) then local vocation = player:getVocation() if(vocation ~= 0) then inventoryWindow:setImageSource(Backgrounds[vocation].path) end end if slot >= InventorySlotPurse then return end local itemWidget = inventoryPanel:getChildById('slot' .. slot) if item then itemWidget:setStyle('Item') itemWidget:setItem(item) else itemWidget:setStyle(InventorySlotStyles[slot]) itemWidget:setItem(nil) end end inventory.Otui InventoryItem < Item JutsusSlot < InventoryItem id: slot10 image-source: /images/game/slots/menubox &position: {x=65535, y=6, z=0} SkillPercentPanel < ProgressBar id: percent background-color: green height: 8 border-width: 2 Skill < Label font: verdana-11px-monochrome text-offset: 42 3 focusable: true height: 36 image-size: 32 32 image-offset: 2 2 Miniature < Label font: verdana-11px-monochrome text-offset: 42 3 focusable: true height: 20 image-size: 18 18 image-offset: 2 2 SkillUp < Button size: 12 12 icon-clip: 0 32 16 16 font: terminus-14px-bold color: #61de21 text: + text-offset: 1 0 border-width: 2 enabled: false visible: true $pressed: icon-clip: 0 0 16 16 $hover !pressed: icon-clip: 0 16 16 16 MiniWindow id: skillWindow !text: tr('Ninja Info') size: 380 550 icon: /images/topbuttons/skills @onClose: modules.game_skills.onMiniWindowClose() &save: true MiniWindowContents padding-left: 5 padding-right: 5 Panel id: portraitPanel size: 64 64 border-width: 2 image-source: /images/game/portraits/akamaru anchors.top: parent.top anchors.left: parent.left margin: 25 5 15 5 Label id: name font: terminus-14px-bold anchors.top: parent.top anchors.left: parent.left margin-left: 5 text-auto-resize: true Label id: clan anchors.top: portraitPanel.top anchors.left: portraitPanel.right margin-left: 25 text-auto-resize: true Miniature id: clanMiniature image-source: /images/game/skills/maito anchors.top: clan.top anchors.right: clan.left margin-right: 5 margin-top: -2 Label id: rank anchors.top: clan.top anchors.left: clan.left margin-top: 25 text-auto-resize: true Miniature id: rankMiniature image-source: /images/game/skills/chunnin anchors.top: rank.top anchors.right: rank.left margin-right: 5 margin-top: -2 Label id: village anchors.top: rank.top anchors.left: rank.left margin-top: 25 Miniature id: villageMiniature image-source: /images/game/skills/konoha anchors.top: village.top anchors.right: village.left margin-right: 5 margin-top: -2 Label id: levelLabel !text: tr("Level: ") font: verdana-11px-antialised anchors.left: portraitPanel.left anchors.top: portraitPanel.bottom margin-top: 10 Label id: level anchors.left: levelLabel.right anchors.top: levelLabel.top margin-left: 5 text-auto-resize: true Label id: experienceLabel !text: tr("Exp.: ") font: verdana-11px-antialised anchors.left: levelLabel.left anchors.top: levelLabel.bottom margin-top: 5 Label id: experience anchors.left: experienceLabel.right anchors.top: experienceLabel.top margin-left: 5 text-auto-resize: true Label id: atkSpeedLabel !text: tr("Atk. Speed: ") anchors.left: experienceLabel.left anchors.top: experienceLabel.bottom margin-top: 5 Label id: atkSpeed anchors.left: atkSpeedLabel.right anchors.top: atkSpeedLabel.top margin-left: 5 text-auto-resize: true Label id: movSpeedLabel !text: tr("Mov. Speed: ") anchors.left: atkSpeedLabel.left anchors.top: atkSpeed.bottom margin-top: 5 Label id: movSpeed anchors.left: movSpeedLabel.right anchors.top: movSpeedLabel.top margin-left: 5 text-auto-resize: true Label id: bountyLabel !text: tr("Bounty: ") anchors.left: movSpeedLabel.left anchors.top: movSpeedLabel.bottom margin-top: 5 Label id: bounty !text: "0" anchors.left: bountyLabel.right anchors.top: bountyLabel.top margin-left: 5 text-auto-resize: true Label id: reputationLabel !text: tr("Reputation: ") anchors.left: bountyLabel.left anchors.top: bountyLabel.bottom margin-top: 5 Label id: reputation !text: "0" anchors.left: reputationLabel.right anchors.top: reputationLabel.top margin-left: 5 text-auto-resize: true Label id: jutsusLabel !text: tr("Character Menu") color: #82949c font: terminus-14px-bold anchors.horizontalCenter: parent.horizontalCenter anchors.top: parent.top margin-top: 5 margin-left: 100 JutsusSlot anchors.top: jutsusLabel.bottom anchors.horizontalCenter: jutsusLabel.horizontalCenter margin-top: 10 Label id: missions !text: tr("Missions") color: #82949c font: terminus-14px-bold anchors.horizontalCenter: jutsusLabel.horizontalCenter anchors.top: jutsusLabel.bottom margin-top: 50 Label id: rankdLabel !text: tr("D-Rank") color: #9de24f anchors.right: missions.left anchors.top: missions.bottom margin-top: 15 Label id: rankd !text: tr("0") anchors.horizontalCenter: rankdLabel.horizontalCenter anchors.top: rankdLabel.bottom margin-top: 5 text-auto-resize: true Label id: rankcLabel !text: tr("C-Rank") color: #ffff00 anchors.left: missions.right anchors.top: rankdLabel.top Label id: rankc !text: tr("0") anchors.horizontalCenter: rankcLabel.horizontalCenter anchors.top: rankcLabel.bottom margin-top: 5 text-auto-resize: true Label id: rankbLabel !text: tr("B-Rank") color: #088da5 anchors.right: missions.left anchors.top: rankdLabel.bottom margin-top: 30 Label id: rankb !text: tr("0") anchors.horizontalCenter: rankbLabel.horizontalCenter anchors.top: rankbLabel.bottom margin-top: 5 text-auto-resize: true Label id: rankaLabel !text: tr("A-Rank") color: #f7b82b anchors.left: missions.right anchors.top: rankbLabel.top Label id: ranka !text: tr("0") anchors.horizontalCenter: rankaLabel.horizontalCenter anchors.top: rankaLabel.bottom margin-top: 5 text-auto-resize: true Label id: ranksLabel !text: tr("S-Rank") color: #ff0000 anchors.horizontalCenter: missions.horizontalCenter anchors.top: rankaLabel.bottom margin-top: 30 Label id: ranks !text: tr("0") anchors.horizontalCenter: ranksLabel.horizontalCenter anchors.top: ranksLabel.bottom margin-top: 5 text-auto-resize: true Skill id: taijutsuImage image-source: /images/game/skills/taijutsu anchors.top: reputation.bottom anchors.horizontalCenter: parent.horizontalCenter margin-top: 5 Label id: taijutsuLabel !text: tr("Taijutsu") anchors.top: taijutsuImage.bottom anchors.horizontalCenter: taijutsuImage.horizontalCenter margin-top: 5 height: 17 SkillPercentPanel width: 70 anchors.top: parent.bottom anchors.horizontalCenter: parent.horizontalCenter Label id: taijutsuValue !text: tr("0") anchors.horizontalCenter: taijutsuLabel.horizontalCenter anchors.top: taijutsuLabel.bottom margin-top: 10 text-auto-resize: true Skill id: ninjutsuImage image-source: /images/game/skills/ninjutsu anchors.top: reputation.bottom anchors.left: parent.left margin-top: 50 margin-left: 50 Label id: ninjutsuLabel !text: tr("Ninjutsu") anchors.top: ninjutsuImage.bottom anchors.horizontalCenter: ninjutsuImage.horizontalCenter margin-top: 5 height: 17 SkillPercentPanel width: 70 anchors.top: parent.bottom anchors.horizontalCenter: parent.horizontalCenter Label id: ninjutsuValue !text: tr("0") anchors.horizontalCenter: ninjutsuLabel.horizontalCenter anchors.top: ninjutsuLabel.bottom margin-top: 10 text-auto-resize: true Skill id: genjutsuImage image-source: /images/game/skills/genjutsu anchors.top: reputation.bottom anchors.right: parent.right margin-top: 50 margin-right: 50 Label id: genjutsuLabel !text: tr("Genjutsu") anchors.top: genjutsuImage.bottom anchors.horizontalCenter: genjutsuImage.horizontalCenter margin-top: 5 height: 17 SkillPercentPanel width: 70 anchors.top: parent.bottom anchors.horizontalCenter: parent.horizontalCenter Label id: genjutsuValue !text: tr("0") anchors.horizontalCenter: genjutsuLabel.horizontalCenter anchors.top: genjutsuLabel.bottom margin-top: 10 text-auto-resize: true Skill id: meleeWeaponsImage image-source: /images/game/skills/meleeweapons anchors.top: ninjutsuValue.bottom anchors.left: ninjutsuValue.left margin-top: 10 margin-left: 40 Label id: meleeWeaponsLabel !text: tr("Melee Weapons") anchors.top: meleeWeaponsImage.bottom anchors.horizontalCenter: meleeWeaponsImage.horizontalCenter margin-top: 5 height: 17 SkillPercentPanel width: 70 anchors.top: parent.bottom anchors.horizontalCenter: parent.horizontalCenter Label id: meleeWeaponsValue !text: tr("0") anchors.horizontalCenter: meleeWeaponsLabel.horizontalCenter anchors.top: meleeWeaponsLabel.bottom margin-top: 10 text-auto-resize: true Skill id: distanceWeaponsImage image-source: /images/game/skills/distanceweapons anchors.top: genjutsuValue.bottom anchors.right: genjutsuValue.right margin-top: 10 margin-right: 40 Label id: distanceWeaponsLabel !text: tr("Distance Weapons") anchors.top: distanceWeaponsImage.bottom anchors.horizontalCenter: distanceWeaponsImage.horizontalCenter margin-top: 5 height: 17 SkillPercentPanel width: 70 anchors.top: parent.bottom anchors.horizontalCenter: parent.horizontalCenter Label id: distanceWeaponsValue !text: tr("0") anchors.horizontalCenter: distanceWeaponsLabel.horizontalCenter anchors.top: distanceWeaponsLabel.bottom margin-top: 10 text-auto-resize: true Skill id: chakraLevelImage image-source: /images/game/skills/chakralevel anchors.top: distanceWeaponsLabel.bottom anchors.horizontalCenter: taijutsuValue.horizontalCenter margin-top: 35 Label id: chakraLevelLabel !text: tr("Chakra Control") anchors.top: chakraLevelImage.bottom anchors.horizontalCenter: chakraLevelImage.horizontalCenter margin-top: 5 height: 15 Label id: chakraLevelValue !text: tr("0") anchors.horizontalCenter: chakraLevelLabel.horizontalCenter anchors.top: chakraLevelLabel.bottom margin-top: 5 text-auto-resize: true SkillUp id: chakraLevelButton anchors.horizontalCenter: chakraLevelValue.horizontalCenter anchors.top: chakraLevelValue.bottom margin-top: 5 @onClick: onButtonClick(self:getId()) Skill id: resistanceImage image-source: /images/game/skills/resistance anchors.top: distanceWeaponsLabel.bottom anchors.horizontalCenter: ninjutsuValue.horizontalCenter margin-top: 15 margin-right: 30 Label id: resistanceLabel !text: tr("Resistance") anchors.top: resistanceImage.bottom anchors.horizontalCenter: resistanceImage.horizontalCenter margin-top: 5 height: 15 Label id: resistanceValue !text: tr("0") anchors.horizontalCenter: resistanceLabel.horizontalCenter anchors.top: resistanceLabel.bottom margin-top: 5 text-auto-resize: true SkillUp id: resistanceButton anchors.horizontalCenter: resistanceValue.horizontalCenter anchors.top: resistanceValue.bottom margin-top: 5 @onClick: onButtonClick(self:getId()) Skill id: agilityImage image-source: /images/game/skills/agility anchors.top: distanceWeaponsLabel.bottom anchors.horizontalCenter: genjutsuValue.horizontalCenter margin-top: 15 margin-left: 30 Label id: agilityLabel !text: tr("Agility") anchors.top: agilityImage.bottom anchors.horizontalCenter: agilityImage.horizontalCenter margin-top: 5 height: 15 Label id: agilityValue !text: tr("0") anchors.horizontalCenter: agilityLabel.horizontalCenter anchors.top: agilityLabel.bottom margin-top: 5 text-auto-resize: true SkillUp id: agilityButton anchors.horizontalCenter: agilityValue.horizontalCenter anchors.top: agilityValue.bottom margin-top: 5 @onClick: onButtonClick(self:getId()) Os script postado assima são usadados no client"OTclient". Ta ai os script queria sabe como faço pra ele interagir com server na verdade o script que tnho que usar no serve pra ele funfa.. :face2
  19. Compilando o OTClient no Mac OS X

    Fala galera! Tem uns bons anos que eu não aparecia por aqui, outro dia eu perguntei como compilar o OTC no OS X, não obtive resposta. Descobri hoje que é possível compilar usando o XQuartz para lidar com a parte gráfica e vou mostrar pra vocês como fazer. A compilação deve ser feita dentro do OS X, no meu caso estou usando o Mountain Lion, 10.8.4 mas acredito que vá funcionar em qualquer OS usando arquitetura intel acima do 10.6 (por conta do Xcode e do QuartZ). Vou assumir que você tenha intimidade com o Terminal e com o Homebrew, qualquer dúvida é só perguntar e assim que puder eu coloco aqui dentro mesmo a explicação. Vamos então a lista de pré-requisitos antes de começarmos, vocês vão ver que é muito simples! Será necessário: Mac OSX 10.6 ou superior; XCode; Command Line Tools for Xcode (dentro do Xcode: Xcode>Preferences>Downloads); XQuartz; Homebrew (instalado via terminal); É importante que você instale todos os itens desta lista, nesta ordem. Feito isso precisamos instalar as bibliotecas necessárias para a compilação, usaremos o homebrew que facilita em muito nossa vida, lembrando que é só aplicar os seguintes comandos no terminal: brew install git brew install cmake brew install lua brew install boost brew install glew brew install physfs brew install libogg brew install libvorbis Confira se todos os pacotes foram instalados! Erros são mostrados em vermelho facilitando sua localização. Buscando o Código fonte no gitHUB e compilando Os seguintes comandos (também inseridos no terminal) irão buscar o código fonte e compilar dentro da própria pasta do código o binário, lembrando que ele irá criar a pasta otclient dentro do /user. git clone git[b]:[/b][i]//github.com/edubart/otclient.git[/i] cd otclient mkdir build cd build cmake .. make [b]-[/b]j4 E acreditem ou não, terminou! Qualquer dúvida se sintam a vontade pra perguntar! Fonte: https://github.com/edubart/otclient/wiki/Compiling-on-Mac-OS-X
  20. OTClient [MOD]Guild Management

    O que faz? Esse mod serve para administrar sua guild, criar, invitar player, promover player, desfazer guild, entre outros.. Como Instalar? Baixe a seguir a pasta e a coloque em seu OTC/MODS. Link: https://hostr.co/MfecSZIxhiUv Screenshots: Créditos:
  21. Vi vários servidores que usam o OTC e na hora de baixar o client vem a pasta inteira, queria saber se não tem como fazer um instalador e na hora de usar o client aparecer só o executável do client, tem jeito?
  22. OTClient Atualizar o OTC

    Estou com a versão 6.2 do OTC, como faço pra atualizar pro 6.3 sem perder todas as modificações que eu ja fiz?
  23. OTClient Diferenças OTClient 6.2 e 6.3

    Quais são as diferenças do OTC 6.3 pro 6.2 além do 6.3 suportar mais versões?
  24. OTClient Centralizar uma window.

    Preciso centralizar uma janela na horizontal, tenho uma enorme dificuldade com esse modo de layout do cliente, alguém tem alguma ideia? obrigado.
  25. Ola estou com um serio probleminha chato no meu OTCliente. Estalei um mod de spellbar, mais não reconhece somente as spells da vocação do jogador, mais sim todas spells de todas vocações. Imagem abaixo: [ATTACH]5474[/ATTACH] A mod que peguei foi esta aqui, [Draky's Codes] - Tibia Spell Bar SpellBar.LUA [spoiler=Clica Aqui] local spelllist = { ['Death Strike'] = {id = 87, words = 'exori mort', exhaustion = 2000, premium = true, type = 'Instant', icon = 'deathstrike', mana = 20, level = 16, soul = 0, group = {[1] = 2000}, vocations = {1, 5}}, ['Flame Strike'] = {id = 89, words = 'exori flam', exhaustion = 2000, premium = true, type = 'Instant', icon = 'flamestrike', mana = 20, level = 14, soul = 0, group = {[1] = 2000}, vocations = {1, 2, 5, 6}}, ['Strong Flame Strike'] = {id = 150, words = 'exori gran flam', exhaustion = 8000, premium = true, type = 'Instant', icon = 'strongflamestrike', mana = 60, level = 70, soul = 0, group = {[1] = 2000, [4] = 8000}, vocations = {1, 5}}, ['Ultimate Flame Strike'] = {id = 154, words = 'exori max flam', exhaustion = 30000, premium = true, type = 'Instant', icon = 'ultimateflamestrike', mana = 100, level = 90, soul = 0, group = {[1] = 4000}, vocations = {1, 5}}, ['Energy Strike'] = {id = 88, words = 'exori vis', exhaustion = 2000, premium = true, type = 'Instant', icon = 'energystrike', mana = 20, level = 12, soul = 0, group = {[1] = 2000}, vocations = {1, 2, 5, 6}}, ['Strong Energy Strike'] = {id = 151, words = 'exori gran vis', exhaustion = 8000, premium = true, type = 'Instant', icon = 'strongenergystrike', mana = 60, level = 80, soul = 0, group = {[1] = 2000, [4] = 8000}, vocations = {1, 5}}, ['Ultimate Energy Strike'] = {id = 155, words = 'exori max vis', exhaustion = 30000, premium = true, type = 'Instant', icon = 'ultimateenergystrike', mana = 100, level = 100,soul = 0, group = {[1] = 4000}, vocations = {1, 5}}, ['Whirlwind Throw'] = {id = 107, words = 'exori hur', exhaustion = 6000, premium = true, type = 'Instant', icon = 'whirlwindthrow', mana = 40, level = 28, soul = 0, group = {[1] = 2000}, vocations = {4, 8}}, ['Fire Wave'] = {id = 19, words = 'exevo flam hur', exhaustion = 4000, premium = false, type = 'Instant', icon = 'firewave', mana = 25, level = 18, soul = 0, group = {[1] = 2000}, vocations = {1, 5}}, ['Ethereal Spear'] = {id = 111, words = 'exori con', exhaustion = 2000, premium = true, type = 'Instant', icon = 'etherealspear', mana = 25, level = 23, soul = 0, group = {[1] = 2000}, vocations = {3, 7}}, ['Strong Ethereal Spear'] = {id = 57, words = 'exori gran con', exhaustion = 8000, premium = true, type = 'Instant', icon = 'strongetherealspear', mana = 55, level = 90, soul = 0, group = {[1] = 2000}, vocations = {3, 7}}, ['Energy Beam'] = {id = 22, words = 'exevo vis lux', exhaustion = 4000, premium = false, type = 'Instant', icon = 'energybeam', mana = 40, level = 23, soul = 0, group = {[1] = 2000}, vocations = {1, 5}}, ['Great Energy Beam'] = {id = 23, words = 'exevo gran vis lux', exhaustion = 6000, premium = false, type = 'Instant', icon = 'greatenergybeam', mana = 110, level = 29, soul = 0, group = {[1] = 2000}, vocations = {1, 5}}, ['Groundshaker'] = {id = 106, words = 'exori mas', exhaustion = 8000, premium = true, type = 'Instant', icon = 'groundshaker', mana = 160, level = 33, soul = 0, group = {[1] = 2000}, vocations = {4, 8}}, ['Berserk'] = {id = 80, words = 'exori', exhaustion = 4000, premium = true, type = 'Instant', icon = 'berserk', mana = 115, level = 35, soul = 0, group = {[1] = 2000}, vocations = {4, 8}}, ['Annihilation'] = {id = 62, words = 'exori gran ico', exhaustion = 30000, premium = true, type = 'Instant', icon = 'annihilation', mana = 300, level = 110,soul = 0, group = {[1] = 4000}, vocations = {4, 8}}, ['Brutal Strike'] = {id = 61, words = 'exori ico', exhaustion = 6000, premium = true, type = 'Instant', icon = 'brutalstrike', mana = 30, level = 16, soul = 0, group = {[1] = 2000}, vocations = {4, 8}}, ['Front Sweep'] = {id = 59, words = 'exori min', exhaustion = 6000, premium = true, type = 'Instant', icon = 'frontsweep', mana = 200, level = 70, soul = 0, group = {[1] = 2000}, vocations = {4, 8}}, ['Inflict Wound'] = {id = 141, words = 'utori kor', exhaustion = 30000, premium = true, type = 'Instant', icon = 'inflictwound', mana = 30, level = 40, soul = 0, group = {[1] = 2000}, vocations = {4, 8}}, ['Ignite'] = {id = 138, words = 'utori flam', exhaustion = 30000, premium = true, type = 'Instant', icon = 'ignite', mana = 30, level = 26, soul = 0, group = {[1] = 2000}, vocations = {1, 5}}, ['Lightning'] = {id = 149, words = 'exori amp vis', exhaustion = 8000, premium = true, type = 'Instant', icon = 'lightning', mana = 60, level = 55, soul = 0, group = {[1] = 2000, [4] = 8000}, vocations = {1, 5}}, ['Curse'] = {id = 139, words = 'utori mort', exhaustion = 50000, premium = true, type = 'Instant', icon = 'curse', mana = 30, level = 75, soul = 0, group = {[1] = 2000}, vocations = {1, 5}}, ['Electrify'] = {id = 140, words = 'utori vis', exhaustion = 30000, premium = true, type = 'Instant', icon = 'electrify', mana = 30, level = 34, soul = 0, group = {[1] = 2000}, vocations = {1, 5}}, ['Energy Wave'] = {id = 13, words = 'exevo vis hur', exhaustion = 8000, premium = false, type = 'Instant', icon = 'energywave', mana = 170, level = 38, soul = 0, group = {[1] = 2000}, vocations = {1, 5}}, ['Rage of the Skies'] = {id = 119, words = 'exevo gran mas vis', exhaustion = 40000, premium = true, type = 'Instant', icon = 'rageoftheskies', mana = 600, level = 55, soul = 0, group = {[1] = 4000}, vocations = {1, 5}}, ['Fierce Berserk'] = {id = 105, words = 'exori gran', exhaustion = 6000, premium = true, type = 'Instant', icon = 'fierceberserk', mana = 340, level = 90, soul = 0, group = {[1] = 2000}, vocations = {4, 8}}, ['Hells Core'] = {id = 24, words = 'exevo gran mas flam', exhaustion = 40000, premium = true, type = 'Instant', icon = 'hellscore', mana = 1100, level = 60, soul = 0, group = {[1] = 4000}, vocations = {1, 5}}, ['Holy Flash'] = {id = 143, words = 'utori san', exhaustion = 40000, premium = true, type = 'Instant', icon = 'holyflash', mana = 30, level = 70, soul = 0, group = {[1] = 2000}, vocations = {3, 7}}, ['Divine Missile'] = {id = 122, words = 'exori san', exhaustion = 2000, premium = true, type = 'Instant', icon = 'divinemissile', mana = 20, level = 40, soul = 0, group = {[1] = 2000}, vocations = {3, 7}}, ['Divine Caldera'] = {id = 124, words = 'exevo mas san', exhaustion = 4000, premium = true, type = 'Instant', icon = 'divinecaldera', mana = 160, level = 50, soul = 0, group = {[1] = 2000}, vocations = {3, 7}}, ['Physical Strike'] = {id = 148, words = 'exori moe ico', exhaustion = 2000, premium = true, type = 'Instant', icon = 'physicalstrike', mana = 20, level = 16, soul = 0, group = {[1] = 2000}, vocations = {2, 6}}, ['Eternal Winter'] = {id = 118, words = 'exevo gran mas frigo', exhaustion = 40000, premium = true, type = 'Instant', icon = 'eternalwinter', mana = 1050, level = 60, soul = 0, group = {[1] = 4000}, vocations = {2, 6}}, ['Ice Strike'] = {id = 112, words = 'exori frigo', exhaustion = 2000, premium = true, type = 'Instant', icon = 'icestrike', mana = 20, level = 15, soul = 0, group = {[1] = 2000}, vocations = {1, 5, 2, 6}}, ['Strong Ice Strike'] = {id = 152, words = 'exori gran frigo', exhaustion = 8000, premium = true, type = 'Instant', icon = 'strongicestrike', mana = 60, level = 80, soul = 0, group = {[1] = 2000, [4] = 8000}, vocations = {2, 6}}, ['Ultimate Ice Strike'] = {id = 156, words = 'exori max frigo', exhaustion = 30000, premium = true, type = 'Instant', icon = 'ultimateicestrike', mana = 100, level = 100,soul = 0, group = {[1] = 4000}, vocations = {2, 6}}, ['Ice Wave'] = {id = 121, words = 'exevo frigo hur', exhaustion = 4000, premium = false, type = 'Instant', icon = 'icewave', mana = 25, level = 18, soul = 0, group = {[1] = 2000}, vocations = {2, 6}}, ['Strong Ice Wave'] = {id = 43, words = 'exevo gran frigo hur', exhaustion = 8000, premium = true, type = 'Instant', icon = 'strongicewave', mana = 170, level = 40, soul = 0, group = {[1] = 2000}, vocations = {2, 6}}, ['Envenom'] = {id = 142, words = 'utori pox', exhaustion = 40000, premium = true, type = 'Instant', icon = 'envenom', mana = 30, level = 50, soul = 0, group = {[1] = 2000}, vocations = {2, 6}}, ['Terra Strike'] = {id = 113, words = 'exori tera', exhaustion = 2000, premium = true, type = 'Instant', icon = 'terrastrike', mana = 20, level = 13, soul = 0, group = {[1] = 2000}, vocations = {1, 5, 2, 6}}, ['Strong Terra Strike'] = {id = 153, words = 'exori gran tera', exhaustion = 8000, premium = true, type = 'Instant', icon = 'strongterrastrike', mana = 60, level = 70, soul = 0, group = {[1] = 2000, [4] = 8000}, vocations = {2, 6}}, ['Ultimate Terra Strike'] = {id = 157, words = 'exori max tera', exhaustion = 30000, premium = true, type = 'Instant', icon = 'ultimateterrastrike', mana = 100, level = 90, soul = 0, group = {[1] = 4000}, vocations = {2, 6}}, ['Terra Wave'] = {id = 120, words = 'exevo tera hur', exhaustion = 4000, premium = false, type = 'Instant', icon = 'terrawave', mana = 210, level = 38, soul = 0, group = {[1] = 2000}, vocations = {2, 6}}, ['Wrath of Nature'] = {id = 56, words = 'exevo gran mas tera', exhaustion = 40000, premium = true, type = 'Instant', icon = 'wrathofnature', mana = 700, level = 55, soul = 0, group = {[1] = 4000}, vocations = {2, 6}}, ['Light Healing'] = {id = 1, words = 'exura', exhaustion = 1000, premium = false, type = 'Instant', icon = 'lighthealing', mana = 20, level = 9, soul = 0, group = {[2] = 1000}, vocations = {1, 2, 3, 5, 6, 7}}, ['Wound Cleansing'] = {id = 123, words = 'exura ico', exhaustion = 1000, premium = false, type = 'Instant', icon = 'woundcleansing', mana = 40, level = 10, soul = 0, group = {[2] = 1000}, vocations = {4, 8}}, ['Intense Wound Cleansing'] = {id = 158, words = 'exura gran ico', exhaustion = 600000,premium = true, type = 'Instant', icon = 'intensewoundcleansing', mana = 200, level = 80, soul = 0, group = {[2] = 1000}, vocations = {4, 8}}, ['Cure Bleeding'] = {id = 144, words = 'exana kor', exhaustion = 6000, premium = true, type = 'Instant', icon = 'curebleeding', mana = 30, level = 30, soul = 0, group = {[2] = 1000}, vocations = {4, 8}}, ['Cure Electrification'] = {id = 146, words = 'exana vis', exhaustion = 6000, premium = true, type = 'Instant', icon = 'curseelectrification', mana = 30, level = 22, soul = 0, group = {[2] = 1000}, vocations = {2, 6}}, ['Cure Poison'] = {id = 29, words = 'exana pox', exhaustion = 6000, premium = false, type = 'Instant', icon = 'curepoison', mana = 30, level = 10, soul = 0, group = {[2] = 1000}, vocations = {1, 2, 3, 4, 5, 6, 7, 8}}, ['Cure Burning'] = {id = 145, words = 'exana flam', exhaustion = 6000, premium = true, type = 'Instant', icon = 'cureburning', mana = 30, level = 30, soul = 0, group = {[2] = 1000}, vocations = {2, 6}}, ['Cure Curse'] = {id = 147, words = 'exana mort', exhaustion = 6000, premium = true, type = 'Instant', icon = 'curecurse', mana = 40, level = 80, soul = 0, group = {[2] = 1000}, vocations = {3, 7}}, ['Recovery'] = {id = 159, words = 'utura', exhaustion = 60000, premium = true, type = 'Instant', icon = 'recovery', mana = 75, level = 50, soul = 0, group = {[2] = 1000}, vocations = {4, 8, 3, 7}}, ['Intense Recovery'] = {id = 160, words = 'utura gran', exhaustion = 60000, premium = true, type = 'Instant', icon = 'intenserecovery', mana = 165, level = 100,soul = 0, group = {[2] = 1000}, vocations = {4, 8, 3, 7}}, ['Salvation'] = {id = 36, words = 'exura gran san', exhaustion = 1000, premium = true, type = 'Instant', icon = 'salvation', mana = 210, level = 60, soul = 0, group = {[2] = 1000}, vocations = {3, 7}}, ['Intense Healing'] = {id = 2, words = 'exura gran', exhaustion = 1000, premium = false, type = 'Instant', icon = 'intensehealing', mana = 70, level = 20, soul = 0, group = {[2] = 1000}, vocations = {1, 2, 3, 5, 6, 7}}, ['Heal Friend'] = {id = 84, words = 'exura sio', exhaustion = 1000, premium = true, type = 'Instant', icon = 'healfriend', mana = 140, level = 18, soul = 0, group = {[2] = 1000}, vocations = {2, 6}}, ['Ultimate Healing'] = {id = 3, words = 'exura vita', exhaustion = 1000, premium = false, type = 'Instant', icon = 'ultimatehealing', mana = 160, level = 30, soul = 0, group = {[2] = 1000}, vocations = {1, 2, 5, 6}}, ['Mass Healing'] = {id = 82, words = 'exura gran mas res', exhaustion = 2000, premium = true, type = 'Instant', icon = 'masshealing', mana = 150, level = 36, soul = 0, group = {[2] = 1000}, vocations = {2, 6}}, ['Divine Healing'] = {id = 125, words = 'exura san', exhaustion = 1000, premium = false, type = 'Instant', icon = 'divinehealing', mana = 160, level = 35, soul = 0, group = {[2] = 1000}, vocations = {3, 7}}, ['Light'] = {id = 10, words = 'utevo lux', exhaustion = 2000, premium = false, type = 'Instant', icon = 'light', mana = 20, level = 8, soul = 0, group = {[3] = 2000}, vocations = {1, 2, 3, 4, 5, 6, 7, 8}}, ['Magic Rope'] = {id = 76, words = 'exani tera', exhaustion = 2000, premium = true, type = 'Instant', icon = 'magicrope', mana = 20, level = 9, soul = 0, group = {[3] = 2000}, vocations = {1, 2, 3, 4, 5, 6, 7, 8}}, ['Levitate'] = {id = 81, words = 'exani hur', exhaustion = 2000, premium = true, type = 'Instant', icon = 'levitate', mana = 50, level = 12, soul = 0, group = {[3] = 2000}, vocations = {1, 2, 3, 4, 5, 6, 7, 8}}, ['Great Light'] = {id = 11, words = 'utevo gran lux', exhaustion = 2000, premium = false, type = 'Instant', icon = 'greatlight', mana = 60, level = 13, soul = 0, group = {[3] = 2000}, vocations = {1, 2, 3, 4, 5, 6, 7, 8}}, ['Magic Shield'] = {id = 44, words = 'utamo vita', exhaustion = 2000, premium = false, type = 'Instant', icon = 'magicshield', mana = 50, level = 14, soul = 0, group = {[3] = 2000}, vocations = {1, 2, 5, 6}}, ['Haste'] = {id = 6, words = 'utani hur', exhaustion = 2000, premium = true, type = 'Instant', icon = 'haste', mana = 60, level = 14, soul = 0, group = {[3] = 2000}, vocations = {1, 2, 3, 4, 5, 6, 7, 8}}, ['Charge'] = {id = 131, words = 'utani tempo hur', exhaustion = 2000, premium = true, type = 'Instant', icon = 'charge', mana = 100, level = 25, soul = 0, group = {[3] = 2000}, vocations = {4, 8}}, ['Swift Foot'] = {id = 134, words = 'utamo tempo san', exhaustion = 2000, premium = true, type = 'Instant', icon = 'swiftfoot', mana = 400, level = 55, soul = 0, group = {[1] = 10000, [3] = 2000}, vocations = {3, 7}}, ['Challenge'] = {id = 93, words = 'exeta res', exhaustion = 2000, premium = true, type = 'Instant', icon = 'challenge', mana = 30, level = 20, soul = 0, group = {[3] = 2000}, vocations = {8}}, ['Strong Haste'] = {id = 39, words = 'utani gran hur', exhaustion = 2000, premium = true, type = 'Instant', icon = 'stronghaste', mana = 100, level = 20, soul = 0, group = {[3] = 2000}, vocations = {1, 2, 5, 6}}, ['Ultimate Light'] = {id = 75, words = 'utevo vis lux', exhaustion = 2000, premium = true, type = 'Instant', icon = 'ultimatelight', mana = 140, level = 26, soul = 0, group = {[3] = 2000}, vocations = {1, 2, 5, 6}}, ['Cancel Invisibility'] = {id = 90, words = 'exana ina', exhaustion = 2000, premium = true, type = 'Instant', icon = 'cancelinvisibility', mana = 200, level = 26, soul = 0, group = {[3] = 2000}, vocations = {3, 7}}, ['Invisibility'] = {id = 45, words = 'utana vid', exhaustion = 2000, premium = false, type = 'Instant', icon = 'invisible', mana = 440, level = 35, soul = 0, group = {[3] = 2000}, vocations = {1, 2, 5, 6}}, ['Sharpshooter'] = {id = 135, words = 'utito tempo san', exhaustion = 2000, premium = true, type = 'Instant', icon = 'sharpshooter', mana = 450, level = 60, soul = 0, group = {[2] = 10000, [3] = 10000}, vocations = {3, 7}}, ['Protector'] = {id = 132, words = 'utamo tempo', exhaustion = 2000, premium = true, type = 'Instant', icon = 'protector', mana = 200, level = 55, soul = 0, group = {[1] = 10000, [3] = 2000}, vocations = {4, 8}}, ['Blood Rage'] = {id = 133, words = 'utito tempo', exhaustion = 2000, premium = true, type = 'Instant', icon = 'bloodrage', mana = 290, level = 60, soul = 0, group = {[3] = 2000}, vocations = {4, 8}}, ['Train Party'] = {id = 126, words = 'utito mas sio', exhaustion = 2000, premium = true, type = 'Instant', icon = 'trainparty', mana = 'Var.', level = 32, soul = 0, group = {[3] = 2000}, vocations = {8}}, ['Protect Party'] = {id = 127, words = 'utamo mas sio', exhaustion = 2000, premium = true, type = 'Instant', icon = 'protectparty', mana = 'Var.', level = 32, soul = 0, group = {[3] = 2000}, vocations = {7}}, ['Heal Party'] = {id = 128, words = 'utura mas sio', exhaustion = 2000, premium = true, type = 'Instant', icon = 'healparty', mana = 'Var.', level = 32, soul = 0, group = {[3] = 2000}, vocations = {6}}, ['Enchant Party'] = {id = 129, words = 'utori mas sio', exhaustion = 2000, premium = true, type = 'Instant', icon = 'enchantparty', mana = 'Var.', level = 32, soul = 0, group = {[3] = 2000}, vocations = {5}}, } local spells = {} local lado = 'vertical' local sbw -- window widget local sbb -- button ./\ widget local spellBarWindow -- UIWindow local exhsaustionTotal = 1100 local hideLevel = false -- os que nao tem level, vai mostrar? true = nao, false = sim function init() sbb = modules.client_topmenu.addRightGameToggleButton('sbb', 'Spell Bar' , 'SpellBar.png', toggle) sbw = g_ui.displayUI('SpellBar') sbw:move(10,50) g_mouse.bindPress(sbw, function() createMenu() end, MouseRightButton) sbw:hide() connect(g_game, 'onTalk', mensagemEnviada) connect(g_game, { onGameEnd = function() sbw:hide() sbb:setOn(false) end }) connect(LocalPlayer, { onLevelChange = onLevelChange }) for inst,values in pairs(spelllist) do if values.type == 'Instant' then -- depois vou fazer mais tipos.. if g_game.getProtocolVersion() >= 950 then -- Vocation is only send in newer clients if table.find(values.vocations, g_game.getLocalPlayer():getVocation()) then local inside = {instantName = inst, words = values.words, lvl = values.level, mana = values.mana, prem = values.premium, groups = values.group,icon = values.icon, vocations = values.vocations,exhaustion = values.exhaustion} table.insert(spells,inside) end else local inside = {instantName = inst, words = values.words, lvl = values.level, mana = values.mana, prem = values.premium, groups = values.group,icon = values.icon, vocations = values.vocations,exhaustion = values.exhaustion} table.insert(spells,inside) end end end table.sort(spells, function(a, return (a.lvl < b.lvl) end) end function onLevelChange(localPlayer, value, percent) getSpells(spells) end function mensagemEnviada(name, level, mode, text, channelId, pos) if not g_game.isOnline() then return end if g_game.getLocalPlayer():getName() ~= name then return end for i = 1,#spells do if spells[i].words:lower() == text:lower() then startDownDelay(i) break end end end function terminate() sbw:destroy() sbb:destroy() disconnect(g_game, { onGameEnd = function() sbw:hide() sbb:setOn(false) end }) disconnect(g_game, 'onTalk', mensagemEnviada) disconnect(LocalPlayer, { onLevelChange = onLevelChange }) end function toggle() if sbb:isOn() then sbw:hide() sbb:setOn(false) else sbw:show() getSpells(spells) sbb:setOn(true) level = g_game.getLocalPlayer():getLevel() end end function createMenu() local menu = g_ui.createWidget('PopupMenu') if lado == 'horizontal' then menu:addOption('Set Vertical', function() lado = 'vertical' getSpells(spells) end) else menu:addOption('Set Horizontal',function() lado = 'horizontal' getSpells(spells) end) end if hideLevel == false then menu:addOption('No Level Hide',function() hideLevel = true getSpells(spells) end) else menu:addOption('No Level Show',function() hideLevel = false getSpells(spells) end) end menu:display() end function destruirSpells() for i = 1,100 do if sbw:recursiveGetChildById('spell'..i) == nil then break end sbw:recursiveGetChildById('spell'..i):destroy() sbw:recursiveGetChildById('progress'..i):destroy() end end function getSpells(tabela) destruirSpells() spellBarWindow = sbw:recursiveGetChildById('mainWindow') local player = g_game.getLocalPlayer() local valor = #tabela local width = 38 local height = 38 if not player then return end for i = 1,#tabela do if (tabela[i].lvl > player:getLevel()) and hideLevel == true then valor = i - 1 break end if i == #tabela then valor = i end icon = g_ui.createWidget('SpellButton',spellBarWindow) progress = g_ui.createWidget('SpellProgressSpell',spellBarWindow) --icon: icon:setId('spell'..i) local spicon = Spells.getClientId(tabela[i].instantName) icon:setImageSource('/images/game/spells/defaultspells') icon:setImageClip((((spicon -1)%12)*32) .. ' ' .. ((math.ceil(spicon/12)-1)*32) .. ' 32 32') icon:setVisible(true) icon.words = tabela[i].words icon.instantName = tabela[i].instantName icon.lvl = tabela[i].lvl icon.mana = tabela[i].mana icon.exhaustion = tabela[i].exhaustion icon.exhaustionNeeded = 0 icon:setTooltip(tabela[i].words) if lado == 'horizontal' then icon:setMarginTop(3) height = 38 width = (i) * 32 + 2*(i) icon:setMarginLeft((i) * 32 + 2*(i) - 32) else icon:setMarginLeft(3) icon:setMarginTop((i) * 32 + 2*(i) - 32) width = 38 height = (i) * 32 + 2*(i) end --progress: progress:setId('progress'..i) progress:setVisible(true) progress:setPercent(100) progress:setMarginLeft(icon:getMarginLeft()) progress:setMarginTop(icon:getMarginTop()) if player:getLevel() < icon.lvl then progress:setText('L'..icon.lvl) progress:setColor('red') progress:setPercent(0) end if progress:getPercent() == 100 then progress:setText('OK') elseif icon.lvl < player:getLevel() then progress:setText(progress:getPercent()) end progress:setPhantom(true) icon.onClick = function() useSpell(i) end end sbw:setHeight(height) sbw:setWidth(width) spellBarWindow:setSize(sbw:getSize()) end function useSpell(i) local spell = sbw:recursiveGetChildById('spell'..i) if not spell then return end local progress = sbw:recursiveGetChildById('progress'..i) local player = g_game.getLocalPlayer() if not player then return end if progress:getPercent() < 100 then return modules.game_textmessage.displayFailureMessage('Wait your delay!') end g_game.talk(spell.words) end function startDownDelay(i) -- aqui vai ficar on onTalk, pra descer só realmente quando a spell sair local spell = sbw:recursiveGetChildById('spell'..i) if not spell then return end local progress = sbw:recursiveGetChildById('progress'..i) progress:setPercent(0) progress:setText('0%') progress:setColor('red') spell.exhaustionNeeded = 0 scheduleEvent(function() spellTimeleft(i) end,100) end function spellTimeleft(i) local spell = sbw:recursiveGetChildById('spell'..i) if not spell then return end local progress = sbw:recursiveGetChildById('progress'..i) spell.exhaustionNeeded = spell.exhaustionNeeded + 100 if spell.exhaustionNeeded < spell.exhaustion then progress:setPercent(math.ceil(((spell.exhaustionNeeded) * 100)/spell.exhaustion)) progress:setText(progress:getPercent()) progress:setColor('red') else progress:setPercent(100) progress:setText('OK') progress:setColor('green') spell.exhaustionNeeded = 0 return true end scheduleEvent(function() spellTimeleft(i) end,100) end SpellBar.OTUI [spoiler=Clica Aqui] SpellButton < UIButton width: 32 height: 32 focusable: false image-color: white image-size: 32 32 anchors.left: parent.left anchors.top: parent.top $!hover: image-border: 3 $hover: image-border: 2 image-color: #ffffff99 $pressed: image-color: #999999 $disabled: image-color: #ffffff66 SpellProgressSpell < UIProgressRect background: #585858AA percent: 100 focusable: false font: verdana-11px-rounded color: green anchors.left: parent.left anchors.top: parent.top size: 32 32 UIWindow focusable: false Panel id: mainWindow size: 70 70 focusable: false opacity: 0.95 image-source: /images/ui/window anchors.fill: parent Gostaria de saber como faço para reconhecer apenas as spells de acordo com a vocação do jogador, podem me ajudar?
×