Postado Janeiro 7, 2018 7 anos Este é um post popular. Salve, pessoas. Recentemente criei esse script para meu servidor particular e, embora simples, dá uma margem legal para a criatividade de vocês. Trata-se de um script para dar uma função especial a uma weapon qualquer do seu servidor quando você enfrenta uma criatura específica (ou mesmo um tipo de criatura). Para isso utilizarmos uma função que pega o nome da criatura que você está atacando e verifica se ela pertence à sua tabela de verificação. Caso positivo, sua arma agirá de um modo diferente contra essa criatura específica. O feitio é simples: criar um script no diretório .../weapons/scripts com o nome à sua escolha. Ex: "nome.lua" Darei primeiro o conteúdo do meu script como exemplo: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1.0, 0, 1.0, 0) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat2, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat2, COMBAT_FORMULA_SKILL, 2.0, 0, 2.0, 0) local creatures = {"x", "y", "z"} function onUseWeapon(cid, var) local target = getCreatureTarget(cid) local nome = getCreatureName(target) if (not isInArray (creatures, nome)) then doCombat(cid, combat, var) else doCombat(cid, combat2, var) end end Explicando o código: combat e combat2 são, respectivamente, os diferentes efeitos que eu desejo que minha arma tenha, e aqui podemos configurar uma série de possibilidades diferentes. No caso, "combat" está configurado para que seja uma arma normal como qualquer outra. O "combat2" está configurado para que esta arma dê um dano x2 (listado na fórmula) Obs: nesta parte podemos brincar com as fórmulas e o tipo de dano conforme o gosto. Podemos adicionar um efeito secundário de algum elemento, como fogo, gelo, ou mesmo um lifedrain. Só não se esqueça de balancear a fórmula. Spoiler Exemplo de efeito secundário de gelo: local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_ICEDAMAGE) setCombatFormula(combat2, COMBAT_FORMULA_SKILL, 1.0, 0, 1.0, 0) Exemplo de efeito secundário de fogo: local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_FIREDAMAGE) setCombatFormula(combat2, COMBAT_FORMULA_SKILL, 1.0, 0, 1.0, 0) IMPORTANTE: "Creatures" é onde vou listar as criaturas para as quais quero que minha arma tenha um comportamento diferente, separadas por vírgula. Dentro da função onUseWeapon temos um código que será executado ao utilizarmos a arma em questão para um ataque. Em "target" verificamos qual a criatura alvo do meu ataque, em seguida "nome" recebe o valor do nome da criatura em questão e temos uma condicional (if) que verifica se o nome da criatura que estamos atacando está inserida em "Creatures". Caso não esteja, ela assumirá o comportamento de "combat", ou seja, será uma arma com a fórmula e dano físico padrão do servidor; caso o nome esteja na minha lista especial, a arma assumirá "Combar2" e terá uma fórmula de dano x2, será uma arma poderosa contra essa criatura listada. Uma vez feito o script, não se esqueça de registrá-lo na arma de sua preferência no weapons.xml. Ex: <melee id="2397" event="script" value="nome.lua"> Algumas ideias de como você pode utilizar a base do código: - Quests e bosses; podemos fazer um boss que só seja derrotado com uma arma específica, por exemplo. - Podemos brincar com mais recursos, como getPlayerVocation ou getPlayerLevel e com mais condicionais fazer armas que só liberem seu poder oculto nas mãos de alguma vocação, em um certo level, contra um tipo de criatura, etc. - Eu utilizei no meu servidor que é baseado em Dungeons & Dragons para fazer com que mortos vivos tomem dano integral de ataques com club mas tomem metade do dano contra ataques de sword/axe (neste universo mortos-vivos são melhor esmagados do que cortados ou perfurados). Enfim, um exemplo prático: crio uma quest com a recompensa de uma espada conhecida por "exterminar dragões". Registro no weapons.xml esta arma com um script.lua do meu gosto, como: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1.0, 0, 1.0, 0) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN) setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) setCombatFormula(combat2, COMBAT_FORMULA_SKILL, 0, -60, 0, -90) local creatures = {"Dragon", "Dragon Lord", "Frost Dragon"} function onUseWeapon(cid, var) local target = getCreatureTarget(cid) local nome = getCreatureName(target) if (not isInArray (creatures, nome)) then doCombat(cid, combat, var) else doCombat(cid, combat, var) doCombat(cid, combat2, var) end end Neste caso coloquei para, no caso de ser um dos dragões listados, ocorrer tanto o combat como o combat2, ou seja, a espada não só atacar como também drenar uma certa quantidade de vida da criatura (60-90). E no resto do tempo, ela será uma espada normal. É isso ai, espero ter contribuído. Até a próxima. Editado Janeiro 7, 2018 7 anos por Tadelho (veja o histórico de edições)
Postado Janeiro 7, 2018 7 anos Parabéns, seu tópico de conteúdo foi aprovado! Muito obrigado pela sua contribuição, nós do Tibia King agradecemos. Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP. Spoiler Congratulations, your content has been approved! Thank you for your contribution, we of Tibia King we are grateful. Your content will help many other users, you received +1 REP. Bruno Carvalho / Ex-Administrador TibiaKing [email protected] Em 26/12/2016 em 03:47, Spraypaint disse: A força da alienação vem dessa fragilidade dos indivíduos, quando apenas conseguem identificar o que os separa e não o que os une. -miltinho
Postado Janeiro 8, 2018 7 anos Eu acho muito legal quando alguém do suporte tem uma ideia legal, corre atrás de fazer e depois ainda monta um tutorial ensinando outros. Parabéns pela atitude. Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.