
cyberock
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
cyberock deu reputação a Imperador Luas em Sistema de Food por alavanca>Olá Todos Dos Tibiaking Sou Novo Aqui e é o Meu Primeiro Tópico Por Favor Movam Se Coloquei Na Área Errada
>Bom vamos deixar de papo furado e vamos ao que interessa, vim aqui trazer um script de um sistema de food por alavanca.
1º Vá na pasta do seu ot/data/action/script. copie qualquer script.lua e cole (ctrl+c e ctrl+v).
2º Renomeie o script que você copiou para sistemadefood, exclua tudo que está dentro do script.
3º cole isso dentro do script:
4º Explicando
>VERMELHO: Uniqueid da alavanca coloque um uniq.id que não exista.
>AZUL:ID do food que vai pegar quando acionar a alavanca.
>ROXO: Quantidade de food que vai pegar quando acionar a alavanca.
>VERDE: Descrição que vai aparecer quando você apertar a alavanca.
>AMARELO: Efeito magico que vai sair da alavanca quando acionar ela.
>Edite como quiser feche e salve.
5º Agora vá na pasta do seu ot/data/action/action.xml.
6º Adicione essa tag :
7º Explicando
>LARANJA: Bote aqui a uniqueid que você escolheu.
8º Pronto salve e feche, agora vá no seu mapa editor crie um baú (chest) click com o botão direito do mouse e vá em propriedades e bote a uniqueid que você escolheu
>>SS do resultado
>Credit's
TODOS PARA MIN (se alguem já criou um Tutorial semelhante a esse não é minha culpa fui eu que fiz )
Duvida ? Comentem!
Custa nada né da REP+ eu te ajudei dá ae
-
cyberock deu reputação a Garou em Um novo modo de criar magias?UM NOVO MODO DE CRIAR MAGIAS?
Tudo bem com vocês, grandes tibianos desse reino?
Quando eu criava magias, eu sempre notei a quantidade de linhas que uma boa e trabalhada magia adquire ao se finalizar o script.
Por um tempinho, estudei como funcionava toda a estrutura e pensei em como criar um único bloco de código para configurar a magia uma vez só. Os spellmakers de plantão comprovam: Se uma magia com vários efeitos e tipos de dano é criada, você precisa criar muitas variáveis locais.
Então, resolvi criar uma tabela que tratava essas variáveis locais como indexes e seus atributos como conteúdo de tabelas secundárias. Nascia esse novo modo de programar magias, que parece um tanto versátil e ao mesmo tempo, reduz o tamanho de uma magia.
O SCRIPT
O script é bem simples, uma tabela bem básica que qualquer criança configura e se diverte e blocos de códigos que, olha que legal, você não precisa mexer.
Veja abaixo o novo modelo:
local spell = { { damage = COMBAT_ICEDAMAGE, effect = {CONST_ME_ICEATTACK}, formula = {0.2, 3, 0.2, 4.2, 200, 300}, area = createCombatArea({ {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 2, 1, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 0, 0}}) } } local returnSpell = {} for var, config in ipairs(spell) do returnSpell[var] = createCombatObject() setCombatParam(returnSpell[var], COMBAT_PARAM_TYPE, config.damage) setCombatParam(returnSpell[var], COMBAT_PARAM_EFFECT, (type(config.effect) == "table" and config.effect[1] or config.effect)) if type(config.effect) == "table" and config.effect[2] ~= nil then setCombatParam(returnSpell[var], COMBAT_PARAM_DISTANCEEFFECT, config.effect[2]) end if config.area then setCombatArea(returnSpell[var], config.area) end function getSpellDamage(cid, level, maglevel) local min = ((level*config.formula[1] + maglevel*config.formula[2]) + config.formula[5]) local max = ((level*config.formula[3] + maglevel*config.formula[4]) + config.formula[6]) return -min, -max end setCombatCallback(returnSpell[var], CALLBACK_PARAM_LEVELMAGICVALUE, "getSpellDamage") end function onCallCombat(parameters) return doCombat(unpack(parameters)) end function onCastSpell(cid, var) if #returnSpell > 1 then for i = 1, #returnSpell do addEvent(onCallCombat, (i*280)+32, {cid, returnSpell[i], var}) end else doCombat(cid, ret[1], var) end return true end Parece que eu compliquei tudo, né? Pois bem, finja que você não vê nada aí, apenas essa tabela abaixo: local spell = { { damage = COMBAT_ICEDAMAGE, effect = {CONST_ME_ICEATTACK}, formula = {0.2, 3, 0.2, 4.2, 200, 300}, area = createCombatArea({ {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 2, 1, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 0, 0}}) } } Aqui que você irá configurar sua magia, como ela vai funcionar, que área que ela irá atingir e etcétera. Vou comentar cada linha da tabela para que você entenda: local spell = { { damage = COMBAT_ICEDAMAGE, effect = {CONST_ME_ICEATTACK}, formula = {0.2, 3, 0.2, 4.2, 200, 300}, area = createCombatArea({ {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 2, 1, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 0, 0}}) } } Sobre a fórmula, você não precisa mais ter dor de cabeça como você vai diminuir o dano da sua magia e etcétera. Veja o quê cada número significa abaixo: formula = {MIN_LEVEL, MIN_MAGLEVEL, MAX_LEVEL, MAX_MAGLEVEL, MIN_OFFSET, MAX_OFFSET} min = (level*MIN_LEVEL + maglevel * MIN_MAGLEVEL) + MIN_OFFSET max = (level*MAX_LEVEL + maglevel * MAX_MAGLEVEL) + MAX_OFFSET E sobre a área, você pode usar áreas pré-configuras naquele arquivo spells.lua dentro de spells/lib, assim você diminuirá ainda mais o código. area = createCombatArea(AREA_BEAM4) Se a magia for do tipo "strike", você pode configurar o efeito de distância assim: effect = {CONST_ME_ICEATTACK, CONST_ANI_ICE} Para criar uma magia com múltiplos danos, basta duplicar, triplicar, conforme sua necessidade a sub-tabela dentro da tabela principal - atenção - não esqueça de separar as várias subtabelas com uma vírgula, por exemplo: local spell = { { damage = COMBAT_ICEDAMAGE, -- O tipo de dano effect = {CONST_ME_ICEATTACK}, -- Os efeitos da magia formula = {0.2, 3, 0.2, 4.2, 200, 300}, -- A formula de dano da magia area = createCombatArea({ -- Area da magia {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 2, 1, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 0, 0}}) }, -- virgula { damage = COMBAT_ICEDAMAGE, -- O tipo de dano effect = {CONST_ME_ICEATTACK}, -- Os efeitos da magia formula = {0.2, 3, 0.2, 4.2, 200, 300}, -- A formula de dano da magia area = createCombatArea({ -- Area da magia {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 2, 1, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 0, 0}}) } } [/code]
[size=3][font=tahoma,geneva,sans-serif]Essa é uma magia com dois hits de gelo, se você entendeu todo o tópico [/font][/size]
[size=3][font=tahoma,geneva,sans-serif][hr][/font][/size]
[size=4][b][font=tahoma,geneva,sans-serif]CONCLUSÃO[/font][/b][/size]
[size=3][font=tahoma,geneva,sans-serif][hr][/font][/size]
[size=3][font=tahoma,geneva,sans-serif]Eu reconheço que esse novo modelo parece um pouco inútil e estranho, mas ele foi criado com intuíto de otimizar magias com múltiplos efeitos e tipos de dano.[/font][/size]
[size=3][font=tahoma,geneva,sans-serif]Até o próximo tópico, abraços.[/font][/size]
[size=3][font=tahoma,geneva,sans-serif][hr][/font][/size]
-
cyberock deu reputação a MatheusVidaLoka em [MoveMents] Mensagem quando o Player passa por 1 TileFala galera do Tibia King,
Para que estou aqui ?
Vim trazer um script muito legal a voces .
Como funciona o script ?
Quando voce passa por um tile , sobe uma mensagem do tile.
Vamos começar então :
Primeiro vá em movements/movements.xml e adicione essa tag :
Depois vá em data/movements copie qualquer .lua e renomeie para temple , em seguida adicione o script abaixo :
Vermelho - O texto que aparecerá ao passar do Tile
Agora é só desfrutar do Script !!
Creditos :
80% Hannibals (Fazer o Script)
20% MatheusVidaLoka (Remover Bugs e Disponibilizar aqui no Tibia King)
Pedi autorização para postar o script , autorização foi aceita !