Ir para conteúdo

Amy Fear

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Amy Fear deu reputação a Wise em [PEDIDO] Spells ~ Bleeding com um temperinho a mais :P   
    Faça uma checagem que retorne false caso a estrutura de controle seja true:
    local swordf = 30 if getPlayerSkillLevel(cid, SKILL_SWORD) < swordf then doPlayerSendCancel(cid,'You need at least level '..swordf..' of sword fighting to cast this spell.') return false end
  2. Gostei
    Amy Fear deu reputação a grafit em Windbot   
    Bom pessoal, vou deixar a minha sugestão aqui..

    Sinto muito a falta de uma área para o windbot.

    Eu por exemplo tenho muitos scripts ótimos para compartilhar e acredito que muitos também terão!

    Obrigado.
  3. Gostei
    Amy Fear deu reputação a Orochi Elf em (Resolvido)[Ajuda Urgente] Itens que fazer as skills   
    Bom.. não seria necessariamente usar "onEquip, onDeEquip", seria apenas criar uma condição simples nas spells.
     

    if not isInArray({2160, 2158}, getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid) then     doPlayerSendCancel(cid, "Voce não pode usar esta magia.")     return false end  
    Spell (Exura)
     

    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 1.5, 2) function onCastSpell(cid, var)     if not isInArray({2160, 2158}, getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid) then         doPlayerSendCancel(cid, "Voce não pode usar esta magia.")         return false     end     return doCombat(cid, combat, var) end
  4. Gostei
    Amy Fear deu reputação a Wise em (Resolvido)[Ajuda Urgente] Itens que fazer as skills   
    Você cria um movement script que atribui ao player determinado valor de uma storage ao equipar/remover o item de determinado slot.
    local stor = 12345 -- storage function onEquip(cid, item, slot) setPlayerStorageValue(cid, stor, 1) -- já que é no callback de equipar, ele recebe o valor de ID 1 (como sendo positivo para a checagem do uso da spell) return true end function onDeEquip(cid, item, slot) setPlayerStorageValue(cid, stor, -1) -- ao remover o item, ele recebe o valor de ID -1 (como sendo negativo para a checagem do uso da spell) return true end
     
    Configure as tags como movevents Equip / DeEquip.
    Ex:
    <movevent type="Equip" itemid="ITEMID" slot="ring" event="script" value="filename.lua"/> <movevent type="DeEquip" itemid="ITEMID" slot="ring" event="script" value="filename.lua"/>

     
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 1.5, 2) function onCastSpell(cid, var) local stor = 12345 -- storage if getPlayerStorageValue(cid, stor) < 1 then -- checa se o valor da storage no player é menor que 1 (sendo que 1 seria o necessário) doPlayerSendCancel(cid, "You can't cast the spell without using the item that allows it.") -- a informação de que ele nao pode conjurar a spell é dada return false -- retorna false ao callback, resultando em não conjurar a spell end return doCombat(cid, combat, var) -- se a checagem acima for false, ou seja, maior ou igual a 1 (valor necessário), então significa que o player está com o item necessário equipado e a conjuração da spell é feita end
    Qualquer dúvida ou problema, é só relatar por aqui.
  5. Gostei
    Amy Fear deu reputação a Wise em (Resolvido)[Ajuda Urgente] Itens que fazer as skills   
    Um detalhe ou outro ficou um tanto quanto confuso, então me avise se eu não entendi muito bem o que você quis dizer.
    Se por exemplo, todos os rings habilitassem determinada spell, então você poderia fazer uma checagem do slot antes do callback da mesma:
    if getPlayerSlotItem(cid, CONST_SLOT_RING).uid < 1 then     doPlayerSendCancel(cid, "You can't cast the spell without using a ring.")     return false end


    Se forem spells pra itens distintos, você pode fazer o uso de storages. Criando movements com callback de onEquip e onDeEquip que atribuam ao player um valor dessas storages (quando ele equipar/remover o item).
    Depois é só fazer a checagem do valor da storage no callback da spell.
    Exemplo:

    movement script:
    local stor = 12345 -- storage function onEquip(cid, item, slot) setPlayerStorageValue(cid, stor, 1) return true end function onDeEquip(cid, item, slot) setPlayerStorageValue(cid, stor, -1) return true end


    Checagem na spell light healing (exura):
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 1.5, 2) function onCastSpell(cid, var)     local stor = 12345 -- storage     if getPlayerStorageValue(cid, stor) < 1 then         doPlayerSendCancel(cid, "You can't cast the spell without using the item that allows it.")         return false     end         return doCombat(cid, combat, var) end
  6. Gostei
    Amy Fear deu reputação a AdmAlexandre em [Link Quebrado][8.6] Alissow OTs 4.11   
    Alissow OTs 4.11! [11/07/ 2010]



    Esta versão 4.11 foi meio apressada, só adicionamos as features novas do 8.6.
    Aproveitem.

    Créditos:
    Alissow
    Comedinha
    Luis
    Nirk
    TFS Team
    Viniply
    Xedegux

    Sobre o OT/Mapa:
    Principais quests:
    -Annihilator
    -Inquisition Quest
    -Pits of inferno
    -Demon Oak
    -Solar axe quest
    -HOTA
    -MPA quest
    -The Challenger

    Monstros:
    -Total monstros: 10292
    -Total spawn: 5587+

    Cidades:
    -12 Cidades
    -200 Houses+-

    Raids/Invasões:
    -Rat
    -Orshabaal
    -Ghazbaran
    -Giant spider/The old window
    -Ferumbras
    -Morgaroth

    Spells:
    -Magias editadas para balanceamento das vocações
    Changelog

    Atualização [3.4 BETA]:




    Atualização nº 2 [3.4]:




    Atualização 3.5 [06/08/2009]:




    Atualização Patch 3.5.1 [07/08/2009]:




    Atualização 3.6 [10/08/2009]:




    Atualização 3.7! Beta [18/12/2009]:




    Atualização 3.7 Patch 1 [27/12/2009]:




    Atualização 3.8 [17/01/2010]:




    Atualização 3.8 Minor Patch 1 [17/01/2010]:




    Atualização 3.9 [15/02/2010]:




    Atualização 4.0 [15/02/2010]:




    Atualização 4.11! [11/07/2010]:

    - Versão 8.6, todos os items, outfits e monstros novos (Comedinhasss, Fireelement)
    - Adicionados os novos monstros 8.6 (Alissow)
    - Bug das potions arrumado (Comedinha, Matheusmkalo, Gabriel linhares, Fireelement)
    - Erros das runas arrumado (Comedinha, Gabriel linhares, Matheusmkalo, fireelement)


    Novas screenshots da atualização 4.0










    Mais tarde posto mais imagens, agora estou com um pouco de pressa :]



    Ta ficando grandinho heim...



    Download
    Servidor: 4shared

    Tamanho: 17,416 KB

    Download: http://www.4shared.c...ow_Ots_411.html

    Link protegido: http://lix.in/-8d4bc0

    Scan VirusTotal: Clique aqui

    Atenção

    - Acc do God: god/god
    - LEIA o tópico antes de postar qualquer coisa ou duvida
    - Reportem se houver algum bug
    - A database fica na pasta schemas+Database
    - Proibido o uso do nosso distro sem o nosso consenso, obrigado.

    - Se você gostou, clique noali embaixo ó.


    Andei percebendo que há muitos mapas feitos por mim em outros servidores postados aqui no TibiaKing, eu não sei se vocês sabem, mas isso é PLÁGIO.
    Eu não sou uma pessoa egoista, tudo que eu posto aqui no ##### é para ser compartilhado, mas desde que mantenham os devidos créditos.
    Será denunciado qualquer tipo de "roubo" sem minha autorização para beneficio próprio. Eu sei que vocês não se importam muito com isso, eu também não deveria me
    importar, mas é o tempo e a dedicação de outra pessoa que vocês estão roubando, então peço gentilmente aos que tem conhecimento desses mapas, que me apontem.
    Não tem graça trabalhar horas e horas e ser roubado em dois minutos.

    @Edit

    Obs: Mapa Não é Meu,Não Fiz Nada Nele!!
  7. Gostei
  8. Gostei
    Amy Fear deu reputação a xWhiteWolf em [PEDIDO] mining system   
    pelo descrição que você deu você quer isso daqui: http://www.tibiaking.com/forum/topic/35665-mining-system/
  9. Gostei
    Amy Fear deu reputação a Kimoszin em Criando Spells para seu servidor!   
    Ola gaaaaaaalera, é com muito prazer que venho trazer esse primeiro tutorial meu como Aprendiz do TibiaKing,

    Spells:
    Bom, spells sao as magias do nosso servidor, elas servem tanto para healar, atacar, dar suporte e etc ...
    Criar magias é algo muito simples, vc mesmo poderam criar quantas magias quiserem para o seu servidor seguindo esse tutorial,
    Muito bem, vamos começar ...

    Spells de Curar (Healing)




    Obrigado a Todos,
    Estou terminando de fazer o SpellMaker para facilitar a vida de vc,
    Abraços
  10. Gostei
    Amy Fear deu reputação a KekezitoLHP em [SISTEMA] Colisão de Magias   
    Nome: Sistema de Colisão de Magias V. 1.0 Autor: Ramza (Ricardo Ianelli) Versão Testada: TFS 0.3.6PL1 (8.54) "PODERÁ FUNCIONA EM VERSÃO 8.54+ FAÇA O TESTE" Introdução
       video: 
        Funcionamento
    Do ponto de vista do jogador:
    O jogador usa uma magia, digamos, exori frigo. No mesmo momento, o inimigo usa um exori vis por exemplo. As magias voam, e se colidem no ar. Do ponto de vista do scripter:   Toda magia antes de ser lançada, salva um storage value, e checa se o inimigo tem o mesmo storage. Caso tenha, ao invés de mandar a magia, manda os efeitos pra uma posição calculada entre os dois pontos, e um efeito de colisão. Caso o criador queira melhorar ainda a função (pra ficar como na versão 2.0 do sistema), pode-se fazer uma checagem de força pra saber qual das duas 'vence', fazendo com que ela atinja o oponente. Para melhores resultados, magias usando addEvent são mais usadas, por isso usarei um exemplo dessa forma aqui no tutorial. Instalação

    Na pasta Data, crie um arquivo chamado colisionLIB.lua. Dentro dele, cole isto:
     
    function checkColision(cid) -- Function by Ramza (Ricardo Ianelli) if getCreatureTarget(cid) ~= 0 then setPlayerStorageValue(cid, 9001, 'casting') local ppos, enemy = getCreaturePosition(cid), getCreatureTarget(cid) local epos = getCreaturePosition(enemy) if getPlayerStorageValue(enemy, 9001) == 'casting' and getCreatureTarget(enemy) == cid then setPlayerStorageValue(enemy, 9001, 'colision') setPlayerStorageValue(cid, 9001, 'colision') if ppos.x > epos.x and ppos.y > epos.y then cpos = {x = ppos.x - ((ppos.x - epos.x) / 2), y = ppos.y - ((ppos.y - epos.y) / 2), z = ppos.z} elseif ppos.x > epos.x and ppos.y < epos.y then cpos = {x = ppos.x - ((ppos.x - epos.x) / 2), y = epos.y - ((epos.y - ppos.y) / 2), z = ppos.z} elseif ppos.x < epos.x and ppos.y < epos.y then cpos = {x = epos.x - ((epos.x - ppos.x) / 2), y = epos.y - ((epos.y - ppos.y) / 2), z = ppos.z} elseif ppos.x < epos.x and ppos.y > epos.y then cpos = {x = epos.x - ((epos.x - ppos.x) / 2), y = ppos.y - ((ppos.y - epos.y) / 2), z = ppos.z} end doSendDistanceShoot(ppos, cpos, CONST_ANI_ENERGY) doSendDistanceShoot(epos, cpos, CONST_ANI_ENERGYBALL) local value = math.random(1, 3) doSendMagicEffect(cpos, 27+value) return true else return false end end end  
    Agora vamos pegar uma magia bem básica como exemplo para teste. Vamos usar a magia energy strike. Abra o arquivo da magia, estará mais ou menos assim:
     
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Vamos modificar um pouco para o nosso sistema. Deixe-a assim:
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) local function spell(cid, var) if getPlayerStorageValue(cid, 9001) ~= 'colision' then doCreatureSay(cid, 'Strike!', TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, 9001, nil) return doCombat(cid, combat, var) end end function onCastSpell(cid, var) checkColision(cid) doCreatureSay(cid, 'Energy...', TALKTYPE_ORANGE_1) addEvent(spell, 2000, cid, var) end  
     
    Agora adiciona essa função em todas as magias que você deseja a colisão.
    function onCastSpell(cid, var) checkColision(cid) doCreatureSay(cid, 'Energy...', TALKTYPE_ORANGE_1) addEvent(spell, 2000, cid, var) end Hora de testar, a hora mais difícil! Bem, pra testar esse sistema você precisa de um amigo pra te ajudar, ou de ferramentas ilegais e agilidade. Vamos tomar como exemplo caso você fosse com um amigo testar. Simplesmente usem exori vis um no outro, e vejam o que acontece 
     
    Comentários

    Quem já é mais experiente já deve ter sacado o tanto de possibilidades que isso abre, como fazer com magias mais avançadas, comparar magic level, fazer com que caso o ML de um seja maior que o do outro, ela anule a do inimigo mas a sua ainda acerte, fazer sistemas no estilo 'disputa de kame-hame-has' usando spriters sem ser as do tibia, e muitas outras coisas, só vai depender de você usar a sua CRIATIVIDADE. Esse sistema, apesar de simples, é considerado pra mim um dos meus sistemas mais avançados, pois como dizia o sábio programador: "O verdadeiro gênio não é aquele que usa pilhas, ponteiros, matrizes ou funções complexas, e sim aquele que usa a criatividade." Muita gente ofereceu grana preta nesse sistema já, mas eu postei aqui pra lembrar à todos vocês que o que faz um grande programador não é o quão complexas são as funções que você usa e os codes que você faz, e sim, o quão criativas einovadoras são suas criações.



    É isso ai galera, deixo meu abraço pra todos vocês, qualquer dúvida é só me perguntar, e eu quero que vocês lembrem que o melhor code é sempre, de longe, aquele mais criativo, não importa se tenha 3, 100 ou 10.000 linhas. Lembrem-se disso, sempre. 
     
  11. Gostei
    Amy Fear deu reputação a Absolute em [MODS] Emoticons   
    Fala galera, trouxe para vocês um simples script que fiz de "Emoticons" para seus servidores em MODS, isto mesmo basta colocar na pasta MODS do servidor e pronto, simples não?
     



     
    Explicações;
     
    Para alterar as falas basta substiuir as palavras: talkaction words="xd, =d, xp ou acrescentar mais palavras da mesma forma, seguindo o padrão.
     
    Quando o player disser você pode optar em aparecer no log (says) e tanto em emotion aqui: hidden="yes", da forma que está ele vai ocultar no log e aparecer apenas o emoticon, caso queira que apareça ambos coloque hidden="no".
     
    exhaust = 5 -- in seconds, aqui será o tempo que o player vai ter para usar outro emoticon
     
    storage = 3000 -- storage value used to save exhaustion (Não mexa nesta linha pois este número é o que vai marcar o exhaust para o player usar de novo, digamos assim.
     
     

    Exemplo de emoticon simples:





     
     

    Simples mas legalzinho!
    Até mais scripts que desenvolverei =D
    Bom Dia.
  12. Gostei
    Amy Fear deu reputação a Steeven em Mineração/Coleta (%)   
    Hoje vou trazer um script que desenvolvi com ajuda de todos aqui do fórum, é meu primeiro tutorial e espero não estar fazendo nada de errado. O script é bem simples, mas funciona sem erros, pelo menos aqui. 
     
     O que faz?   
    -Você usa uma ferramenta para minerar em determinada pedra, de acordo com as chances você consegue extrair dela um minério como "iron ore" por exemplo. Lembrando que o item que você vai usar para minerar, tem de ser um item que você pode usar em outros, como a pick, shovel e outros...
     
    Utilidade?   
    -Vai depender de você, em servidores com sistema de forja pode ser interessante, que é o meu caso.
     
    Script
    Em data/actions/scripts/ crie um arquivo .lua com o nome que deseja (ex.: ferramenta.lua) e cole o código a seguir dentro dele:
    Explicando >>>   
     Eu utilizei 4 tipos diferentes de minério, Bronze, Silver, Gold e Mithril. Você pode utilizar quantos quiser.
     
     Roxo, corresponde as chance para cada minério, note que as chances de minerar bronze é 23%, prata é de 9%, ouro é de 7% e mithril é de 1%.
     
     Verde, é o ID do item sobre o qual você vai usar a ferramenta para minerar. Pode ser uma pedra o qualquer coisa que achar melhor.
     
     Azul, é o ID do item adicionado ao jogador quando ele conseguir extrair algum minério e a quantidade(129,1).
     
    Ótimo, mas como eu escolho com qual ferramenta minerar? 
     Agora, você vai em data/actions/actions.xml e adicione esta linha:
     
     Em vermelho, é o ID da ferramenta usada para minerar.   
     
      Uma alerta, este script está limitado a 100% não podendo ultrapassar esta margem, para uma porcentagem maior, altere esta função:
    math.random(1,100) <- mude o 100 para 200 ou mais.   
     
     
     Se eu quiser usar só um minério? 
    Como dito, eu usei 4 minérios, cada minério corresponde a esta função:
     
     
    Do if ao end corresponde a um minério. daí você pode diminuir ou adicionar minério tirando uma ou acrescentando uma função. Mas note que cada função corresponde a uma variável, no caso acima, é o bronze. Para acrescentar um minério, você terá que fazer uma variável correspondente e configurar seguindo os passos anteriores. 
     
    O que mais posso fazer?   
     Bem, você pode usa este script para uma coleta de madeira, basta usar uma ferramenta como o Axe e mudar o itemEx.itemid para o ID de uma árvore, e por fim no doPlayerAddItem(cid, 126,1) pôr o ID de da madeira a ser coletada. doPlayerAddItem(cid, Id-do-Item,quantidade).   
     
    Espero ter ajudado! VLW!    

Informação Importante

Confirmação de Termo