Ir para conteúdo
Banner com Efeitos

xWhiteWolf

Héroi
  • Registro em

  • Última visita

Tudo que xWhiteWolf postou

  1. utilidade pública getItemDescriptionsById(itemid)
  2. gostei da idéia.. só tenho umas dúvidas, local exhaust = createConditionObject(CONDITION_EXHAUST) setConditionParam(exhaust, CONDITION_PARAM_SUBID, 2) setConditionParam(exhaust, CONDITION_PARAM_TICKS, time) setCombatCondition(combat, exhaust) você saberia me explicar como essa condition funciona? Oque é subid, porque vc atribuiu o valor 2? o tempo de exhaust vai ser igual ao tempo da magia?? Isso significa q durante a magia eu não poderei usar nenhum tipo de spell ou é aquele tipo de exhaust que só vale pra spells do mesmo tipo (agressive/non-agressive)? Ou ainda, seria um exhaust só pra própria magia?
  3. vou tentar fazer qnd der tempo, não parece algo muito dificil
  4. se a função é a onLogin ele vai executar ao logar. Teria que ter um checador que se o player morrer ou deslogar ele seja retirado da table teamX e ao logar a checagem seria refeita, vendo que o timeX estaria com menos players doque o timeY e inserindo o player novamente no timeX. Eu pessoalmente não sei como fazer isso mas se a function é onLogin acho q dá pra fazer uma onDeath ou uma onThink pra ficar constantemente checando se #teamX > #teamY
  5. xWhiteWolf postou uma resposta no tópico em Suporte Tibia OTServer
    qnd vc mesmo resolver, posta a resolução e marca a sua resposta como "melhor resposta" pra ficar como resolvido.
  6. xWhiteWolf postou uma resposta no tópico em Sistemas, Mods & Funções .lua
    Muito obrigado pela contribuição.. significa muito pro Tibia King.
  7. xWhiteWolf postou uma resposta no tópico em Suporte Tibia OTServer
    desculpa a demora pra responder amigo: Se você quiser que a nobleman seja por quest, faça assim: <outfit id="5" premium="yes"> <list gender="0" lookType="140" name="Noblewoman"/> <list gender="1" lookType="132" name="Nobleman"/> </outfit> /\ nobleman normal (igual ao seu script) <outfit id="5" premium="yes" storageId="1415" storageValue="1"> <list gender="0" lookType="140" name="Noblewoman"/> <list gender="1" lookType="132" name="Nobleman"/> </outfit> nobleman editada.. somente players que tenham o storage 1415 com valor 1 conseguirão utilizar essa outfit
  8. remove isso do script setCombatParam(combat, COMBAT_PARAM_EFFECT, 2) agora procura essa parte: if getPlayerLookDir(cid) == 0 then signal = {-1,1,1,2} elseif getPlayerLookDir(cid) == 1 then signal = {1,-1,2,1} elseif getPlayerLookDir(cid) == 2 then signal = {1,-1,1,2} else signal = {-1,1,2,1} end else signal = {-1,1,1,2} end aqui ele tá pegando a direção do player... como vc quer que a magia solte um efeito na frente dele é só adicionar posições de acordo com a direção que ele tá olhando, sendo que NORTH = 0 EAST = 1 SOUTH = 2 WEST = 3 local pos = getThingPos(uid) então se a direção que ele ta olhando for 0, o SQM na frente dele vai ser effectpos = {x=pos.x+1,y=pos.y,z=pos.z} se for 1 a posição será effectpos = {x=pos.x,y=pos.y+1,z=pos.z} se for 2 a posição será effectpos = {x=pos.x-1,y=pos.y,z=pos.z} se for 3, a posição será effectpos = {x=pos.x,y=pos.y-1,z=pos.z} daí é só colocar pra mandar o magic effect que vc quiser na posição effectpos.
  9. 1) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não possui dardos.") return false end muda o return false pra return true. 2) -- CONFIGURAÇÕESporcentagem = 40 -- chance de curar em cada volta da aura, em porcentagem quantheal = 10 -- porcentagem do hp máximo que cada cura irá curar. (No caso, irá curar 10% do hp máximo cada cura) tempo = 1180 -- tempo para dar uma volta no player (este tempo foi o que achei mais agradável visualmente, é recomendável não mudar) efeitocura = 49 -- número do efeito quando a cura chega ao player (efeito de posição fixa, pode ser identificado com /z no jogo) -- Função que chama a aura function efeitosAura(i,tm,cid) tipoaura = math.random(30,33) -- número do efeito da aura (efeito normal, /z do jogo) if(isCreature(cid)) then local atual = getCreaturePosition(cid) local chances = math.random(100) if(chances<=porcentagem/8 and getCreatureHealth(cid)<getCreatureMaxHealth(cid)) then doCreatureAddHealth(cid, getCreatureMaxHealth(cid)/quantheal) if(i<=8 and i>1) then doSendMagicEffect(atual, tipoaura) else doSendMagicEffect(atual, tipoaura) end doSendMagicEffect(atual, efeitocura) end if(i==8) then doSendMagicEffect(atual, tipoaura) elseif(i<8) then doSendMagicEffect(atual, tipoaura) end if(i<=8) then i = i+1 tm = tempo/8 return addEvent(efeitosAura,tm,i,tm,cid) else return efeitosAura(1,0,cid) end else return TRUE end end --Função principal function onLogin(cid) return efeitosAura(1,tempo/8,cid) end /\ cura a vida e solta os efeitos 30 a 33 -- CONFIGURAÇÕES porcentagem = 40 -- chance de curar em cada volta da aura, em porcentagem quantmana = 10 -- porcentagem da mana máxima que cada cura irá curar. (No caso, irá curar 10% da mana máxima cada cura) tempo = 1180 -- tempo para dar uma volta no player (este tempo foi o que achei mais agradável visualmente, é recomendável não mudar) efeitocura = 49 -- número do efeito quando a cura chega ao player (efeito de posição fixa, pode ser identificado com /z no jogo) -- Função que chama a aura function efeitosAura(i,tm,cid) tipoaura = math.random(30,33) -- número do efeito da aura (efeito normal, /z do jogo) if(isCreature(cid)) then local atual = getCreaturePosition(cid) local chances = math.random(100) if(chances<=porcentagem/8 and getCreatureMana(cid)<getCreatureMaxMana(cid)) then doCreatureAddMana(cid, getCreatureMaxMana(cid)/quantmana) if(i<=8 and i>1) then doSendMagicEffect(atual, tipoaura) else doSendMagicEffect(atual, tipoaura) end doSendMagicEffect(atual, efeitocura) end if(i==8) then doSendMagicEffect(atual, tipoaura) elseif(i<8) then doSendMagicEffect(atual, tipoaura) end if(i<=8) then i = i+1 tm = tempo/8 return addEvent(efeitosAura,tm,i,tm,cid) else return efeitosAura(1,0,cid) end else return TRUE end end --Função principal function onLogin(cid) return efeitosAura(1,tempo/8,cid) end /\ cura mana e solta os efeitos 30 a 33 (se quiser muda no math.random -- CONFIGURAÇÕES porcentagem = 40 -- chance de dar haste em cada volta da aura, em porcentagem tempo = 1180 -- tempo para dar uma volta no player (este tempo foi o que achei mais agradável visualmente, é recomendável não mudar) efeitocura = 49 -- número do efeito quando der haste (efeito de posição fixa, pode ser identificado com /z no jogo) duration = 10 -- segundos que vai durar o haste da aura. (coloque um tempo baixo porque ela vai ficar se repetindo. local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_TICKS, duration*1000) setConditionFormula(condition, 1.7, -36, 1.7, -36) -- Função que chama a aura function efeitosAura(i,tm,cid) tipoaura = math.random(12,14) -- número do efeito da aura (efeito normal, /z do jogo) if(isCreature(cid)) then local atual = getCreaturePosition(cid) local chances = math.random(100) if(chances<=porcentagem/8 and getCreatureCondition(cid, condition) == false) then doAddCondition(cid, condition) if(i<=8 and i>1) then doSendMagicEffect(atual, tipoaura) else doSendMagicEffect(atual, tipoaura) end doSendMagicEffect(atual, efeitocura) end if(i==8) then doSendMagicEffect(atual, tipoaura) elseif(i<8) then doSendMagicEffect(atual, tipoaura) end if(i<=8) then i = i+1 tm = tempo/8 return addEvent(efeitosAura,tm,i,tm,cid) else return efeitosAura(1,0,cid) end else return TRUE end end --Função principal function onLogin(cid) return efeitosAura(1,tempo/8,cid) end /\ da velocidade a cada rodada de aura por 10 segundos.. os efeitos são um math.random de 12 até 14 (12, 13, 14)
  10. isso daqui tb dá pra colocar no server e acho q fica melhor doque esse sistema de broadcast aí http://www.tibiaking.com/forum/topic/33143-pedido-contagem-de-frags-no-look/
  11. dá uma olhada nisso daqui e vê se vc consegue extrair a parte que separa os times pra colocar numa function onLogin: http://www.tibiaking.com/forum/topic/16699-sistema-battlefield-event/
  12. ganharia experiencia de mining toda vez que minerasse ou só quando achasse algo bom?
  13. function onStepIn(cid, item, position, fromPosition) if getPlayerGuildId(cid) > 0 then doPlayerSendTextMessage(cid, 27, "Voce entrou, sua guild é a "..getPlayerGuildName(cid)..".") return true else doPlayerSendTextMessage(cid, 27, "Voce não possue guild, portanto não pode entrar nessa zona.") doTeleportThing(cid, fromPosition) return false end end
  14. xWhiteWolf postou uma resposta no tópico em Suporte Tibia OTServer
    dei uma vizualiada rápida mas o script não me parece errado... tá escrito exhaustian> exhaustian="3000" o correto é "exhaustion"
  15. no caso, como aumentaria a skill de mining? minerando mesmo ou seria que nem o dodge system que vc tem que comprar livros?
  16. calma cara, isso é bem dificil de fazer e não é qualquer um que consegue. Dá uma olhada em scripts de Team Battle porque sua dúvida tá bem complexa e eu não acho q alguém vá ser capaz de fazer isso dai que vc quer sem nenhum bug
  17. usa o meu sistema de vocation que ta aqui na minha assinatura e coloca doPlayerSetVocation(cid, 0) dai é só fazer um npc oráculo que pega o valor do storage de reset (sua quantidade de resets) e te dá a vocação de acordo com o numero de resets.
  18. xWhiteWolf postou uma resposta no tópico em Suporte & Pedidos
    muito bom, to seguindo pra acompanhar as novidades
  19. fico feliz que vcs tenham curtido... se tudo der certo meu próximo tópico vai ser sobre uma ideia que eu tive com base no WoE, onde o boss seria um item que conforme perde vida vai mudando o looktype dele ou então vai ser uma quest que eu pensei a muito tempo atrás mas ainda não consegui tirar do papel.
  20. 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"/>
  21. eu não criei nada lá, eu só te ensinei a lógica.. se vc n manja de script, espera alguém que faça pra você; é um script bem complicado e agora eu ando meio sem tempo
  22. local storage_quest = 90000 function onStepIn(cid, item, position, fromPosition) if getPlayerStorageValue(cid, storage_quest) < 1 then doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Você não completou a Cyber quest!") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) end doPlayerSendTextMessage(cid, 27, "Você não completou a Cyber quest! .") return true end deleta esse arquivo que vc tem, cria um novo, adiciona esse daqui nele e salva como .lua
  23. xWhiteWolf postou uma resposta no tópico em Suporte Tibia OTServer
    vc tá ligado q se vc for GM vai mostrar todas as spells né... se mesmo num char q nao seja GM esteja mostrando todas as spells então sugiro vc trocar seu script por esse daqui: function onUse(cid, item, fromPosition, itemEx, toPosition) local count = getPlayerInstantSpellCount(cid) local text = "" local t = {} for i = 0, count - 1 do local spell = getPlayerInstantSpellInfo(cid, i) if spell.level ~= 0 then if spell.manapercent > 0 then spell.mana = spell.manapercent .. "%" end table.insert(t, spell) end end table.sort(t, function(a, b) return a.level < b.level end) local prevLevel = -1 for i, spell in ipairs(t) do local line = "" if prevLevel ~= spell.level then if i ~= 1 then line = "\n" end line = line .. "Spells for Level " .. spell.level .. "\n" prevLevel = spell.level end text = text .. line .. " " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n" end doShowTextDialog(cid, item.itemid, text) return TRUE end
  24. alguns servers tem câncer, o seu tá com câncer e pra curar você tem que pegar a primeira linha desse script, deletar ela e reescrever letra por letra.

Informação Importante

Confirmação de Termo