Ir para conteúdo
Banner com Efeitos

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 05/26/15 em todas áreas

  1. Criando um mod simples

    gmstrikker e 5 outros reagiu a Snowsz por uma resposta no tópico

    6 pontos
    Neste tutorial espero ensina-los a criar um mod simples, composto por uma janela e um botão, para ativa-la e desativá-la. O mod deve ficar mais ou menos assim: • Entre na pasta mods do seu otclient, e crie um arquivo com um nome quaisquer, como por exemplo, o nome que quer para seu mod, o meu, vou chamar de "tutorial". • Dentro da pasta criada, crie um novo arquivo com extensão "otmod", coloque o nome do seu mod nele, eu vou colocar o nome de "tutorial", ficando "tutorial.otmod": • Dentro do seu arquivo de extensão "otmod" adicione o seguinte código: Module name: description: author: website: version: autoload: autoload-priority: scripts: [ ] @onLoad: @onUnload: • Explicando Dai você me pergunta por que isso está identado dessa forma? Module name: Com dois espaços antes de "name:"? Porque "Module" é uma declaração do tipo de arquivo que está sendo utilizado, já o "name:", é um componente do "Module", por isso, ele deve estar dentro de "Module", caso contrário, poderá ocorrer erros. Nesta linha: Module Ele está declarando que este arquivo é um modulo, uma modificação para seu client. Nesta linha: name: Aqui, estará sendo declarado o nome do seu módulo, eu vou colocar o nome "Tutorial": name: Tutorial Ao clicar no gerenciador de módulos, ele irá mostrar o seu mod com o nome escolhido: Nesta linha: description: Aqui, entrará a descrição do seu mod, por exemplo: description: Um mod simples. Irá mostrar mais ou menos assim: Nesta linha: author: Entrará o seu nome, ou seja, o nome de quem criou o mod(autor óbvio), por exemplo: author: Snowsz Ficaria mais ou menos assim: Nesta linha: website: Você pode declarar o seu site, por exemplo: website: tibiaking.com Ficaria mais ou menos assim: Nesta linha: version: Você pode colocar a versão do seu mod, por exemplo: version: 1.0 Ficaria mais ou menos assim: A parte com explicação gráfica terminou ! Nesta linha: autoload: Será determinado se o seu mod irá ser carregado automaticamente, por exemplo: Exemplo 1: autoload: false Assim, seu mod só irá ser carregado manualmente, você terá que ir no gerenciador de módulos e clicar em carregar para inciar seu mod. Exemplo 2: autoload: true Assim, seu mod só irá ser carregado automaticamente, sem a necessidade de clicar para ser carregado. Nesta linha: autoload-priority: Será determinada a prioridade de carregamento do seu mod, "Como assim?", é simples, ele irá carregar antes ou depois de outro mod, isso determina em que posição de carregamento seu mod deve estar, como por exemplo, em primeiro lugar , um exemplo de prioridade: autoload-priority: 1000 Acho que não tem nenhum mod com essa prioridade? Hehe, será um dos primeiros a carregar! Nesta linha: scripts: [ ] Será determinado os scripts carregados pelo seu módulo, os scripts usado por ele, por exemplo: scripts: [ tutorial ] Ele irá busca um arquivo com o nome tutorial.lua na mesma pasta que ele estiver, e carregará tudo que tem dentro daquele arquivo. Nesta linha: @onLoad: Será determinado que função o seu mod irá chamar ao iniciar, por exemplo: @onLoad: print("Hello World!") Irá mostrar uma mensagem no seu terminal do otclient. Por fim, nesta linha: @onUnload: Será determinado que função o seu mod irá chamar ao ser descarregado, ao se desligar, por exemplo: @onUnload: print("Bye World! ;(") Irá mostrar uma mensagem no seu terminal do otclient. Bom, a configuração que usaremos no nosso mod simples será essa: Module name: Tutorial description: Um mod simples. author: Snowsz website: tibiaking.com version: 1.0 autoload: true autoload-priority: 1000 scripts: [ tutorial ] @onLoad: init() @onUnload: terminate() Mexa apenas no que souber Na pasta do seu mod, crie um novo arquivo, com o nome "tutorial", ele deverá conter a extensão "lua", ficando "tutorial.lua", que é o arquivo de script setado no nosso "tutorial.otmod": scripts: [ tutorial ] Dentro dele, coloque o seguinte código: function init() tutorialWindow = g_ui.displayUI('tutorial.otui') tutorialWindow:hide() tutorialButton = modules.client_topmenu.addRightButton('tutorialButton', tr('Exemplo'), 'icone', onoff, true) end function terminate() tutorialWindow:hide() end function onoff() if tutorialWindow:isVisible() then tutorialWindow:hide() else tutorialWindow:show() end end A função "init()" é a função chamada pelo seu mod, ao iniciar, a função "terminate()", é chamada pelo seu mod, ao ser desligado. Na função "init()", em uma de suas linhas podemos encontrar isso: tutorialWindow = g_ui.displayUI('tutorial.otui') Onde tem "tutorialWindow", está sendo declarado uma variável global, um iniciante em lua deve saber o que é, então não vou explicar. Dentro de tal variável, há uma função, "O que essa função faz?", ela executa os elementos contidos em um arquivo, que seria os arquivos de extensão "otui", nela, estaremos executando o "tutorial.otui". Nesta linha: tutorialWindow:hide() Ele executa uma função na variável "tutorialWindow", que seria uma função para esconder a janela, pois, o que estava contido no "tutorial.otui" seria uma janela que criaremos logo logo. Nesta linha: tutorialButton = modules.client_topmenu.addRightButton('tutorialButton', tr('Exemplo'), 'icone', onoff, true) Está sendo declarado uma variável global, nela, está contido a referencia de uma função, que seria um botão adicionado ao lado direito do menu, exemplo: Utilizei a imagem de ícone do otclient para demonstração. Explicando a função: Sua base é essa: modules.client_topmenu.addRightButton(id, description, icon, callback, front) • Id: Será o id dado ao botão, para melhorar o acesso. • Description: É a descrição do botão, ao passar o mouse em cima, aparecerá um texto. • Icon: É a imagem do botão, como a que eu utilizei no exemplo, usei o ícone do otclient. • Callback: É uma função chamada ao clicar nele. • Front: Define se o botão será adicionado na frente ou atrás dos demais botões do seu menu. Explicando a função "terminate()", na sua única linha podemos encontrar isso: tutorialWindow:hide() É o seguinte, ao seu mod descarregar, ele irá esconder sua janela criada. Explicando a função "onoff()", nas suas linhas podemos encontrar isso: if tutorialWindow:isVisible() then tutorialWindow:hide() else tutorialWindow:show() end Mas bem, o que isso faz? Simples, "tutorialWindow:isVisible()", ele checa se a janela está visível, se estiver, ele irá esconde-la "tutorialWindow:hide()", caso a janela não esteja visível, ele irá mostra-la "tutorialWindow:show()", essa é a utilidade da função utilizada no botão do menu. Agora, na pasta do seu mod, crie um novo arquivo, com o nome de "tutorial", a extensão dele deve ser "otui", ficando "tutorial.otui", dentro desse arquivo, adicione isso: MainWindow id: tutorialwindow height: 255 width: 438 !text: tr("Mod simples") Explicando: • "MainWindow", seria o objeto que irá ser utilizado pelo arquivo, no caso, uma janela. • "id", o id, estaria setando um id para a sua janela. • "height", seria a altura da sua janela, do "MainWindow". • "width", seria a largura da sua janela, do "MainWindow". • "!text", seria o texto inserido como título de sua janela, a função chamada nele "tr()", chama uma tradução para aquela frase, caso não tenha ficaria aquilo mesmo, caso tenha, iria mudar para outro texto traduzido. Bom gente, espero que tenham gostado do tutorial, eu não sou bom com tutoriais... Se tiver me perdido peço desculpas, qualquer erro podem postar aqui que irei corrigir, se eu tiver me enrolado em algo, me desculpem, dei várias pausas enquanto fazia isso kk', espero que tenham entendido tudo. Créditos: Snowsz
  2. Scripter King

    Under e 2 outros reagiu a luanluciano93 por uma resposta no tópico

    3 pontos
    O Scripter King segue o mesmo propósito do Mapper King e Spriter King, espero que curtam e participem do tópico. REGRAS: • O Rei escolhe um tema para o duelo de Scripts. • Os membros que quiserem participar podem enviar o script pronto até 72 horas contadas depois da escolha do tema. • Os scripts devem ser enviados para: luan@tibiaking.com (scripts fora do tema serão desclassificados e cada membro só pode enviar um script). • Os participantes podem votar, mas não no seu script. (caso isso aconteça o mesmo será desclassificado). • Se nenhum script for enviado em 72 horas, o rei deve escolher outro tema. • Após entregue a conquista de Scripter King ao vencedor, o mesmo deve escolher um novo tema em até 48 horas, caso contrário, a conquista é transferida ao segundo colocado. • Apenas o atual rei ficará com a conquista do Scripter King. • Após 15 votos, o membro que obter maior número de votos vira o rei. (caso houver empate, o próximo voto aos membros que empataram decidirá) • Uma vez votado, o membro não pode mudar o voto. • Cada script deve ser de autoria do participante. • Cada voto deve ser justificado. Histórico: 30/05/2015 - Snowsz Então para começar, eu me declaro o Atual rei, o primeiro da linhagem, e o primeiro tema é ... Peguei um tópico da seção de script que não esta resolvido. Aqui vai .. "Em um conjunto de players, um deles puxa uma alavanca, e são enviados para uma sala sem saída onde aparecerá um monstro, o time tem um determinado tempo para mata-lo, se o tempo acabar, eles são enviados para uma saída e o monstro some. Se matarem são enviados para uma saída depois de 1 minuto. O script deve ser feito para a versão 0.4 do TFS. Apenas um time por vez. " Divirtam-se
  3. (Resolvido)[Ajuda] errozinho básico

    345sat e um outro reagiu a Wend II por uma resposta no tópico

    2 pontos
    Isso é o tempo de respawn dos monstros no mapa , pelo que vejo eles estão configurados pra dar respawn de 1 e 1 minuto para resolver abra o RME e procure por esses monstros e dê dois cliques em cima dele e configure o tempo
  4. 1 ponto
    Boa Noite , Boa Tarde ou Bom Dia TK's não sei a hora que vocês vão ver o Tópico Estava com meu Projeto do "Pokemon H" Fiz várias Ediçoes no Servidor Que Baixei aqui no Tibia King Mesmo e vim disponibilizá-los para vocês. Então bora ao que interessa né? • Menu: ├ Informações; ├ Edições; ├ Erros; ├ Prints; ├ Mapa ├ Download; ├ Atualização; ├ Utilitários; └ Créditos. • Informações Básicas • • Edições / Ajustes • • Erros do Servidor • • Prints• • MAPA • • Downloads • Cliente * MediaFire e Scan Servidor * MediaFire e Scan • Download Atualização 2.0 • Download: https://www.mediafire.com/?ik211gku2hdqz2t Scan : • Download Atualização 3.0 • 2016 OBS: NÃO TERÁ MAIS EDIÇÕES. • Utilitários • Remeres que usei pra editar: AQUI • Créditos • Brun Por Criar o Servidor Slicer Por Editar o Servidor Mulurka (pelas out) Stylo pelo tuto do ícone system noninhu por ajudar em alguns spells tem 2 caras tbm eu eskeci o nome deles agora que ajudaram 1 com as insignias na barra de skill e o outrio pelas scripts da liga pokemon dandanrvb pelas scripts do icone system erondino por algumas caves ih é só bjundão a all Vudi (Eu) Por editar o resto do servidor e trazer as novidades Tioj Pelas edições e Por fazer eu copiar a organização do tópico dele kk obg Kuuhaku pela cave dos geot . Held Itens By Gabriel Sales Gabriel Sales AnnaFeeh pelo script do ditto system pxg Obs: Se Está faltando algum crédito me avise pra mim colocar ( Não sei se está faltando algum) Obs: Qualquer Outra Duvida Estarei de Suporte no Tópico Obs: SENHA GOD/GOD OBS : Se Pegar o Servidor e Postar em Outro Fórum sem as minhas permissão vou pedir para o dono do forum ou site retirar o conteúdo . (Esse Conteúdo é exclusivo do TibiaKing obrigado) Se ajudei Já sabe né
  5. [10.91] Remere's Map Editor

    Hrod reagiu a Bruno Carvalho por uma resposta no tópico

    1 ponto
    Bom pessoal, há muito tempo o Remere's Map Editor ficou open source. Eu estou testando e gostaria de compartilhar ele com vocês. Changelog Versão 10.91 adicionada (NOVO) (Não é uma versão oficial e como sempre digo: Não é recomendado que se utilize os items novos, apenas crie o mapa sem utilizá-los até que tenha um OTB oficial) Melhorias no sistema de zoom Suporte para versões 10.10+ Live casts Ultima versão do github Informações Precisa do Microsoft Visual C++ 2013 - 32/64Bits: Redistributable Package Não tem suporte para Windows Xp Download Versão até 10.91 rev 250 https://mega.nz/#!z9910YbL!9cHUvoYlrFiwshsVCe-JEKKzqrwp-w7ZsCqhFiAtBWE Créditos Hjnilsson (RME) MartyX - Ajudou a compilar Comedinha (Bruno Carvalho) Pessoal do TPForums Outros Contato com o criador: Pelo Twitter: @leremere
  6. Sprites shinys pokemons !

    NicolasCRP reagiu a wesquel por uma resposta no tópico

    1 ponto
    Repintei umas sprites e quero pergunta se ficou boa as cores delas ! aki estao elas ! Shiny Zygarde : Mega Shiny Banette : Mega Shiny Gyarados : Mega Shiny Tyranitar : Mega Shiny Charizard Y e X : Mega Shiny Blaziken Shiny Raikou Shiny Suicune Shiny Tropius Shiny Xerneas Shiny Yveltal Shiny Latios e latias
  7. Sprite Stones, Badges e Gyns para Poketibia

    arawnzz reagiu a L3K0T por uma resposta no tópico

    1 ponto
    Disponibilizo pra vocês sprites dos gyns e badges deles no total de 16 gyns. Alguma stones também! tem pra adicionar no Object Builder e pra Dat editor sua preferencia! Download SCAN
  8. Utilizando Scripts no MageBot

    DaPYuumii reagiu a Wakon por uma resposta no tópico

    1 ponto
    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/
  9. Change Sex por Item

    Johncore reagiu a luanluciano93 por uma resposta no tópico

    1 ponto
    Olá pessoal, para quem não sabe esse script funciona da seguinte maneira: você clica em um X item, e o player muda de sexo, se ele for male vira female, e vice-versa. Crie um arquivo com o nome change_sex.lua em actions/scripts e coloque isso dentro: change_sex.lua (TFS 1.0) change_sex.lua (TFS 1.1 e 1.2) E em actions.xml adcione a tag: <action itemid="XXXX" script="change_sex.lua"/> Basta colocar o id do item em XXXX acima, e prontinho. Bem simples né pessoal ?! Espero ter ajudado, abraços!
  10. (Resolvido)[Erro] Apache não starta!

    Vodkart reagiu a Fir3element por uma resposta no tópico

    1 ponto
    Fecha o skype ou qualquer outro programa que use a porta 80 e tenta abrir.
  11. 1 ponto
    local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_TICKS, 20000) setConditionFormula(condition, 0.3, -24, 0.3, -24) function onSay(cid, words, param) local pos = getThingPos(cid) local tempo = 5 -- em segundos if (os.time() - getPlayerStorageValue(cid, "correr")) >= tempo then setPlayerStorageValue(cid, "correr", os.time()) if(param == '') then doSendMagicEffect(pos, 12) doCreatureSay(cid, "Strong Haste", 20, false, 0, pos) doAddCondition(cid, condition) end local t = string.explode(param, '"') if(t[2]) then doCreatureSay(cid, "".. t[2], 20, false, 0, pos) doSendMagicEffect(pos, 12) doAddCondition(cid, condition) end else doPlayerSendCancel(cid, "You are exhausted.") end return true end
  12. (Resolvido)[Duvida] - Começar do ZERO!

    Morphred reagiu a Wend II por uma resposta no tópico

    1 ponto
    Base com source tem várias ai, no titulo geralmente tem falando "Open Source" sobre a explicação sobre source veja ai abaixo
  13. Não tinha entendido mesmo , desculpe já tentou contatar o dono do servidor para lhe dar suporte sobre o erro?
  14. Erro Ao Usar o Restart no LINUX

    gangul321 reagiu a Fir3element por uma resposta no tópico

    1 ponto
    Tenta compilar com a tag --enable-root-permission
  15. 1 ponto
    Deve ser as skills ou o level do adm que tá muito alto n?
  16. 1 ponto
    abrir portas https://www.youtube.com/watch?v=nEjxRET8Isg olha esse tutorial http://www.speedtouch.com.br/TD5136v2/aqvtd5136v2/manuais/Configurar_modem_LIBERAR_BLOQUEAR_acesso_e_navega%C3%A7%C3%A3o_atrav%C3%A9s_MAC_%20ADDRESS.pdf
  17. (Resolvido)[PEDIDO] Monstros ZAO 8.6

    maikons reagiu a gangul321 por uma resposta no tópico

    1 ponto
    Adicione (caso nao houve) no seu monster.xml ( LOCALIZADO NA PASTA DATA/MONSTER) <monster name="Terramite" file="terramite.xml"/> --Coloque caso esteja na pasta monster, caso tiver por exemplo na pasta monster/insects vc coloca file="insects/terramite.xml" <monster name="Lizard Dragon Priest" file="lizard dragon priest.xml"/> <monster name="NomeDoMonstro" file="local e nome do arquivo pasta/exemplo.xml"/> Aqui estao os monstros: terramite.xml lizard dragon priest.xml lizard legionnaire.xml lizard high guard.xml lizard chosen.xml lizard zaogun.xml draken warmaster.xml draken spellweaver.xml Jogue este na pasta DATA / MONSTER
  18. 1 ponto
    Muito BOM!!!!!!!
  19. Baiak ROX (New Version)

    Enzoo reagiu a marlonxd por uma resposta no tópico

    1 ponto
    qual a senha do god
  20. - Pokemon Imperium - Open Source!

    Bluester reagiu a Nextbr por uma resposta no tópico

    1 ponto
    - Rep + e Vlw por Adicionar meus Creditos! Esse Servidor é mais Antigo que o PDA e mais complicado de Se Mexer. - A verdadeira Base dela é o Dash v6 - Foi Adicionado Pokelevel System Pelas Sources - Para criar um Pokemon nesse Server voce vai mexer em seguintes Pastas: - Monster (XML e Lua) - Spells (XML e Lua) Caso voce cria uma Spell Nova - Talkactions/Move1..... (Adicionar Magias de Area + Configurar a Spell de cada Pokemon + Adicionar Atributo level "Pokelevel" em cada Move) - Actions (Goback.lua: Adicionar o Pokemon nas Tabelas do Goback / Evolution.lua: Adicionar o Pokemon nas Tabelas do Evolution) - Creaturescripts ( LVL.lua : Adicionar o Pokemon na Tabela "KKKKK" / Idade.lua: Adicionar o Pokemon na Tabela "Pokeidade") - Pode ter mais Configuraçoes a se Fazer no Momento agora eu nao Lembro, Boa Sorte =)
  21. Spells PXG

    matheushk reagiu a zipter98 por uma resposta no tópico

    1 ponto
    Em data/lib, pokemons moves.lua: abaixo de: local table = getTableMove(cid, spell) --alterado v1.6 adicione: if spell == "DB" then table = getTableMove(cid, "Destiny Bound") end Código do Destiny Bound: elseif spell == "Destiny Bound" then local death = 3 --Tempo para morrer, em segundos. setPlayerStorageValue(cid, 8401, 1) addEvent(function() if isCreature(cid) and getPlayerStorageValue(cid, 8401) > -1 then setPlayerStorageValue(cid, 8401, -1) doCreatureAddHealth(cid, -getCreatureHealth(cid)) end end, death * 1000) Código da spell que o Destiny Bound irá executar (caso o pokémon seja morto): elseif spell == "DB" then spell = "Destiny Bound" local config = { effect = 136, --Effect. area = selfArea1, --Área do golpe (criada em data/lib/areas.lua). element = ghostDmg, --Elemento do ataque. } setPlayerStorageValue(cid, 8401, -1) doMoveInArea2(cid, config.effect, config.area, config.element, min, max, spell) data/actions/scripts, goback.lua: acima de: doReturnPokemon(cid, z, item, effect) adicione: if getPlayerStorageValue(z, 8401) > -1 then return setPlayerStorageValue(z, 8401, -1) and doCreatureAddHealth(z, -getCreatureHealth(z)) elseif getPlayerStorageValue(z, 8402) > -1 then return setPlayerStorageValue(z, 8402, -1) and doCreatureAddHealth(z, -getCreatureHealth(z)) end abaixo de: local pk = getCreatureSummons(cid)[1] if not isCreature(pk) then return true end adicione: if getPlayerStorageValue(pk, 8401) > -1 then return setPlayerStorageValue(pk, 8401, -1) and doCreatureAddHealth(pk, -getCreatureHealth(pk)) elseif getPlayerStorageValue(pk, 8402) > -1 then return setPlayerStorageValue(pk, 8402, -1) and doCreatureAddHealth(pk, -getCreatureHealth(pk)) end data/creaturescripts/scripts, exp2.0.lua: troque: if valor >= getCreatureHealth(cid) then if isInArray(cannotKill, combat) and isPlayer(cid) then valor = getCreatureHealth(cid) - 1 else valor = getCreatureHealth(cid) end end por: local config = { sturdy = { --Pokémons que possuem a habilidade Sturdy. Configuração: ["nome_do_pokemon"] = lookType, ["Aggron"] = lookType, }, cd = 30, --Cooldown da habilidade. duration = 8, --Duração, em segundos, do Sturdy. storages = { db = 8401, s = 8402, s_cd = 8403, }, } if getPlayerStorageValue(cid, config.storages.s) > -1 then return false end local hp = getCreatureHealth(cid) - valor if not isPlayer(cid) then if hp <= 1 then if config.sturdy[getCreatureName(cid)] then local b = true if isSummon(cid) then local ball = getPlayerSlotItem(getCreatureMaster(cid), 8) if ball and getCD(ball.uid, "sturdy") > 0 then b = false end end if b then if hp < 1 then doCreatureAddHealth(cid, hp < 0 and (hp * -1) + 1 or 1) end setPlayerStorageValue(cid, config.storages.s, 1) if isSummon(cid) then local ball = getPlayerSlotItem(getCreatureMaster(cid), 8) if ball then setCD(ball.uid, "sturdy", config.duration + config.cd) end end doSetCreatureOutfit(cid, {lookType = config.sturdy[getCreatureName(cid)]}, config.duration * 1000) addEvent(function() if isCreature(cid) and getPlayerStorageValue(cid, config.storages.s) > -1 then setPlayerStorageValue(cid, config.storages.s, -1) doCreatureAddHealth(cid, -getCreatureHealth(cid)) end end, config.duration * 1000) end end end end if valor >= getCreatureHealth(cid) then if isInArray(cannotKill, combat) and isPlayer(cid) then valor = getCreatureHealth(cid) - 1 else valor = getCreatureHealth(cid) if not isPlayer(cid) and getPlayerStorageValue(cid, config.storages.db) > -1 then docastspell(cid, "DB") end end end data/lib, newStatusSyst.lua: Troque: doCreatureAddHealth(cid, -damage, 15, COLOR_BURN) por: if getPlayerStorageValue(cid, 8402) == -1 then doCreatureAddHealth(cid, -damage, 15, COLOR_BURN) end Troque: doCreatureAddHealth(cid, -dano, 8, COLOR_GRASS) por: if getPlayerStorageValue(cid, 8402) == -1 then doCreatureAddHealth(cid, -dano, 8, COLOR_GRASS) end Troque: doCreatureAddHealth(cid, -damage) doSendAnimatedText(getThingPos(cid), "-"..damage.."", 144) doSendMagicEffect(getThingPos(cid), 45) ------ local newlife = life - getCreatureHealth(cid) if newlife >= 1 and attacker ~= 0 then doSendMagicEffect(getThingPos(attacker), 14) doCreatureAddHealth(attacker, newlife) doSendAnimatedText(getThingPos(attacker), "+"..newlife.."", 32) end por: if getPlayerStorageValue(cid, 8402) == -1 then doCreatureAddHealth(cid, -damage) doSendAnimatedText(getThingPos(cid), "-"..damage.."", 144) doSendMagicEffect(getThingPos(cid), 45) ------ local newlife = life - getCreatureHealth(cid) if newlife >= 1 and attacker ~= 0 then doSendMagicEffect(getThingPos(attacker), 14) doCreatureAddHealth(attacker, newlife) doSendAnimatedText(getThingPos(attacker), "+"..newlife.."", 32) end end
  22. [Link Quebrado] IceWars Baiak (8.60)

    thaynan18 reagiu a cpu159158 por uma resposta no tópico

    1 ponto
    Disse que ajeitou Tudo Procurei BUG NO MAX ACHEI BUG DA BOOTS AXE = STAFF=SWORD ! E ARMOR !
  23. [Aula 4] Operadores e Bibliotecas

    liborio99 reagiu a 3visan por uma resposta no tópico

    1 ponto
    Operadores Aritméticos e Bibliotecas Aula 4 Na aula anterior vimos como chamar funções e conhecemos as funções print e type. Nesta aula apenas vou reforçar a aula anterior ensinando as funções mais básicas e usadas que são nativas da linguagem Lua, ou seja, não são funções criadas para Open Tibia Server, e sim funções prontas que já estão incluídas na linguagem Lua, e vou ensinar também os operadores aritméticos. Vamos começar com eles. Os Operadores Aritméticos OBS: Você pode fazer seus testes no editor e interpretador Lua usando a função print para exibir os resultados. Enquanto você quiser mecher em Lua (Ou em qualquer outra linguagem de programação), você vai precisar fazer contas matemáticas, sejam elas contas simples como uma adição, ou até mesmo contas complexas, incluindo fórmulas e etc... Os operadores aritméticos funcionam exatamente como na matemática que você está acostumado na escola. Os operadores aritméticos que você provavelmente conhece (A não ser que esteja usando fraldas) são: Adição (+) Subtração (-) Multiplicação (*) Divisão (/) Você já pode começar a testá-los: print(3+2) print(3-2) print(3*2) print(3/2) O resultado será: 5 1 6 1.5 OBS: Se este não for o resultado, procure a assistência técnica pois seu sistema operacional só pode ser pirateado... Existem mais 3 operadores aritméticos que você talvez não conheça. São eles: Módulo (%) Exponencição (^) Unário (-) As Bibliotecas Vimos na aula anterior que existem vários tipos de dados, como por exemplo, strings e números. Assim como estes tipos, existem bibliotecas (Conjuntos de funções) para manipular estes tipos. Vamos conhecer as funções mais básicas das bibliotecas mais usadas. A Biblioteca Padrão: A biblioteca padrão não contém funções para manipular especificamente um tipo de dado, e sim o ambiente de programação. Suas funções mais básica, importantes e mais usadas são: Sintaxe: Modo correto de escrever o código. OBS: O que estiver entre [ e ] são argumentos opcionais, ou seja, você pode defini-los ou não. Quando houver três pontos (...) significa que você pode enviar quantos argumentos desejar. dofile(filename) Abre o arquivo e o executa como um bloco de código Lua. Otima função para carregar bibliotecas criadas em Lua. print(···) Escreve uma ou mais frases no interpretador. Ótima para fazer testes. A função suporta todos os tipos de dados. tonumber(value [, base]) Transforma um valor em número. Se não for possível converter, retorna 'nil'. tostring(value) Transforma um valor em string. type(value) Retorna o tipo de um valor. Funções de bibliotecas padrões A Biblioteca Math: A biblioteca Math serve para manipular operações aritméticas, números, etc... math.ceil(x) Retorna um valor inteiro maior que x mais próximo de x. (Em outras palavras, arredonda para cima.) math.floor(x) Retorna um valor inteiro menor que x mais próximo de x. (Em outras palavras, arredonda para baixo.) math.random([m [, n]]) Retorna um valor pseudo-randômico entre m e n baseado em uma semente (Um número que determina a sequência). math.randomseed(value) Altera a semente do pseudo-randomismo. todas as funções de biblioteca math A Biblioteca String: A biblioteca string manipula strings... string.gsub(s, pattern, repl [, n]) Procura na string 's' por valores iguais à string 'pattern' e substitui pela string 'repl'. string.len(s) Esta função retorna o tamanho da string 's'. string.lower(s) Retorna a string 's' com as letras em minúsculas. string.upper(s) Retorna a string 's' com as letras em maiúsculas. string.rep(s, n) Retorna a string 's' repetida 'n' vezes. string.reverse(s) Retorna a string 's' ao contrário. string.sub(s, i [, j]) Retorna a parte da string 's' entre as posições i e j. todas as funções da biblioteca string A Biblioteca OS: Esta biblioteca serve para pegar valores ou manipular o sistema operacional, como por exemplo, pegar a data. os.clock() Retorna o tempo de execução do script, em segundos... os.date([format [, time]]) Retorna a data baseada no formato 'format'. os.time([table]) Retorna um número correspondente à hora atual. Todas as funções biblioteca OS Vamos ver um por um: O Operador de Módulo (%): Este operador vai lhe dar o resto de uma divisão, por exemplo, o módulo de 3 por 2 é 1, pois 3 dividido por 2 dá 2 e sobra 1. print(3%2) 1 O Operador de Exponencição (^): Este operador vai lhe dar o valor de uma potência, por exemplo, a potência de 3 por 2 é 9, pois 3 elevado a 2 dá 9. print(3^2) O Operador Unário (-): Este operador vai lhe dar o inverso de um valor, por exemplo, o inverso de 3 é -3, pois 3 vezes -1 dá -3. print(-3) Prioridades Aritméticas (( e )): Existem também as prioridades aritméticas, que devem ser definidas com ( para iniciar e ) para finalizar. Por exemplo: print(3+3*3) print((3+3)*3)
  24. [Aula 3] Primeiros Passos

    liborio99 reagiu a 3visan por uma resposta no tópico

    1 ponto
    Primeiros Passos Aula 3 Relembrando o que eu disse na primeira aula, você precisará de um interpretador Lua e é muito recomendado que possua também um bom editor com suporte à sintaxe Lua, então nosso primeiro passo será obter o editor e o interpretador. As aulas serão voltadas ao scripting para Open Tibia Servers, então nada melhor do que um bom OTServer para testar seus scripts, mas ficar testando os scripts em um OTServer pode ser uma tarefa cansativa e demorada, então vamos usar também scripts fora de OTServers para praticar. Para isso, você pode fazer o download de qualquer um dos seguintes programas: Editores + Interpretadores: SciTE Scintilla [Avançado] OTScript Live! [Recomendado] Editores: Notepad++ Interpretadores: Lua [Oficial] Depois que você tiver seu editor e interpretador Lua (Recomendo o OTScript Live!), instale ele. No caso do OTScript Live!, depois de descompactar, vá em "Help", no menu, e clique em "Register To Lua". Abrirá uma caixa confirmando a alteração, basta apertar "OK" e todos os seus scripts irão abrir com o OTScript Live!. testando seus scripts! No caso do SciTE, para testar o seu script você deve primeiro salvá-lo com a extensão Lua (*.lua). No caso do SciTE e do OTScript Live! você pode testar seu script apenas apertando F5, sendo que no OTScript Live! não é necessário salvar o script antes de testar. Após pressionar F5, o SciTE irá abrir uma área de textos abaixo da área de edição com as informações do teste, e o OTScript Live! vai abrir uma janela. Para testar se o seu SciTE ou OTScript Live! está funcionando, use o seguinte script: print("Hello world!") Nas informações mostradas pelo interpretador deve estar escrito "Hello world!". Se aparecer, parabéns, você testou o seu primeiro script Lua...(Ou não >.<) O que o script fez? o0 Uma das coisas mais importantes nos scripts são as funções. Uma função é "um bloco de código previamente pronto", uma subrotina, que quando chamada executa esse bloco. Imagine as funções como um atalho para executar alguma coisa. Pode ser usada, por exemplo, para encurtar scripts que tenham alguma parte do codigo que se repita muitas vezes. Criando uma função você pode usar esse código que se repete muitas vezes somente uma vez (Dentro da função), então em vez de usar esse bloco várias vezes, você só precisaria chamar a função várias vezes. Você pode criar suas próprias funções, mas isso veremos mais para frente. Tudo o que importa agora é aprender a chamar funções. O "Nome da Função", na verdade, é o nome da variável em que está armazenada a função, mas não se preocupem com isto ainda... O "Nome da Função" é o nome que você deve chamar para que a função ocorra, pois há vária funções (Obviamente), então você deve especificar qual função quer chamar. É a mesma coisa do que ter 3 pessoas. Quando quiser chamar uma das pessoas, deve dizer o nome dela. Os argumentos são as "Respostas" para as "Perguntas" da função chamada. A maioria das funções faz "perguntas". No caso da função "print", ela nos "perguntou" o que queriamos escrever na tela, e "respondemos": "Hello world!". É importante lembrar que cada pergunta deve ser respondida adequadamente, por exemplo, se alguém te pergunta: "Que horas são?" você não pode responder: "Sim.". A mesma coisa acontece com as funções, você deve responder exatamente o que ela está perguntando. Outra observação importante é que você deve responder as perguntas da função na ordem em que foram perguntadas. Se a pergunta nº 1 for "Que horas são?" e a nº 2 for "Quer um biscoito?", você deve responder respectivamente que horas são e se você quer um biscoito. OBS: Algumas funções fazem "perguntas" opcionais, ou seja, você pode ou não responder. Se você não "responder", a própria função atribuirá um valor padrão para a resposta. Os parâmetros são simplesmente o conjunto de todos os argumentos. OBS: Todos os argumentos (Respostas) do parâmetro devem estar entre parênteses e ser separados por vírgulas! Tipos de valores! Bem, como eu disse, cada resposta deve seguir o tipo da pergunta, então vou citar aqui os tipos destes valores. OBS: Existe uma função para descobrir o tipo de cada valor! Esta função é a função type(valor)... Numbers Como o nome diz, numbers são números, não há muito o que falar sobre eles... Exemplo: print(1) print(2) print(3) OBS: A função print aceita todos os tipos como resposta. Strings As strings devem iniciar com um símbolo especial e deve terminar com o mesmo caractere que foi usado para iniciar a string. Esses símbolos são: Apóstrofo: Começa com ' e termina com '. Aspas: Começa com " e termina com ". Colchete-Colchete: Começa com [[ e termina com ]]. Colchete-Igual-Igual-Colchete: Começa com [==[ e termina com ]==]. As strings são conjuntos de caracteres, como letras, números (Não são numbers, pois se houver um número entre os símbolos especiais será tomado como string!!!), acentos, espaços, etc... Se você quiser escrever uma frase na tela, por exemplo, não pode deixá-la solta pelo script. Esta frase deve ser uma string, ou o script dará erro. Exemplo: print('Apóstrofos') print("Aspas") print([[Colchete-Colchete]]) print([==[Colchete-Igual-Igual-Colchete]==]) OBS: 1 << Isto é um number. "1" << Isto é uma string. Booleanos Os booleanos podem assumir apenas dois valores: true e false. true: Valor verdadeiro. false: Valor falso. OBS: Os booleanos podem ser complicados de entender no começo, mas com o tempo você acostuma. Não se preocupe com eles agora... Exemplo: print(true) print(false) print(nil) Functions Exatamente o que o nome diz: é o que estamos vendo agora. Functions são nada mais nada menos do que funções. Exemplo: print(function() end) OBS: Não se preocupe com isso ainda! Tables ou Arrays São tabelas, ou seja, armazenam mais do que um valor dentro de uma "caixa". Tabelas podem armazenar outras tabelas e todos os valores dentro de uma tabela possuem um identificador, chamado "index" (índice). Tabelas começam com o símbolo { (Chave) e terminam com o símbolo } (Chave). Exemplo: print({}) Userdata Lua é uma linguagem de programação criada para dar extensão à linguagem de programação C e C++. Userdatas são ponteiros que indicam valores em C ou C++. Não se preocupe com eles. Nil Nil simboliza um valor nulo. Não deixa de ser um valor, mas é um valor sem conteúdo. Exemplo: print(nil) As funções retornam! Toda função retorna um ou mais valores, nem que sejam valores nulos (nil), portanto você pode usar uma função dentro do print para escrever os valores que a função retornar! Vamos usar como exemplo a função type(valor), que vai nos retornar uma string com o tipo do valor. Exemplo: print(type(1)) O exemplo acima vai escrever em sua tela a frase: "Number", pois 1 é um number! Exercícios: Usando a função print para escrever na tela e type para pegar o tipo de algum valor, obtenha as seguintes frases na tela: Resposta no spoiler abaixo, tente fazer antes de ver. Creditos: 99% Skyen Hasus 1% Vittu Aula 4 Operadores e biblioteca
  25. Invite house

    Fir3element reagiu a Ceos por uma resposta no tópico

    -1 pontos
    Nossa cara boa ideia você tem em, magina se um cara invita o outro e esquece de tirar?, ele coloca items na house ai o cara vai la e rouba?, Cade a lista para ver quem ta invitado na house? PENSE MAIS, CRIE MENOS.
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo