Ir para conteúdo

koyotestark

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    koyotestark recebeu reputação de Otaldapantera em Character View com outfit e skills Modern AAC   
    Ola pessoas, venho trazer algo aqui que eu armenguei para meu site e queria compartilhar, com vocês que é o CharacterView com skills e outfits.
    O Script de outfit no character view eu peguei do Otland postado pelo averatec e então fiz algumas adições com o pouco que entendo.
    Vamos as explicações?
    Para adicionar a outfit vcs vão precisar de 2 coisas. 
    1 - do script que vou disponibilizar
    2 - das outfits de seu ot. para isso vcs terão que exportar manualmente ou do jeito que souberem, caso seja de ot alternativo, se for de tibia ja vou disponibilizar as outfits do 8.60 que foi coclocado pra dowload junto na postagem do otland.
     
    Instalando view_chacracter.php
    - Vá até a pasta do xamp ou programa onde está seu site e abra a pasta do site, caso seja no xampp será o htdocs.
    Dentro da pasta procure por "SYSTEM", depois "APPLICATION" e depois "VIEWS"
    Cole o view_character.php dentro de VIEWS.
    - Agora para aparecer as outfits, vá em PUBLIC e cole tudo o que estiver dentro da pasta OUTFITTER que são: o arquivo "outfitter.php" e a pasta "outfits"
    - Caso adicione novas outfits siga o modelo das outfits que estão dentro. "lembrando que devem estar sempre na pasta outfit e template" caso seja outfit colorida, coloque a base na pasta template.
    - Caso seu servidor seja alternativo "dragon ball, naruto etc. apague todas as outfits e insira as suas de db/nt, renomeie as suas da seguinte forma "1_2_0_0" alterando somente o primeiro numero que é referente ao ID da outfit.
     
    Eu adicionei apenas 5 skills, pois são os que mais sao usados em meu servidor, caso queira usar mais, basta copiar esta parte
    e colocar abaixo ou acima e mudar o skill ID referente ao skill, sendo? 
    0 fist, 1 club, 2 sword, 3 axe, 4 distance, 5 shield e 6 fishing.
    E renomear como desejar
     
    - Caso queira remover as barras horizontais do fundo, basta remover este trecho 
    bgcolor="#D4C0A1"  
    Demonstração:
    Eu fiz questão de usar uma outfit 64px para mostrar o que acontece quando for assim.
    Optei por upar em mais de 1 servidor.
    Arquivos:
    Outfitter + Character View GoogleDrive
    Outfitter + Character View Mediafire
    Outfitter + Character View Mega
    Outfitter + Character View.zip
    SCAN:
    https://www.virustotal.com/gui/file/4e35ee20732efb1e7df9196416bd40b05ea92230f629f9ba427d32dfdb7b8f71/detection
    Creditos: 
    Eu: Kira Conquest/Kira Stark - por editarr e adicionar skill bar
    averatec do Otland onde eu peguei o outfitter
    eu não lembro onde eu peguei o script mana e health bar
  2. Obrigado
    koyotestark deu reputação a L3K0T em Tibia Ginius Versão 1.1 by L3K0T   
    Tibia Ginius Versão 1.1 by L3K0T
     
    O Tibia Genius, desenvolvido por L3K0T, é uma ferramenta essencial para desenvolvedores de OTServ que desejam otimizar e simplificar o processo de desenvolvimento dos seus servidores. Essa ferramenta integra diversas funcionalidades que eliminam a necessidade de utilizar múltiplos programas para tarefas distintas. Entre suas principais funcionalidades, destacam-se:
     
    Item Editor: Permite a edição detalhada dos itens do jogo, facilitando a criação e modificação de itens conforme a necessidade do servidor. RME (Remere's Map Editor): Um editor de mapas completo que oferece uma interface intuitiva para criar e modificar mapas do jogo. Object Builder: Ferramenta para a construção e edição de objetos no jogo, essencial para personalizar a experiência do jogador. Mapa Converter: Utilitário que converte mapas entre diferentes formatos, garantindo compatibilidade e facilitando a integração de mapas em diversos servidores. Servidor Integrado: Opção para iniciar o servidor diretamente no ambiente Windows para testes, eliminando a necessidade de configurar servidores externos para verificações rápidas. Acesso Facilitado às Pastas: Botões dedicados para acessar rapidamente as pastas do servidor, aumentando a eficiência no gerenciamento dos arquivos do servidor.  
    Antes de utilizar o Tibia Genius, é necessário importar o servidor. Isso é feito através do botão "Selecionar Servidor", onde o usuário deve especificar a pasta do servidor para que todas as funcionalidades possam ser utilizadas de forma integrada. Da mesma forma, para utilizar o RME e o Item Editor, é preciso importar os arquivos SPR e DAT do cliente do jogo.
    Com o Tibia Genius, l3k0t proporciona uma solução tudo-em-um para desenvolvedores de OTServ, tornando o processo de desenvolvimento mais ágil e centralizado, ao mesmo tempo que oferece ferramentas poderosas e de fácil acesso para a criação e manutenção de servidores personalizados.
     
     

     
     

     
     
    Espero que ajude os preguiçosos risos, qualquer coisa reporte e ajude a melhorar, ideias são todas bem vindas!
     
    Download GitHub:  https://github.com/l3k0t/Tibia_Ginius
    Scan Virus Total: https://www.virustotal.com/gui/file/f406f1310f8c5f403c35115eaaddc609ccdff2ff56b4a96b619ac7df914829e1?nocache=1
    Discord do Projeto: https://discord.gg/MGD55hPWYf
  3. Obrigado
    koyotestark deu reputação a gabrielzika em How to fix NPC msg sending to Default chat   
    @henkas
     
    replaces this
     


     
  4. Obrigado
    koyotestark deu reputação a xWhiteWolf em Gran Castle Event (8.54+)   
    Olá pessoa, hoje vim trazer pra vocês um script bem requisitado que inclusive é vendido por alguns scripters. Algumas versões "pioradas" dessse script podem ser encontradas em servidores cópias do Fox World porém nenhum desses scripts chegará aos pés desse daqui que foi arrumado por mim.
    Eu não sou o criador do Script, eu peguei qualquer um na internet e só fui arrumando e adicionando coisas que as pessoas reclamavam que não tinha.
    O cara que criou a versão que eu editei é esse daqui:

    Não vou me prolongar e nem falar mal da versão do Roksas, apenas saibam que eu editei ela praticamente inteira e que agora está 100%.

    Aqui tem um pequeno vídeo de como funciona o evento:
     
     

    Explicação: Gran Castle é um evento para ser feito sozinho ou com a guild, há um limite configurável no script de membros que podem entrar da mesma guild. Em dias determinados é aberto o evento e os players podem entrar ao falar com o NPC Melkrapo. Uma vez dentro do castelo os players batalharão para subir os andares e chegar até a Gran Tower, um monstro lendário que dará glória para aqueles que o derrotarem. Será que você é capaz? Instale no seu server e descubra! Um evento para redefinir o conceito de PVP e onde o seu maior inimigo serão seus semelhantes.


    Sem mais delongas vamos começar  a instalar esse monstrinho.. porque ele é grande pra caralho.
     
     
     


    Agora crie um arquivo em creaturescripts\scripts chamado Gran Tower.lua e adicione o seguinte:

    em data\lib crie um arquivo chamado 046-Gran Tower.lua e adicione o seguinte dentro dele:
    Agora voltando aos creaturescripts crie um arquivo em scripts chamado Gran Aura.lua e adicione:


    E um arquivo chamado Barrier.lua na mesma pasta com o seguinte conteúdo:
    Agora em globalevents\globalevents.xml adicione a seguinte linha:
    <globalevent name="Gran Tower" interval="60" event="script" value="Gran Tower.lua"/> E adicione o script associado em globalevents\scripts com o nome de Gran Tower.lua:
    Agora na pasta monster procure o seu monsters.xml e adicione essas duas linhas:
    <monster name="Gran Tower" file="8.4/Gran Tower.xml"/> <monster name="Barrier" file="8.4/barrier.xml"/> Feito isso crie os monstros na pasta data\monster\8.4:
    O primeiro se chama barrier.xml e deverá conter:


    O segundo se chamará Gran Tower.xml e deverá conter:
    Agora vamos para NPC, vá em data\npc e crie um arquivo chamado Melkrapo.xml com o seguinte conteúdo:


    Agora em npc\scripts crie um arquivo chamado Melkrapo.lua e adicione o seguinte:

     
    Agora partindo pra spells vá em data\spells e adicione no spells.xml essas linhas:
  5. Obrigado
    koyotestark deu reputação a 77mateus77 em (Resolvido)[PEDIDO] spell heal x % de vida   
    Não sai a palavra do mesmo geito do outro, e não cura tambe, e aparece esse erro na distro:
     
    [27/07/2015 18:33:40] [Error - Spell Interface]  [27/07/2015 18:33:41] data/spells/scripts/curavida.lua:onCastSpell [27/07/2015 18:33:41] Description:  [27/07/2015 18:33:41] data/spells/scripts/curavida.lua:6: attempt to call global 'getPlayerMaxHealth' (a nil value) [27/07/2015 18:33:41] stack traceback: [27/07/2015 18:33:41] data/spells/scripts/curavida.lua:6: in function <data/spells/scripts/curavida.lua:5>     voce por acaso conseguiria fazer a uh heala por % do hp total? tamben serviria no caso se não conseguisse uma spell assim       ae pessoal consegui um valeu por tentarem me ajudar.   function onCastSpell(cid, item, fromPosition, itemEx, toPosition)   local hpmax = getCreatureMaxHealth(cid) local min = 15.0 -- this means 15% minimum healing local max = 15.0 -- this means 15% maximum healing local hp_add = math.random((hpmax * (min/100)), (hpmax * (max/100)))    if(hasCondition(cid, CONDITION_EXHAUST)) then doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)  doPlayerSendCancel(cid, "You are exhausted") return true end doCreatureAddHealth(cid, hp_add) doSendMagicEffect(getThingPos(cid), 32) doSendAnimatedText(getPlayerPosition(cid),"+"..hp_add.."", TEXTCOLOR_GREEN)  return true end
  6. Obrigado
    mas você quer que ele cure enquanto o jogador ainda está no chão?
    Acabei de mover o addEvent e use StopEvent.
     
    local level = 717217 -- Até que level pode healar local delay = 4 -- de quanto em quanto tempo irá adicionar (no caso, 1 segundo) local mana = 1000000000 -- quanto de mana vai ser adicionado local vida = 1000000000 -- quanto de health vai ser adicionado local eventId function doHealPlayer(cid) if getPlayerStorageValue(cid, 98910) == 1 then doCreatureAddHealth(cid, mana) doPlayerAddMana(cid,vida) doSendAnimatedText(getCreaturePos(cid), "|ROX|...", 138) doSendMagicEffect(getCreaturePosition(cid),53) eventId = addEvent(doHealPlayer, delay*1000, cid) end return true end function onStepIn(cid, item, position, lastPosition, fromPosition) if getPlayerLevel(cid) >= level then doPlayerSendCancel(cid,"Você já é acima do level ".. level .."") else setPlayerStorageValue(cid, 98910, 1) doHealPlayer(cid) end return true end function onStepOut(cid, item, position, lastPosition, fromPosition) setPlayerStorageValue(cid, 98910, -1) stopEvent(eventId) return true end  
  7. Obrigado
    koyotestark deu reputação a xWhiteWolf em [Boss Skill] Aegis of Immortal   
    Fala galera do TK, hoje vim trazer pra vocês um script de um server bem famoso, trata-se de nada mais e nada menos doque a Aegis of Immortal do Fox World. Quase nenhum OTserver consegue me deixar com vontade de jogar, mas se tem um que chegou bem próximo foi o Fox e o motivo é a criatividade dos caras. É muito fácil aprender lua e ser um ótimo scripter mas ter criatividade pra criar esse tipo de script é bem mais raro. Sem mais delongas vou apresentar a idéia do script e logo em seguida ensinar a instalar no seu servidor. 
      Aegis of the Immortal
    Descrição: É obtida 1 carga ao vencer o boss Aegis (aparece em invasões). Com esta técnica, o jogador ganha a aura do boss, e se morrer é teleportado para a Aegis Dimension, e após 3 segundos volta para o lugar que estava, com life e mana full como se não tivesse sido tocado. (limite de 1 carga) Tipo: (B.Skill) Vocações: All Vocations Elemento: n/a fonte: site do fox


    Well, o script é bem simpleszinho mas eu apanhei pra caramba pra fazer ele funcionar certinho (acredito que nem o script dos caras do Fox funcione da maneira correta, mas esse daqui vai funcionar)

    Antes de tudo você tem que criar uma área no seu map editor e colocar ela inteira como no-pvp e no-logout. Essa vai ser a área que você vai ser teleportado, será a sua "Aegis Dimension".




    Feito isso você vai precisar adicionar essa linha em creaturescripts.xml:
       <event type="statschange" name="reborn" script="reborn.lua"/> obs: eu levei muito tempo tentando fazer por onPrepareDeath mas aparentemente essa função não funciona tão bem quanto statschange e acabava chamando a si mesma repetidas vezes.

    agora crie um arquivo chamado reborn.lua na pasta creaturescripts\scripts e coloque isso dentro dele:




    Agora você só tem que adicionar essa linha no creaturescripts\scripts\login.lua (de preferencia antes do ultimo return true)
    --- BOSS SKILLS ---- registerCreatureEvent(cid, "reborn") if getPlayerStorageValue(cid, 19332) == -1 then         setPlayerStorageValue(cid, 19332, 0)      end Agora seu server possui a Aegis of Immortal e você pode configurar essa skill passiva de diferentes maneiras:
    1) Pode ser uma quest que dá como prêmio X quantidades dessa skill
    2) Um npc que vende X quantidades da skill
    3) Um item que ao ser equipado ativa a skill
    4) Um boss que vc mata e ganha quantidades dela
    5) Um bonus em algum evento
    6) Um item de shop
    etc.

    Tudo que vc precisa fazer é criar um script que dê o storage 19332, o valor do storage é o numero de vezes que vc vai utilizar a skill.

    aqui tem um exemplo de uma quest que ganha 5 charges da Aegis of Immortal:
    function onUse(cid, item) local storage = 19332 if getPlayerStorageValue(cid, storage) ~= 5 then doPlayerSetStorageValue(cid, storage, 5) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have habilited your [BOSS SKILL]") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your [BOSS SKILL] is already with "..getPlayerStorageValue(cid, storage).." charges.") end return true end e aqui tem algumas fotos de como fica no seu server:












     
    Espero que vcs tenham gostado.. 
    Vou dar 20% de Crédito pro Kilua porque sem o tutorial dele de addEvent isso daqui não seria possível e 30% pro pessoal do Fox por terem me dado a idéia do script.   

    EDIT: Fiz um monstro q dá essa skill ao morrer, só que eu inovei um pouquinho e fiz ele tendo a skill, ou seja, vc tem que matar ele um numero X de vezes pra valer de verdade kkk A graça é que esse numero de X é inerente ao player (fiz por storage), então se um grupo de 10 pessoas for fazer e cada hora uma matar, serão (X+1) vezes no mínimo auhauhauh Só que como ele não dá loot e o unico premio dele é a skill pra quem matar X vezes, então o pessoal dá KS mesmo. Enfim, aproveitem:

    creaturescripts\scripts\aegis.lua
    local config = { storagekill = 19500, --- storage q conta a quantidade de kills storageaegis = 19332, --- storage da skill tempo = 5, -- tempo até ele renascer times = 2, --- quantidade de vezes que tenho que matar charges = 1, --- cargas da skill q ganha ao matar definitivamente effect1 = 66, -- efeito ao morrer effect2 = 10 --- efeito ao renascer } function onKill(cid, target, lastHit) local killed = getPlayerStorageValue(cid,config.storagekill) local skill = getPlayerStorageValue(cid, config.storageaegis) if isMonster(target) and getCreatureName(target):lower() == 'aegis' then if killed < config.times then doCreatureSay(target, "I'll be back mortal...", 20) doSendMagicEffect(getThingPos(target), config.effect1) setPlayerStorageValue(cid, config.storagekill, killed+1) addEvent(doSendMagicEffect, 1000*config.tempo, getThingPos(target), config.effect2) addEvent(doCreateMonster, 1000*config.tempo, "Aegis", getCreaturePosition(target), true) end if killed >= config.times then setPlayerStorageValue(cid, config.storagekill, 0) if skill < config.charges then doPlayerSendTextMessage(cid,22,"Congratulations, you just killed "..getCreatureName(target).." and earned Aegis of Immortal skill!") setPlayerStorageValue(cid, config.storageaegis, config.charges) end end end return true end
    creaturescripts\scripts\login.lua registerCreatureEvent(cid, "aegis") if getPlayerStorageValue(cid, 19500) == -1 then         setPlayerStorageValue(cid, 19500, 0)      end creaturescripts.xml
    <event type="kill" name="aegis" script="aegis.lua"/> monster\aegis.xml
    <?xml version="1.0" encoding="UTF-8"?> <monster name="Aegis" nameDescription="Aegis, the immortal" race="blood" experience="0" speed="605" manacost="0"> <health now="100000" max="100000"/> <look type="287" head="0" body="0" legs="0" feet="0" corpse="0"/> <targetchange interval="2000" chance="15"/> <strategy attack="60" defense="5"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="2000" skill="210" attack="260"/> <attack name="lifedrain" interval="1000" chance="20" range="3" min="-550" max="-1050"/> <attack name="firecondition" interval="1000" chance="7" range="2" min="-800" max="-1200"> <attribute key="shootEffect" value="fire"/> <attribute key="areaEffect" value="yellowspark"/> </attack> <attack name="physical" interval="1000" chance="7" radius="6" target="0" min="-250" max="-750"> <attribute key="areaEffect" value="explosion"/> </attack> <attack name="death" interval="1000" chance="50" radius="5" target="0" min="-200" max="-500"> <attribute key="areaEffect" value="mortarea"/> <attribute key="shootEffect" value="suddendeath"/> </attack> <attack name="firefield" interval="1000" chance="4" radius="5" target="0"> <attribute key="areaEffect" value="explosion"/> </attack> <attack name="fire" interval="1000" chance="34" range="7" radius="7" target="1" min="-350" max="-850"> <attribute key="shootEffect" value="fire"/> <attribute key="areaEffect" value="firearea"/> </attack> <attack name="fire" interval="1000" chance="13" length="8" spread="0" min="-500" max="-1000"> <attribute key="areaEffect" value="explosion"/> </attack> <attack name="fire" interval="1000" chance="10" length="8" spread="3" min="-300" max="-1500"> <attribute key="areaEffect" value="firearea"/> </attack> </attacks> <defenses armor="165" defense="150"> <defense name="healing" interval="1000" chance="25" min="2000" max="3000"> <attribute key="areaEffect" value="blueshimmer"/> </defense> <defense name="speed" interval="1000" chance="10" speedchange="1800" duration="4000"> <attribute key="areaEffect" value="redshimmer"/> </defense> </defenses> <immunities> <immunity physical="0"/> <immunity energy="1"/> <immunity fire="1"/> <immunity poison="0"/> <immunity lifedrain="1"/> <immunity paralyze="1"/> <immunity outfit="1"/> <immunity drunk="1"/> <immunity invisible="1"/> </immunities> <voices interval="5000" chance="50"> <voice sentence="Poor innocent, I CAN'T DIE HAHAHAHAAHA"/> <voice sentence="Your soul will be mine!"/> <voice sentence="MUAHAHAHAAHAHA, I TOLD YOU" yell="1"/> </voices> </monster> OBS: edite ele porque eu coloquei ele muito forte, com muita vida e com muita recuperação de vida.


    monster\monsters.xml
    <monster name="Aegis" file="aegis.xml"/>
  8. Obrigado
    koyotestark deu reputação a FeehLoveCes em [ACTION] Cassino - Roleta de items   
    Olhando alguns posts vi que pediram um Cassino que já existe em um servidor ou um semelhante, porem não encontrei ninguém postando nenhum, então resolvi criar ele já que não tinha nada melhor pra fazer...
     
    Testado: OTX mas acredito que funcione em TFS 0.3/0.4
    Como funciona: Ao puxar a alavanca será roletado uma serie de itens X vezes, ao terminar o item que parar no centro é a recompensa do player.
     
     
    Instalação: Crie uma sala parecida com esta pelo seu Map Editor
     
     
    Depois em data/actions/scripts crie um arquivo chamado cassinoroll.lua
     
    Agora em Actions.xml
     
    Créditos:
    Feeh - Por criar
    @Storm - Me ajudar em algumas duvidas
     
    Caso alguém conheça quem teve a ideia do evento eu coloco os créditos
     
  9. Gostei
    koyotestark deu reputação a Wagner Campelo em OTC Advanced Sound System   
    CTRLV + CTRLC - OTland
  10. Obrigado
    koyotestark deu reputação a Chriistian em (Resolvido)Minimap Completo   
    É facil:
    1. Logue em seu server com qualquer char.
    2. Coloque os arquivos abaixo:
    data/items/items.otb
    data/world/(all files)
    na pasta data do OTClient. Vai ficar igual a imagem abaixo:
     
    Então no terminal do OTClient  (CTRL+T) e envie o codigo abaixo:
    g_things.loadOtb('items.otb') então (substitua 'ots' pelo nome do seu MAPA?
    g_map.loadOtbm('ots.otbm') isso ira congelar seu OTClient por alguns segundos.
    PRONTO!
     
    Você conseguiu o Minimapa completo do seu mapa para OTC. Após o registro, ele salvará esse mapa no diretório config do OTClient
  11. Obrigado
    koyotestark deu reputação a Gengo em [OTClient] Sistema de Dialogo Otpokemon   
    [OTClient] Sistema de Dialogo Otpokemon
     
    Venho através desse tópico contribuir para a comunidade, um simples modulo de dialogo no estilo do Otpokemon,
    não é um sistema de dialogo avançado é algo simples que deixa seu servidor intuitivo.
     
    1) Faça o download do modulo no qual se encontra no final do tópico e abrindo a pasta do seu client,, extraia e coloque o modulo na pasta modules.
     
    2) O módulo utiliza uma função chamada switch que não é comum ter no otclient, porem podemos colocar sem muito esforço, na pasta do otclient abra o arquivo util.lua que se encontra em modules/corelib/ e no final do arquivo coloque o seguinte código:
     
    Feito o passo 1 e 2, vamos para a parte do servidor.
     
    1) Crie um arquivo na pasta data/lib/ podendo ter o nome de npcdialog_lib.lua e coloque o seguinte código:
     
    2) O arquivo que acabamos de criar utiliza uma função chamada table.serialize que não é comum ter nos servidores, para que funcione sem erros vamos adicionar, abra o arquivo 012-table.lua que fica na pasta do seu servidor em data/lib/ ou você pode criar o arquivo e adicionar o seguinte código:
     
     
    Feito todo esse procedimento, estarei disponibilizando um npc para que vocês possam ter uma noção de como utilizar esse sistema de dialogo.
     
    1) Crie um arquivo na pasta do servidor em data/npc/ chamado Gengo.xml e adicione o seguinte código:
     
    2) Crie um arquivo na pasta do servidor em data/npc/lib/ com o nome gengo.lua e adicione o seguinte código:
     
     
    O npc é algo simples, porem serve para que você possa ter uma noção de como utilizar as funções do npc.
     
    Demostrativo dentro do game:

     
    Arquivos para download e o scan:
  12. Obrigado
    koyotestark recebeu reputação de LeoTK em Client da bug ao entra no TP   
    se tiver usando otc, vai em modules/game_features/features.lua, da um cntrol F em 860
    e adiciona isso
     
    g_game.enableFeature(GameDistanceEffectU16) g_game.enableFeature(GameMagicEffectU16)  
  13. Gostei
    koyotestark recebeu reputação de Doidodepeda em Windows vs Linux ???   
    Bom, sendo pratico, windows facil, linux dificil vc vai precisar de muito conhecimento pra aprender mexer com linux, 
    Quando for compilar, muitas vezes pode dar erro de biblioteca, ai so quem manja pra saber qual falta.
    Porem as bocas dizem ser mais seguro, mas ai claro, pra deixar seguro, tem que saber mecher, e se nao souber, so pagando para fazerem pra vc.
  14. Você Tentou
    sim a ideia é essa mesmo, pretendo ver como tirar pra aparecer o nome laranja, por enqunto, fiz gambiarra, e onde ta name = "nome do spell" eu deixei assim "".
    o interessante era fazer diretamente na source pra direcionar, pq eu tenho que botar o script em cada spell.
  15. Obrigado
    eu tinha acabado de conseguir rs, mas vou testar este seu tambem.
    O meu tinha ficado assim:
     
    local players = getSpectators(getCreaturePosition(cid), 10, 10, 7) for i, tid in ipairs(players) do if(isPlayer(tid)) then doPlayerSendChannelMessage(tid, MESSAGE_STATUS_CONSOLE_YELLOW, "Mensagem", TALKTYPE_CHANNEL_W, CHANNEL_TESTE) end end end  
  16. Obrigado
    local playerPos = getCreaturePosition(cid) -- Obter a posição do jogador
    local playersOnScreen = getSpectators(playerPos, 7, 5, false, true) -- Obter os jogadores na área de 7x5 tiles em torno do jogador
    for _, player in ipairs(playersOnScreen) do
        doPlayerSendChannelMessage(player, TALKTYPE_CHANNEL_O, CHANNEL_TESTE, "Teste", MESSAGE_STATUS_CONSOLE_YELLOW)
    end
     
     
    Esse é por distância, ele obtém a posição do jogador (getPlayerPosition(cid)) e, em seguida, busca os jogadores na área ao redor usando getPlayersInArea(playerPos, 7, 5). Em seguida, um loop é usado para enviar a mensagem para cada jogador encontrado na área.
  17. Gostei
    Se puder poste a solução para ajudar as outras pessoas
  18. Obrigado
    koyotestark deu reputação a Vodkart em PISO QUE REMOVE PAREDE   
    function onStepIn(cid, item, position, fromPosition) local time = 30 -- em segundos local item_id, wallpos = 1543, {x=186, y=54, z=7} -- id da parede e pos dela if not isPlayer(cid) then return true end local t = getTileItemById(wallpos, item_id).uid if t > 0 then doRemoveItem(t) doSendMagicEffect(wallpos, CONST_ME_POFF) addEvent(doCreateItem, time * 1000, item_id, 1, wallpos) end return true end  
  19. Obrigado
    koyotestark deu reputação a Under em alguem sabe me dizer como funciona desse script? pedra?   
    Explicação
     
  20. Curtir
    Exemplo:
     
    data > spells > spells.xml
     
    <instant name="NOME DA MAGIA" words="NOME DA MAGIA" lvl="100" mana="160" prem="0" selftarget="1" exhaustion="60000" needlearn="0" event="script" value="support/nomedamagia.lua"> <vocation id="1"/> <vocation id="8"/> </instant>  
    data > spells > scripts > support > nomedamagia.lua
     
    function teleportPlayer(player, position) doTeleportThing(player, position) doSendMagicEffect(position, CONST_ME_TELEPORT) end function onCastSpell(cid, var) local playerPosition = getCreaturePosition(cid) addEvent(teleportPlayer, 5000, cid, playerPosition) doSendMagicEffect(playerPosition, 13) return true end  
  21. Gostei
    in mehah OT client +2.8 .
     
    the user need to modify c++
     
     
    [1/3] src\client\creature.cpp
     
     
    in void
     
    void Creature::drawInformation(const MapPosInfo& mapRect, const Point& dest, bool useGray, int drawFlags)  
    modify
    L 237
    auto backgroundRect = Rect(p.x - (13.5), p.y - cropSizeBackGround, 27, 4); for
    auto backgroundRect = Rect(p.x + m_informationOffset.x - (13.5), p.y + m_informationOffset.y - cropSizeBackGround, 27, 4);  
     
    --------------------
    modify
    L 240
     
    auto textRect = Rect(p.x - nameSize.width() / 2.0, p.y - cropSizeText, nameSize); for
     
    auto textRect = Rect(p.x + m_informationOffset.x - nameSize.width() / 2.0, p.y + m_informationOffset.y - cropSizeText, nameSize);
    -----------------------------------------
     
    In 
    L 663
    void Creature::setDirection(Otc::Direction direction)  
    ADD
     
    callLuaField("onDirectionChange", m_direction, direction);  
    under of
     
    void Creature::setDirection(Otc::Direction direction) { assert(direction != Otc::InvalidDirection);  
     
     
     
    [2/3] src\client\creature.h
    L 260
     
    under of 
    Position m_lastStepFromPosition; Position m_lastStepToPosition; Position m_oldPosition; ADD
    Point m_informationOffset;  
     
     
    [3/3] src\client\luafunctions.cpp
    L 525
    under of
     
    g_lua.bindClassMemberFunction<Creature>("setDrawOutfitColor", &Creature::setDrawOutfitColor); g_lua.bindClassMemberFunction<Creature>("setDisableWalkAnimation", &Creature::setDisableWalkAnimation); g_lua.bindClassMemberFunction<Creature>("isDisabledWalkAnimation", &Creature::isDisabledWalkAnimation);  
     
    ADD
     
    g_lua.bindClassMemberFunction<Creature>("setInformationOffset", &Creature::setInformationOffset); g_lua.bindClassMemberFunction<Creature>("getInformationOffset", &Creature::getInformationOffset);  
  22. Gostei
    koyotestark deu reputação a Dwarfer em Aumentando Damage   
    Para evitar maiores modificações, você poderia utilizar esse aumento de dano apenas para player vs player (com monstros não funciona). Após usar a magia, o player só poderia utilizar novamente assim que o efeito do bônus no elemento (fire, ice, etc) acabasse. Então, teste assim:
     
    Em spells/scripts crie um arquivo:
     
    buffelemental.lua
     
     
    Edite as palavras "flam", "frigo" como queira ou adicione outras.
     
    Em spells.xml: (Edite as palavras da magia, o maglvl, mana e os outros parâmetros de acordo com o que desejar, esse aí é apenas para servir como base caso você não saiba como fazer)
     
     
    Em creaturescripts/scripts crie um arquivo:
     
    buffelementalattack.lua
     
     
    No login.lua, registre o evento adicionando: 
    registerCreatureEvent(cid, "BuffElemental") Em creaturescripts.xml, adicione a tag: 
    <event type="statschange" name="BuffElemental" event="script" value="buffelementalattack.lua"/> Para utilizar a magia:
     
    utori buff "flam -- o hit do player quando FIRE será aumentado em 10% como foi configurado lá na spell
     
    Para os demais:
    utori buff "tera
    utori buff "ico
    utori buff "frigo
  23. Gostei
    koyotestark deu reputação a L3K0T em Cama recuperar 2 de Stamina por minuto.   
    Tenta
     
    local STAMINA_GAIN = 2 -- Quantidade de stamina recuperada por minuto
    local STAMINA_INTERVAL = 60 * 1000 -- Intervalo de tempo entre cada aumento de stamina (em milissegundos)
    function onLogin(cid)
        checkStamina(cid) -- Verifica se o jogador já está dormindo ao entrar no jogo
    end
    function onLogout(cid)
        stopStaminaGain(cid) -- Remove o evento de aumento de stamina ao sair do jogo
    end
    function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
        stopStaminaGain(cid) -- Remove o evento de aumento de stamina ao mudar de posição
    end
    function checkStamina(cid)
        if getPlayerSoul(cid) == SOUL_SLEEPING then
            startStaminaGain(cid)
        end
    end
    function startStaminaGain(cid)
        addEvent(function()
            if getPlayerSoul(cid) ~= SOUL_SLEEPING then
                stopStaminaGain(cid)
                return
            end
            doPlayerAddStamina(cid, STAMINA_GAIN)
            startStaminaGain(cid)
        end, STAMINA_INTERVAL)
    end
    function stopStaminaGain(cid)
        stopEvent("stamina_gain_" .. cid) -- Remove o evento de aumento de stamina
    end
    function onUse(cid, item, fromPosition, itemEx, toPosition)
        if item.itemid == ID DA CAMA AQUI then -- ID do item que permite dormir
            doChangeSoulState(cid, SOUL_SLEEPING)
            checkStamina(cid)
        end
        return true
    end
     
     
    <event type="login" name="StaminaRegenLogin" script="staminaregen_login.lua"/>
    <event type="logout" name="StaminaRegenLogout" script="staminaregen_logout.lua"/>
    <event type="death" name="StaminaRegenDeath" script="staminaregen_death.lua"/>
    <event type="advance" name="StaminaRegenAdvance" script="staminaregen_advance.lua"/>
    <event type="minute" name="StaminaRegenMinute" script="staminaregen_minute.lua"/>
    <event type="startup" name="StaminaRegenStartup" script="staminaregen_startup.lua"/>
     
  24. Gostei
    koyotestark deu reputação a GamerGoiano em (Help) Alguem me ajuda com esse erro   
    Coloca 1 linha depois da function onuse
    Vai adicionar cooldown de 3 segundos no goback
    Faz o teste e me diz se deu certo @S H I O N
     
    local cooldown = 3 -- tempo em segundos de exaustão local exhaust = exhaustion.get(cid, 6666) or 0 -- obtém a exaustão atual do jogador if exhaust + cooldown > os.time() then -- se o jogador ainda estiver exausto    doPlayerSendCancel(cid, "You must wait "..cooldown.." seconds before using this item again.") -- exibe a mensagem de espera    return true -- interrompe a execução da função end exhaustion.set(cid, 6666, os.time() + cooldown) -- define a nova exaustão do jogador
  25. Gostei
    koyotestark deu reputação a GBDias em Pergaminho de EXP com tempo!   
    Olá TK,
     
    Hoje trago para vocês um MOD bem interessante que encontrei na internet, a lógica é bem simples, você usa um item e ganha mais XP durante um tempo.
    O item, a XP e o tempo são totalmente configuráveis, vocês podem mudar como quiserem.
     
    FUNCIONA COM TFS 0.4 E DEVE FUNCIONAR COM 0.3.6 (NÃO TESTADO)
    Eu vou testar com a minha versão 0.3.7 quando chegar em casa e edito o post para vocês.
     
     
    Bem, então vamos ao script,
     
    Abra a pasta "mods" do seu servidor e crie um arquivo chamado expscroll.xml, abra e coloque o seguinte código:
    <?xml version="1.0" encoding="UTF-8"?> <mod name="Experience Stages Scroll" version="1.0" author="TomCrusher" contact="otland.net" enabled="yes"> <action itemid="9004" event="script" value="expstagescroll.lua"/> <creatureevent type="think" name="ExpStage" event="script" value="expstagescroll.lua"/> <creatureevent type="login" name="ExpStageLogin" event="script" value="expstagescroll.lua"/> </mod> Agora em "mods/scripts", crie um arquivo chamado expstagescroll.lua e coloque este código:
    local config = { rate = 2, storage = 1000, expstorage = 1100, register = 1200, time = 14400, } function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, config.storage) <= 0 then local rates = getPlayerRates(cid) setPlayerStorageValue(cid, config.expstorage, rates[SKILL__LEVEL]) setPlayerStorageValue(cid, config.register, 1) itemEx=itemid == 9004 doCreatureSay(cid, "Your extra experience rate has been activated! It now is: " .. config.rate .. "x added to your former experience rate.", TALKTYPE_ORANGE_1, true, cid) setPlayerStorageValue(cid, config.storage, os.time()+config.time) doPlayerSetExperienceRate(cid, rates[SKILL__LEVEL]+config.rate) doRemoveItem(item.uid,1) registerCreatureEvent(cid, "ExpStage") else doCreatureSay(cid, "You must finish first exp condition to start other exp condition !", TALKTYPE_ORANGE_1, true, cid) end return true end function onThink(cid, interval) if getPlayerStorageValue(cid, config.register) == 1 then if getPlayerStorageValue(cid, config.storage) <= os.time() then doCreatureSay(cid, "Your extra experience rate has finished! It is now normaly experience rate.", TALKTYPE_ORANGE_1, true, cid) setPlayerStorageValue(cid, config.storage, 0) setPlayerStorageValue(cid, config.register, 0) local oldexp = getPlayerStorageValue(cid, config.expstorage) doPlayerSetExperienceRate(cid, oldexp) unregisterCreatureEvent(cid, "ExpStage") end end return true end function onLogin(cid) if getPlayerStorageValue(cid, config.register) == 1 then registerCreatureEvent(cid, "ExpStage") local rates = getPlayerRates(cid) doCreatureSay(cid, "Your extra experience rate is still here! It is: " .. config.rate .. "x added to your former experience rate.", TALKTYPE_ORANGE_1, true, cid) if getPlayerStorageValue(cid, config.storage) > os.time() then local oldexp = getPlayerStorageValue(cid, config.expstorage) doPlayerSetExperienceRate(cid, oldexp+config.rate) end end return true end Configurando:
     
    rate = 2, -- número que irá ser multiplicado pela sua exp rate básica (funciona com números quebrados, tais como 1.5 ou 0.2).
    storage = 1000, -- storage que irá guardar o tempo
    expstorage = 1100, -- storage que irá guardar a xp
    register = 1200, -- storage que indica se o player está registrado no mod
    time = 14400, -- tempo que falta para o buff do scroll acabar (o tempo é calculado em segundos, ex: 14400 segundos = 24 horas)
     
    ___________________________________________________________________________________________________________________________________
     
    Créditos :
    TomCrusher (OTland) - Desenvolveu o sistema
    Eu - Traduzi e postei aqui.

Informação Importante

Confirmação de Termo