Ir para conteúdo

caionak

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    caionak deu reputação a Tadelho em Alvos específicos em spells de área!   
    Conforme tive uma dúvida outro dia, consegui obter uma solução satisfatória e, sabendo que pode ser a dúvida de mais gente, resolvi compartilhar na forma deste pequeno tutorial.
    A ideia é muito simples: fazer com que uma spell de área atinga apenas alguns alvos conforme uma característica específica.  Isso pode ser bastante útil para diversas ideias, além do script base servir para tantos outros efeitos interessantes. 
     
    Atenção, fiz os scripts para: TFS 0.4.0
     
    Teremos como base para esse exemplo a magia "divine caldera", o famoso "exevo mas san".
     
    Nela teremos o seguinte script:
     
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA) setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 4, 6) local area = createCombatArea(AREA_CIRCLE3X3) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end  
    Desta forma, a magia atingirá todos os alvos em sua área de alcance. Mas queremos mudar isso, queremos que ela atinja alvos específicos, e aqui entram algumas ideias, por exemplo: podemos fazer com que ela acerte apenas players de um determinado level, players de uma determinada vocação, players com um determinado access, ou mesmo uma storage, ou ainda, como no exemplo que darei a seguir, fazer com que a magia acerte apenas alvos com um determinado nome (no caso, serão criaturas e não players).
     
     
    Para isso, utilizaremos uma função, "onTargetCreature(cid, target)" e depois a chamaremos como parâmetro de um "setCombatCallback(combat, key, function_name)".
     
    Na função onTargetCreature nós faremos a verificação desejada. Por exemplo, no código a seguir eu quero que a minha spell atinja apenas criaturas com o nome de "rat" ou "cave rat", então ficaria assim:
     
    function onTargetCreature(cid, target) local creatures = {"rat", "cave rat"} if isMonster(target) and isInArray(creatures, getCreatureName(target)) then doTargetCombatHealth(cid, target, type, min, max, effect) end end Traduzindo: eu criei uma tabela local com os nomes desejados, verifiquei se o alvo era um monstro e se o nome do monstro constava na minha tabela recém criada. Sendo verdadeiro, acionei a função doTargetCombatHealth(cid, target, type, min, max, effect). -- Lembrando que conforme o tipo da sua magia você vai alterar os parâmetros dessa função para que ela tenha as animações e o dano compatíveis com o seu gosto/objetivo.
     
    Outro detalhe é que nesse trecho de código acima é que é feita a verificação que eu desejo. Eu poderia ao invés disso verificar se é um jogador e se a vocação dele tem o id 1 ou 2, por exemplo. Ficaria:
    function onTargetCreature(cid, target) local vocations = {1, 2} if isPlayer(target) and isInArray(vocations, getPlayerVocation(target)) then doTargetCombatHealth(cid, target, type, min, max, effect) end end Ou verificar um level, para que a magia só funcione em alvos acima do level X, etc. Exemplo:
     
    function onTargetCreature(cid, target) local level = 80 if isPlayer(target) and getPlayerLevel(target) >= 80 then doTargetCombatHealth(cid, target, type, min, max, effect) end end  
    Feita a função, faremos aquilo que mencionei: a chamaremos como parâmetro da função "setCombatCallback" para o nosso "combat". Fica assim:
     
    setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")  
    Feito isso, pronto! Basta chamarmos a spell normalmente.
     
    Exemplo de tudo pronto para uma magia "exevo mas san" que só acerte os ratos e tira de 10 a 20 de vida:
     
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA) local area = createCombatArea(AREA_CIRCLE3X3) setCombatArea(combat, area) function onTargetCreature(cid, target) local creatures = {"rat", "cave rat"} if isMonster(target) and isInArray(creatures, getCreatureName(target)) then doTargetCombatHealth(cid, target, COMBAT_HOLYDAMAGE, -10, -20, CONST_ME_HOLYAREA) end end setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") function onCastSpell(cid, var) return doCombat(cid, combat, var) end Agora é com a criatividade de vocês!
    Até a próxima!
  2. Gostei
    caionak deu reputação a Darcio Antonio em Criando um Botão OT CLIENT   
    game_topslot.zi
    Bom o scan do arquivo está ai.
    https://www.virustotal.com/#/file/5a0b17722b93fd4c9117086b80ad24442c305a05723680cad34ec50138ef30bc/detection
  3. Gostei
    caionak deu reputação a xWhiteWolf em Magnus Challenger   
    Fala galera, hoje vim trazer o projeto pronto do Magnus Challenger pra vocês instalarem no servidor de vocês!   

    Pra quem não conhece é um sistema de Tasks baseado no Zezenia onde você pode escolher entre tasks de matar monstros ou de coletar certos items para o npc Magnus, um guerreiro famoso da cidade que está atolado de tarefas e precisa da sua ajuda!

    Peguei os aspectos que eu julguei serem os principais do modelo do Zezenia e editei com algumas coisas que eu achei que ficariam melhores.
    Quem quiser pode ver um vídeo comentado de como o sistema funciona:




    Dito isso vou ensinar vocês como instalar isso no server:
    Pra começar vá em data\creaturescripts\scripts e procure login.lua, agora vá até o final do arquivo e antes do último return true coloque essas linhas abaixo

    ainda em creaturescripts procure creaturescripts.xml e adicione essa linha junto com as outras que já estão lá (seguindo o padrão)
    <!-- TASK SYSTEM --> <event type="kill" name="tasksystem" script="tasksystem.lua"/> Agora crie um arquivo em creaturescripts\scripts com o nome de tasksystem.lua e adicione o seguinte à ele:




    Terminada a parte da contagem de kill vamos ao NPC em si.
    Crie um arquivo chamado Magnus.xml em data\npc e coloque isso dentro dele:




    Agora em data\npc\scripts crie um arquivo chamado zezeniaa.lua e adicione esse conteúdo dentro do arquivo:





    ~~~~~~~~~~~~~~~~ FEITO ISSO ESTÁ TERMINADO ~~~~~~~~~~~~~~~~~~

    Agora aprendendo a configurar:
     
    No tasksystem vc pode editar isso daqui:
    Eu fiz um sistema onde se vc estiver em party com alguém e a pessoa matar os bixos conta como se você tivesse matado; Assim incentiva o pessoal a ir numa cave de Dragon e ao invés de matar quem está lá pra ficar sozinho na cave, eles vão chamar party pra fazerem a task juntos.. assim fazer amigos fica mais fácil e com maiores laços é maior a chance do povo não abandonar o seu server.

    Apenas digite "true" ou "false" pra ativar/desativar esse sistema e em baixo temos a distancia máxima pro monstro estar do cara que está fazendo a task pra contar o kill. Se a distancia entre o monstro e a pessoa for maior que 7 não vai contar pra ele a kill.


    No zezeniaa.lua as coisas que dão pra configurar são maiores mas são igualmente simples:
    Toda vez que vc pedir uma task short (curta) vc vai ter de 100 a 400 monstros pra matar, ele gera um número de 0 a 6 e multiplica por 5 e soma com os 100 iniciais.. o mesmo vale pra todos os outros valores.

    levelcollect é o level mínimo pra fazer tasks do tipo collect.
    time é o tempo em segundos que você vai ficar sem poder falar com o npc caso desista de alguma task, o padrão é 8 * 60 * 60 (8 horas)
    bonus é por quanto vai multiplicar caso vc permita que o npc escolha aleatoriamente entre todas as opções.. o padrão é 20% de bonus (1.2)
    multiplicador é uma coisa que eu adicionei pra ficar mais fácil mexer na fórmula sem cometer cagadas, se vc tá ganhando 10% de exp e quer ganhar 80% é só colocar 8 no multiplicador.

     
    Isso daqui é o banco de dados principal do sistema de kill, toda vez que vc escolher uma task do tipo fácil, médio, dificil ele vai acessar essas tabelas contendo o nome das criaturas.. vc pode facilmente adicionar novos nomes, o npc já está programado pra lidar com isso, apenas siga o padrão e mantenha sempre o último sem vírgula!

    Ex: adicionando Morgaroth na tabela de hard
    local hard = { [1] = "Giant Spider", [2] = "Dragon Lord", [3] = "Grim Reaper", [4] = "Demon", [5] = "Crystal Spider", [6] = "Demon Skeleton", [7] = "Juggernaut", [8] = "Destroyer", [9] = "Hand of Cursed Fate", [10] = "Morgaroth" } atente-se também pra não repetir o número no index.. se o anterior era [9] use [10].

    O restante das tabelas são separadas para o banco de dados das tasks de collect:
     
    segue a mesma lógica da de kill só que aqui você tem o id dos itens que serão usados... aquela count não tem nada a ver com o item pois ele vai gerar tanto o item aleatoriamente quanto à count;
    Ex: 
    [1] = {id = 5880, count = 20}, -- iron ore isso não significa que se cair iron ore (id 5880) irá cair sempre 20.. até porque eu poderia escolher uma task long e easy e pegar a task de trazer até 50 iron ores, apenas tente manter os padrões que são os intervalos definidos.
    No easy ele varia de 10 a 20, no medium ele varia de 20 a 35 e no hard de 40 a 50.



    Espero que vocês tenham curtido, é um sistema grande mas bem simples de se mexer... se tiverem quaisquer problemas podem comentar aqui. Deu trabalho fazer isso então se você gostou deixe o seu comentário aí e o seu "Gostei" que vai me incentivar a trazer mais coisas desse tipo pra cá. Abraços do lobo.


    PS: Pra sumonar o npc digite com o GOD: /n Magnus ou coloque ele pelo map editor.
  4. Gostei
    caionak deu reputação a Storm em [RESOLVIDO] New Client Tibia   
  5. Gostei
    caionak deu reputação a Garou em Perfect Upgrade System   
    Sistema atualizado, mais limpo e com novas funções.

  6. Gostei
    caionak recebeu reputação de Pedriinz em [Error Syntax] RME Extended   
    Sabe aquele "error syntax" que pede o client.xml?
             É esse error que ensinarei a resolver blz?!
     
                                Vamos Ao Tutorial
     
    1- Você precisa ter o RME (Remere's Map Editor) Extended.
     
    2- Agora abra a pasta "Remere's Map Editor" localizada no:
        [ Disco Local -> Program Files -> Remere's Map Editor ]
     
    3- Procure por "Client" dentro da Pasta.
     
    4- Mude o nome do "Client" para "Client.xml".
     
    5- Salve e feche a pasta.
     
    6- Agora você poderá abrir o RME Normalmente !
     
     
    Link do download e tutorial do RME Extended do Vudi:
     
      [ AJUDEI ? REP+ ]
     
     
     
     
  7. Gostei
    caionak deu reputação a marcosap em [8.54] PokeCyan [ Editado By Senhor] Atualizado 3.0 2016   
    data/talkactions/scripts/move1 e procura por clan Ja era  
  8. Gostei
    caionak deu reputação a vudi em [8.54] PokeCyan [ Editado By Senhor] Atualizado 3.0 2016   
    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é  
       
  9. Gostei
    caionak deu reputação a Anjo Celestial em [8.54] PokéXRed 1.0 (PDA)   
    • Menu:
    ├ Informações;
    ├ Edições;
    ├ Erros;
    ├ Prints;
    ├ Mapa
    ├ Download;
    ├ Atualização;
    ├ Utilitários;
    └ Créditos.
     
    • Informações Basicas •
    (+)1 a 3 Gen (Completa)
    (+)Bike System
    (+)Tournament System
    (+)Clã System
    (+)Boost Stone
    (+)Shiny Stone
    (+)VIP System 100% Fucional
    (+)Moto System
    Entre outras coisas...
     
    • Edições / Ajustes •
    (+)Retirados alguns Bugs do server
    (+)Implantado remakes da 1 a 4 Gen.
    (+)Adicionados alguns comandos e system.
    (+)Nova raça de pokémons FAIRY
    (+)Adicionado Level System com balanceamento
    (+)Foi balanceado mais de 123 pokémons
    (+)Megas Pokémon no client,não deu tempo de serem add
    (+)Alguns Pokémon da 5 Gen.
     
    • Erros Do Servidor •
    Nenhum que eu saiba XD
     
    • PrintScreen •

    Em breve posto mais prints!!
     
    • Download's •
    Client e Server:https://www.sendspace.com/filegroup/2JkNESDqZBTn2xsIGFMPzg
     
    • Creditos •
    Eu
    Gabrieltxu
    Kalvin
    Zeref Shirou
     
    • Scan •
    Server: https://www.virustotal.com/pt/file/58dcb515a65fed349f13172c81de8208d66e674d372824baaa5c2c8754106816/analysis/1431740265/
    Client: https://www.virustotal.com/pt/file/162a9ec7ff56ef1af0450b7f83af402f8b112be560df7cc3a2a827aafd2f8237/analysis/
     
  10. Gostei
    caionak deu reputação a PriisioneR em (Resolvido)[Action] itens por Alavanca   
    local config = { removeItem = {id = 2671, count = 1}, addItem = {id = 2401, count = 1}, } function onUse(cid, item) if not(doPlayerRemoveItem(cid, config.removeItem.id, config.removeItem.count)) then return doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You dont have "..config.removeItem.count.." "..getItemNameById(config.removeItem.id)..".") end doPlayerAddItem(cid, config.addItem.id, config.addItem.count) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You gained "..config.addItem.count.." "..getItemNameById(config.addItem.id)..".") end Esse script ele troca um item por outro
     
    removeItem = {id = 2671, count = 1},
    addItem = {id = 2401, count = 1},

    item que o player precisa para usar
    item que ele vai ganhar após usar

Informação Importante

Confirmação de Termo