Ir para conteúdo

Duuhzinhow

Visconde
  • Total de itens

    276
  • Registro em

  • Última visita

Histórico de Reputação

  1. Upvote
    Duuhzinhow recebeu reputação de Wend ll em Spell manda para outra dimensao   
    Bem galera, vim aqui disponibilizar para voces do uma spell que consiste em mandar seu alvo para outra dimensao, e ele voltar em "x" segundos (configuravel) e com um condowl para usar a magia novamente
     
    Basta voce criar uma area no seu rme.
     

    aqui voce seleciona as cordenadas para onde o alvo sera levado.
     
    aqui o tempo que ele ira ficar na outra dimensao até voltar.
     
    nessa linha voce seleciona o efeito que quer que saia em cima do alvo.
     
    20 é o tempo do condowl
    No restante nao há necessidade de mecher :3
  2. Upvote
    Duuhzinhow recebeu reputação de RigBy em Spell manda para outra dimensao   
    Bem galera, vim aqui disponibilizar para voces do uma spell que consiste em mandar seu alvo para outra dimensao, e ele voltar em "x" segundos (configuravel) e com um condowl para usar a magia novamente
     
    Basta voce criar uma area no seu rme.
     

    aqui voce seleciona as cordenadas para onde o alvo sera levado.
     
    aqui o tempo que ele ira ficar na outra dimensao até voltar.
     
    nessa linha voce seleciona o efeito que quer que saia em cima do alvo.
     
    20 é o tempo do condowl
    No restante nao há necessidade de mecher :3
  3. Upvote
    Duuhzinhow recebeu reputação de Furabio em Spell manda para outra dimensao   
    Bem galera, vim aqui disponibilizar para voces do uma spell que consiste em mandar seu alvo para outra dimensao, e ele voltar em "x" segundos (configuravel) e com um condowl para usar a magia novamente
     
    Basta voce criar uma area no seu rme.
     

    aqui voce seleciona as cordenadas para onde o alvo sera levado.
     
    aqui o tempo que ele ira ficar na outra dimensao até voltar.
     
    nessa linha voce seleciona o efeito que quer que saia em cima do alvo.
     
    20 é o tempo do condowl
    No restante nao há necessidade de mecher :3
  4. Upvote
    Duuhzinhow recebeu reputação de duasrodas em Spell manda para outra dimensao   
    Bem galera, vim aqui disponibilizar para voces do uma spell que consiste em mandar seu alvo para outra dimensao, e ele voltar em "x" segundos (configuravel) e com um condowl para usar a magia novamente
     
    Basta voce criar uma area no seu rme.
     

    aqui voce seleciona as cordenadas para onde o alvo sera levado.
     
    aqui o tempo que ele ira ficar na outra dimensao até voltar.
     
    nessa linha voce seleciona o efeito que quer que saia em cima do alvo.
     
    20 é o tempo do condowl
    No restante nao há necessidade de mecher :3
  5. Upvote
    Duuhzinhow deu reputação a RigBy em NPC muda de vocaçao   
    Ja tem tempo que não mecho com script então esqueci muita coisa :b
    Eu fiz, saio meio poluído porque eu esqueci como usar tabela mas ta funcional (To estudando denovo)
     
     
    .Xml
    <?xml version="1.0" encoding="UTF-8"?> <npc name="Nome do npc" script="Local da Script.lua" walkinterval="0" floorchange="0" speed="900"> <health now="150" max="150"/> <look type="128" head="0" body="0" legs="0" feet="0" addons="0"/> <parameters> <parameter key="message_greet" value="Ta Afim de ganha uma vocação?"/> </parameters> </npc> .lua
    -- By RigBy -- -- Xtibia.com -- local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local vocation = 1 -- Vocação que precisa ter -- Primeira Vocação local vocationnome1 = 'knight' -- Nome da primeira vocação que ira se torna local vocationid1 = 3 -- id da vocação que vai ganha local item1 = 7618 -- primeiro items da primeira vocação local item2 = 7636 -- Segundo items da primeira vocação local qnt1 = 15 -- quantidade do primeiro items local qnt2 = 15 -- quantidade do segundo items -- Segunda Vocação local vocationnome2 = 'paladin' -- Nome da segunda vocação que ira se torna local vocationid2 = 4 -- id da vocação que vai ganha local items1 = 3333 -- primeiro items da segunda vocação local items2 = 4444 -- Segundo items da segunda vocação local qnts1 = 15 -- quantidade do primeiro items local qnts2 = 15 -- quantidade do segundo items function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'yes') then if getPlayerVocation(cid) == vocation then selfSay('Você que ['..vocationnome1..'] ou ['..vocationnome2..'].', cid) talkState[talkUser] = 1 else selfSay('Você não ta com a vocação certa ou ja ganho a vocação.', cid) end end if talkState[talkUser] == 1 and msgcontains(msg, ''..vocationnome1..'') then if getPlayerItemCount(cid, item1) >= qnt1 and getPlayerItemCount(cid, item2) >= qnt2 then selfSay('Parabêns você acaba de se tornar '..vocationnome1..'', cid) doPlayerSetVocation(cid, vocationid1) doPlayerRemoveItem(cid, item1, qnt1) doPlayerRemoveItem(cid, item2, qnt2) else selfSay('Você não tem os items que precisa para ganha a vocação.', cid) end end if talkState[talkUser] == 1 and msgcontains(msg, ''..vocationnome2..'') then if getPlayerItemCount(cid, items1) >= qnts1 and getPlayerItemCount(cid, items2) >= qnts2 then selfSay('Parabêns você acaba de ser torna '..vocationnome2..'', cid) doPlayerSetVocation(cid, vocationid2) doPlayerRemoveItem(cid, items1, qnts1) doPlayerRemoveItem(cid, items2, qnts2) else selfSay('Você não tem os items que precisa para ganha a vocação.', cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Ps. Depois posto um com a tabela feita
    Bye
  6. Upvote
    Duuhzinhow deu reputação a Gabriel Couto em [Show Off] Daniel   
    Curti o mapa, ficou bom como um todo.. formatos, disposição dos detalhes, etc.
    Por questão de gosto próprio, eu usaria mais recursos no local.
     
     
    Mapper bom não entra na Cip.
  7. Upvote
    Duuhzinhow deu reputação a Wend ll em Condowl e efeito em spell   
    Teste assim:
     
     
  8. Upvote
    Duuhzinhow deu reputação a Wend ll em Condowl e efeito em spell   
    Teste assim:
     
    remove_time = 4 local item_id = 1285 function onCastSpell(cid, var) if exhaustion.check(cid, 23006) == false then exhaustion.set(cid, 23006, 10) else doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]") return false end local pos = getThingPosition(getCreatureTarget(cid)) posTile1 = {x=pos.x+1,y=pos.y+1,z=pos.z,stackpos=1} posTile2 = {x=pos.x+1,y=pos.y,z=pos.z,stackpos=1} posTile3 = {x=pos.x+1,y=pos.y-1,z=pos.z,stackpos=1} posTile4 = {x=pos.x,y=pos.y-1,z=pos.z,stackpos=1} posTile5 = {x=pos.x-1,y=pos.y-1,z=pos.z,stackpos=1} posTile6 = {x=pos.x-1,y=pos.y,z=pos.z,stackpos=1} posTile7 = {x=pos.x-1,y=pos.y+1,z=pos.z,stackpos=1} posTile8 = {x=pos.x,y=pos.y+1,z=pos.z,stackpos=1} posAll = {posTile1,posTile2,posTile3,posTile4,posTile5,posTile6,posTile7,posTile8} for i=1, #posAll do if isWalkable(posAll[i]) then doCreateItem(item_id, 1, posAll[i]) doSendMagicEffect(posAll[i], 34) end end addEvent(removeItem, remove_time*1000, posAll) return true end function isWalkable(pos, creature, pz, proj) if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end local creature = getTopCreature(pos) if creature.type > 0 then return false end if getTilePzInfo(pos) and not pz then return false end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function removeItem(posAll) for i=1, #posAll do for j=0, 255 do pos_stack = {x=posAll[i].x,y=posAll[i].y,z=posAll[i].z,stackpos=j} removeTile = getThingfromPos(pos_stack) if removeTile.itemid == item_id then doRemoveItem(removeTile.uid) end end end end Você quer por que o magic effect saia do player e vá pras rocks ou o contrário? Se for do player pra rock o fromPos seria getThingPos(cid) e toPos o posAll, se for o contrário basta inverter as posições (fromPos = posAll e toPos = getThingPos(cid))
  9. Upvote
    Duuhzinhow deu reputação a Wend ll em Condowl e efeito em spell   
    testei aqui:
     

     
    sobre o distance effect é essa função ai que você está procurando:
     
    doSendDistanceEffect(fromPos, toPos, distance_effect) Tem 3 argumentos essa função fromPos é de onde sai o distance effect toPos é pra onde ele vai. fromPos = de onde vai sair o distance effect, você vai trocar ele pela posição em que você quer que o distance effect saia. toPos = pra onde o distance effect vai, você vai trocar ele pela posição em que você quer que o distance effect atinja distance_effect = numero do distance effect, o efeito, a animação, como preferir chamar.
  10. Upvote
    Duuhzinhow deu reputação a Oneshot em Outfits   
    OUTFITS


    Atributos e Configurações




    Olá, pessoal.

    Muitas pessoas não sabem, mas você pode adicionar vários bônus às outfits diretamente pelo outfits.xml, sem precisar de nenhum creaturescript que eventualmente possa dar lag em um servidor com muitos jogadores.

    Com este tutorial, você aprenderá a configurar vários tipos de bônus e até especificar se são necessários addons para ativar esses bônus.



    Para começar, vou colar abaixo o conteúdo de um outfits.xml do The Forgotten Server trunk.r3884 (0.4.0), vamos trabalhar em cima dele:




    <?xml version="1.0"?>
    <outfits>
    <outfit id="1">
    <list gender="0" lookType="136" name="Citizen"/>
    <list gender="1" lookType="128" name="Citizen"/>
    </outfit>

    <outfit id="2">
    <list gender="0" lookType="137" name="Hunter"/>
    <list gender="1" lookType="129" name="Hunter"/>
    </outfit>

    <outfit id="3">
    <list gender="0" lookType="138" name="Mage"/>
    <list gender="1" lookType="130" name="Mage"/>
    </outfit>

    <outfit id="4">
    <list gender="0" lookType="139" name="Knight"/>
    <list gender="1" lookType="131" name="Knight"/>
    </outfit>

    <outfit id="5" premium="yes">
    <list gender="0" lookType="140" name="Noblewoman"/>
    <list gender="1" lookType="132" name="Nobleman"/>
    </outfit>

    <outfit id="6" premium="yes">
    <list gender="0" lookType="141" name="Summoner"/>
    <list gender="1" lookType="133" name="Summoner"/>
    </outfit>

    <outfit id="7" premium="yes">
    <list gender="0" lookType="142" name="Warrior"/>
    <list gender="1" lookType="134" name="Warrior"/>
    </outfit>

    <outfit id="8" premium="yes">
    <list gender="0" lookType="147" name="Barbarian"/>
    <list gender="1" lookType="143" name="Barbarian"/>
    </outfit>

    <outfit id="9" premium="yes">
    <list gender="0" lookType="148" name="Druid"/>
    <list gender="1" lookType="144" name="Druid"/>
    </outfit>

    <outfit id="10" premium="yes">
    <list gender="0" lookType="149" name="Wizard"/>
    <list gender="1" lookType="145" name="Wizard"/>
    </outfit>

    <outfit id="11" premium="yes">
    <list gender="0" lookType="150" name="Oriental"/>
    <list gender="1" lookType="146" name="Oriental"/>
    </outfit>

    <outfit id="12" premium="yes" default="0">
    <list gender="0" lookType="155" name="Pirate"/>
    <list gender="1" lookType="151" name="Pirate"/>
    </outfit>

    <outfit id="13" premium="yes" default="0">
    <list gender="0" lookType="156" name="Assassin"/>
    <list gender="1" lookType="152" name="Assassin"/>
    </outfit>

    <outfit id="14" premium="yes" default="0">
    <list gender="0" lookType="157" name="Beggar"/>
    <list gender="1" lookType="153" name="Beggar"/>
    </outfit>

    <outfit id="15" premium="yes" default="0">
    <list gender="0" lookType="158" name="Shaman"/>
    <list gender="1" lookType="154" name="Shaman"/>
    </outfit>

    <outfit id="16" premium="yes" default="0">
    <list gender="0" lookType="252" name="Norsewoman"/>
    <list gender="1" lookType="251" name="Norseman"/>
    </outfit>

    <outfit id="17" premium="yes" default="0">
    <list gender="0" lookType="269" name="Nightmare"/>
    <list gender="1" lookType="268" name="Nightmare"/>
    </outfit>

    <outfit id="18" premium="yes" default="0">
    <list gender="0" lookType="270" name="Jester"/>
    <list gender="1" lookType="273" name="Jester"/>
    </outfit>

    <outfit id="19" premium="yes" default="0">
    <list gender="0" lookType="279" name="Brotherhood"/>
    <list gender="1" lookType="278" name="Brotherhood"/>
    </outfit>

    <outfit id="20" premium="yes" default="0">
    <list gender="0" lookType="288" name="Demonhunter"/>
    <list gender="1" lookType="289" name="Demonhunter"/>
    </outfit>

    <outfit id="21" premium="yes" default="0">
    <list gender="0" lookType="324" name="Yalaharian"/>
    <list gender="1" lookType="325" name="Yalaharian"/>
    </outfit>

    <outfit id="22" default="0">
    <list gender="0" lookType="336" name="Warmaster"/>
    <list gender="1" lookType="335" name="Warmaster"/>
    </outfit>

    <outfit id="23" premium="yes" default="0">
    <list gender="0" lookType="366" name="Wayfarer"/>
    <list gender="1" lookType="367" name="Wayfarer"/>
    </outfit>

    <outfit id="24" premium="yes" default="0">
    <list gender="0" lookType="329" name="Wedding"/>
    <list gender="1" lookType="328" name="Wedding"/>
    </outfit>
    </outfits>
    [/code]

    [font=verdana,geneva,sans-serif]Existem diferentes tipos de atributos que você pode colocar na sua outfit, por exemplo, você pode colocar para quando um jogador estiver usando[b] X[/b] outfit, ele receba uma certa chance de refletir danos de um certo elemento. Vamos aprender abaixo a configuração de atributos do jogador.[/font]

    [font=verdana,geneva,sans-serif][hr][/font]

    [font=verdana,geneva,sans-serif]Para configurar atributos é muito simples, destacarei a outfit [b]Citizen[/b] para esse exemplo:[/font]

    <outfit id="1"> <list gender="0" lookType="136" name="Citizen"/> <list gender="1" lookType="128" name="Citizen"/> </outfit>

    Suponhamos que eu queira que quando um jogador estiver usando a outfit Citizen, ele receba speed +10 e recupere 30 de HP a cada 5 segundos, basta adicionar isso:


    <outfit id="1"> <list gender="0" lookType="136" name="Citizen" healthGain="30" healthTicks="5" speed="10" /> <list gender="1" lookType="128" name="Citizen" healthGain="30" healthTicks="5" speed="10" /> </outfit>

    Você pode diferenciar os tipos de bônus primários pelo sexo do jogador. Os bônus primários disponíveis são estes abaixo:


    manaShield invisible healthGain healthTicks manaGain manaTicks speed

    Agora existem bônus secundários que é necessária uma pequena edição na estrutura da configuração da outfit, vejamos abaixo:


    <outfit id="1"> <list gender="0" lookType="136" name="Citizen"/> <list gender="1" lookType="128" name="Citizen"/> </outfit>

    Estes bônus secundários variam desde pontos fixos em skills até chance de refletir algo ou absorver. Só que para que eles funcionem corretamente, você precisa "abrir" a configuração da outfit.

    Por exemplo, a outfit Citizen nos dará +50 de HPmáx e +1 em todas as skills de combate corporal. Vejamos:


    <outfit id="1"> <list gender="0" lookType="136" name="Citizen"> <stats maxHealth="50"/> <skills melee="1"/> </list> <list gender="1" lookType="128" name="Citizen"> <stats maxHealth="50"/> <skills melee="1"/> </list> </outfit>

    Veja que literalmente eu abri a outfit Citizen em sub-listas declarando atributos diferentes para elas, segue abaixo uma pequena lista de cada atributo e em que sub-lista ele deve ser declarado:

    stats

    maxHealth maxMana soul level magLevel || magicLevel maxHealthPercent maxManaPercent soulPercent levelPercent magLevelPercent || magicLevelPercent

    skills

    fist club sword axe distance || dist shielding || shield fishing || fish melee weapon fistPercent clubPercent swordPercent axePercent distancePercent || distPercent shieldingPercent || shieldPercent fishingPercent || fishPercent meleePercent weaponPercent || weaponsPercent

    Lembra que no começo desse tutorial, eu disse que era possível configurar chance de reflexão e absorção para as outfits? Pois é, é possível sim. Vamos pegar um exemplo diferente agora, a outfit Wizard.


    <outfit id="10" premium="yes"> <list gender="0" lookType="149" name="Wizard"/> <list gender="1" lookType="145" name="Wizard"/> </outfit>

    Vamos dizer que a outfit Wizard com addons completos dará a chance de 10% de refletir 25% do dano feito por elementos (Fire, Earth, Ice, Energy). Para fazer isso, é o mesmo esquema de stats e skills, só que o nome da sub-lista deve ser reflect ou absorb. Dependendo do que você quer que a outfit faça, refletir ou absorver.


    <outfit id="10" premium="yes"> <list gender="0" lookType="149" name="Wizard"> <reflect percentElements="25" chanceElements="10"/> </list> <list gender="1" lookType="145" name="Wizard"> <reflect percentElements="25" chanceElements="10"/> </list> </outfit>

    Veja abaixo a lista dos possíveis atributos para reflect e absorb:


    percentAll percentElements percentMagic percentEnergy percentFire percentPoison || percentEarth percentIce percentHoly percentDeath percentLifeDrain percentManaDrain percentDrown percentPhysical percentHealing percentUndefined chanceAll chanceElements chanceMagic chanceEnergy chanceFire chancePoison || chanceEarth chanceIce chanceHoly chanceDeath chanceLifeDrain chanceManaDrain chanceDrown chancePhysical chanceHealing chanceUndefined

    Por último, você pode definir quando esses bônus são dados, seja quando o jogador está utilizando o primeiro addon, o segundo, qualquer um dos dois ou ambos. O atributo para isso é requirement.


    <outfit id="10" premium="yes"> <list gender="0" lookType="149" name="Wizard" requirement="any"> <reflect percentElements="25" chanceElements="10"/> </list> <list gender="1" lookType="145" name="Wizard" requirement="any"> <reflect percentElements="25" chanceElements="10"/> </list> </outfit>


    first second any both



    Existem alguns atributos que manipulam se o jogador pode usar a outfit, o mais conhecido deles é o premium que só permite o uso da outfit a jogadores premium.

    Mas muitos não conheçam os atributos quest, storageId e storageValue que torna possível dar outfits em quests, igual acontece no Tibia.

    Para isso, pegaremos qualquer outfit.


    <outfit id="20" premium="yes" default="0"> <list gender="0" lookType="288" name="Demonhunter"/> <list gender="1" lookType="289" name="Demonhunter"/> </outfit>

    Quando você usa o atributo quest com o valor igual a uma storage do servidor, a outfit só poderá ser usada se a storage tiver valor igual a 1. Por exemplo:


    <outfit id="20" premium="yes" quest="2005" default="0"> <list gender="0" lookType="288" name="Demonhunter"/> <list gender="1" lookType="289" name="Demonhunter"/> </outfit>

    Se a storage 2005 tiver valor igual a 1, então eu poderei usar a outfit Demonhunter. Mas e se eu estou trabalhando com uma grande quest que o valor final da storage é 3 e não 1? Por isso que existem os atributos storageId e storageValue.


    <outfit id="20" premium="yes" storageId="2005" storageValue="3" default="0"> <list gender="0" lookType="288" name="Demonhunter"/> <list gender="1" lookType="289" name="Demonhunter"/> </outfit>



    Bom, isso é tudo.

    Qualquer dúvida não deixe de postar no tópico.

    Abração \o/
  11. Upvote
    Duuhzinhow deu reputação a Joao Barao em [Show Off] Joao Barao   
    Estou começando a atuar na parte de Mapping.
    Estou desenvolvendo meu primeiro mapa, se for possível me dar algumas dicas de como melhorar, agradeço desde já.
    Tenho 2 semanas de mapping, tenho muito de aprender e editar ainda.
    Aqui estão uma parte do meu trabalho, espero que gostem!
     






     
     

     
     

     
     

     
     

  12. Upvote
    Duuhzinhow deu reputação a RigBy em Unknown Heal   
    Unknown Heal


    Introdução
    Eu tava criando essa script pra participa da oms, mais não deu tempo de coloca então ta aqui.
    Coloquei o nome de unknown heal porque eu não conseguir pensa em um nome pra ela. ¬¬

    O que a script faz :
    -Se algum monstro ou player tiver te atacando o dano se transforma em curar.
    por exemplo se você toma um dano de 100 quando a magia tiver ativa esse dano de 100 vai se transforma em life
    pode ser configurado.
     
    Vamos la. xD
     
    creaturescript: unknownheal.lua:
    -- Do not remove the credits -- -- [CREATURESCRIPT] Unknown Heal -- -- developed by Rigby -- -- Especially for the Xtibia.com -- function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHLOSS then local vida = (value) -- não mecha nisso local retira = 1 -- 1 vai absorve o life todo , 2 vai obsorve metade do life if (getPlayerStorageValue(cid, 54654644) == 1) then doCreatureAddHealth(cid, (vida / retira)) doSendAnimatedText(getCreaturePosition(cid), "+"..(vida / retira).."!", 25) return false end end return true end function onLogin(cid) doPlayerSetStorageValue(cid, 54654644, -1) return true end creaturescript.xml tag:
    <event type="Login" name="unknownheal" event="script" value="unknownheal.lua"/> <event type="StatsChange" name="unknownheal2" event="script" value="unknownheal.lua"/> Login.lua adicione isso antes do ultimo return
    registerCreatureEvent(cid, "unknownheal") em spells/script unknownheal.lua: -- Do not remove the credits -- -- [SPELL] Unknown Heal -- -- developed by Rigby -- -- Especially for the Xtibia.com -- local tempo = 5 -- quanto tempo a magia vai durar local timer = 5 -- quantos segundos em segundo vai pode usa a magia -- obs:so vai começa a conta quando a magia tiver terminado local effect = 28 -- efeito da magia local storage = 1231234343 local storagemag = 54654644 -- não mecha function onCastSpell(cid, var) if getPlayerStorageValue(cid, storagemag) == -1 then if getPlayerStorageValue(cid, storage) < os.time () then setPlayerStorageValue(cid, storagemag, 1) doSendMagicEffect(getThingPos(cid), 28) setPlayerStorageValue(cid, storage, os.time () + tempo + timer) addEvent(termina, tempo*1000, cid) else doPlayerSendCancel(cid, "Voce so pode usar esse magia daqui a "..getPlayerStorageValue(cid, storage) - os.time ().." segundos.") end else doPlayerSendCancel(cid, "Voce ja ta usando a magia.") end return true end function termina(cid) setPlayerStorageValue(cid, storagemag, -1) doSendMagicEffect(getThingPos(cid), 29) end end Spells.xml tag:
    <instant name="Unknownheal" words="unknown heal" lvl="1" mana="0" prem="0" range="10" blockwalls="0" exhaustion="0" needlearn="0" event="script" value="unknownheal.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="3"/> <vocation id="4"/> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="0"/> </instant>
    Bug Ageitado funcionando 100%
  13. Upvote
    Duuhzinhow deu reputação a Wend ll em Condowl e efeito em spell   
    Eu testei assim e funcionou aqui:
     
     

     
    depois que resolvemos esse problema do cooldown ai adiciono os efeitos kk
  14. Upvote
    Duuhzinhow deu reputação a Krono em [Resolvido] Posção do templo   
    Estarei movendo para área correta.
     
    Respondendo a sua duvida:
    Existem 2 edições a se fazer, no caso dentro do config.lua edite as linhas seguintes de acordo com seu servidor.
    newPlayerSpawnPosX = 159 newPlayerSpawnPosY = 387 newPlayerSpawnPosZ = 6 newPlayerTownId = 2 e a segunda alteração é na Database do servidor. No caso terá de alterar a posição dos players existentes e do Account Manager caso tenha para a posição do templo.
    .
  15. Upvote
    Duuhzinhow deu reputação a Wend ll em [Resolvido] Posção do templo   
    Creio que esse tutorial pode lhe ajudar
    http://www.xtibia.com/forum/topic/188798-resolvendo-temple-position-is-wrong-contact-the-administrator/
  16. Upvote
    Duuhzinhow recebeu reputação de tiago1234 em Tutorial criar spells (básico mesmo)   
    Eae galerinha do xtibia, vim aqui hoje para ensinar uma coisa simples, mas que muitos nao sabem, e queriam aprender de uma forma bem facil. Vou ensinar á criar spells básicas de damage, de area, e alvo unico... Primeiro, irei ensinar uma de alvo unico.
     
    Vá em data/spells/scripts copie um arquivo .lua e renomeie para o que desejar:
     
      Verde: é o tipo do dano, seja physical, fire, earth, ice, energy, lifedrain, manadrain, etc...   setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 22)   Vermelho: é o numero do efeito que irá até o alvo, voce pode escolher usando o comando "/x"   setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -120.2, 1, -125.2, 1)   Roxo: é o dano minimo, e maximo da spell. Baseado no level.   doSendMagicEffect(position1, 196)   Azul claro: Efeito que vai dar no target, quando o efeito "22" bater nele, voce pode escolher pelo comando "/z"   E agora, vamos colocar sua spell no spells.xml:   <instant name="Nome da spell" words="Nome da spell" lvl="Level necessario" mana="mana que ira gastar" aggressive="1" range="7" blockwalls="1" needtarget="1" exhaustion="1500" needlearn="0" event="script" value="Nome do arquivo.lua"> <vocation id="id da vocaçao"/>   Agressive: se for para dar dano coloque "1" se nao for apra dano coloque "0" Blockwalls: se o jutsu pode atravessar paredes coloque "0", se nao atravessar coloque "1" Needtarget: se precisa estar atacando coloque "1" se nao, coloque "0" Exhaustion: Tempo de exalst, 1500 = 1,5 segundos.   Bem, fazendo tudo isso certinho, sua spell estará pronta, agora vou explicar uma spell simples de area.   ----------------------------------------------------------------------------------------------   Copie qualquer arquivo, e renomeie para o que desejar. Vou utilizar um script bem simples que eu criei agora, só para demonstraçao.   local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 214) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -93.5, 1, -106.5, 1) arr1 = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0} } local area1 = createCombatArea(arr1) setCombatArea(combat1, area1) local function onCastSpell1(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var) end function onCastSpell(cid, var) local position1 = {x=getCreaturePosition(cid).x+2, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z} local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) return TRUE end   setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)   Essa parte, como expliquei na spell anterior, apenas mude o tipo de dano, á seu gosto.   setCombatParam(combat1, COMBAT_PARAM_EFFECT, 214)   Aqui, voce muda o efeito, que está o numero 214, voce pode modificar, vendo os numeros pelo comando "/z"   setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -93.5, 1, -106.5, 1)   Aqui, voce escolhe dano minimo e máximo, baseado no level.   arr1 = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0} }   Essa seria a area da spell, os numeros: 3: local onde o player que executou a spell irá estar. (sempre no meio) 1: local onde sairá a spell, ou seja, onde ira sair o efeito, e ira dar dano. 0: nao sairá nada   Agora, vamos coloca a tag da spell em spells.xml:   <instant name="Nome da spell" words="Nome da spell" lvl="level necessario" needtarget="0" mana="mana que ira gastar" aggressive="1" exhaustion="1600" needlearn="0" event="script" value="Nome do arquivo.lua"> <vocation id="id da vocaçao"/>   O resto ja expliquei na spell anterior.   Bem galera, por enquanto é isso, muito simples né.. Estou aceitando criticas e dicas para o topico, que eu estarei editando... e, em breve farei um tutorial mais aprofundado .... Se gostou nao esqueça de deixar seu rep
  17. Upvote
    Duuhzinhow recebeu reputação de tiago1234 em Criando vocaçao e suas transformaçoes para Narutibia   
    Eae galera do xtibia, aqui estou eu de novo trazendo um novo tutorial... dessa vez, vou ensinar á fazer algumas coisas, que foi muito dificil encontrar, quando eu estava tentando aprender... isso quando eu encontrava né... Vou ensinar á voces, como criar uma vocaçao, colocar transformaçoes, para narutibia. Vou tentar explicar de uma forma simples, para que os iniciantes entendam.
     
    Primeiro, vamos imagina uma vocaçao.. ex: Konan. Quando voce for criar ja tem que saber quantas transformaçoes irá colocar nela. Digamos que seja 6 transformaçoes.
     
    Vá em data/xml/vocations.xml.
     

     
     
    Ja que vamos colocar 6 transformaçoes, teremos que criar 7 tags para a vocaçao, como podem ver á cima, na primeira tag, o VocationId e o FromVoc deverao ser iguais, na segunda tag só aumenta 1 numero no VocationID, e do terceiro em diante, aumenta 1 numero nos dois. Isso sera necessario, porque a primeira tag nao irá valer de nada.
     
    Ok, fazendo essa parte corretamente, sua vocaçao estará pronta. Agora vou explicar a parte de ajeitar as transformaçoes.
     
    Vá em data/talkactions/scripts/transformar.lua
     

    Essa parte Voce irá adicionar no final do script, vou explicar para que cada numero serve, e o que é. 650,651,652,653,654,655 = sao apenas exemplos, esses numeros voce deverá colocar de acordo com o seu script, digamos que a ultima transformaçao que tem la, tem o numero "430" na primeira da sua voce deverá colocar "432" e assim por diante... 50,100,150,200,250,300 = É o level necessario para a transformaçao de cada linha. 651,652,653,654,655,656 = É os Ids da vocaçao, lembra que na explicaçao de criar a vocaçao, eu disse que deveria ter 7 tags, pois a primeira n vale de nada, entao, aki na parte das transformaçoes, voce começa pelo VocationID da segunda tag, até o final... 557,558,559,560,561,562 = Sao os numeros das newtypes da vocaçao, nao esqueça de fazer na ordem certa. E por ultimo, os numeros 10, que seria o efeito que vai sair no player quando ele transformar, voce pode mudar de acordo com os numeros do comando "/z". Bom galera, por ai termina o tutorial, caso tenham feito tudo certa, nao ocorrera nenhum erro, e espero que tenham aprendido. Brevemente irei ensinar á fazer spells basicas para narutibia.. Até a proxima! Gostou do meu tutorial? Deixe seu rep+
  18. Upvote
    Duuhzinhow recebeu reputação de gumercindo26 em Tutorial criar spells (básico mesmo)   
    Eae galerinha do xtibia, vim aqui hoje para ensinar uma coisa simples, mas que muitos nao sabem, e queriam aprender de uma forma bem facil. Vou ensinar á criar spells básicas de damage, de area, e alvo unico... Primeiro, irei ensinar uma de alvo unico.
     
    Vá em data/spells/scripts copie um arquivo .lua e renomeie para o que desejar:
     
      Verde: é o tipo do dano, seja physical, fire, earth, ice, energy, lifedrain, manadrain, etc...   setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 22)   Vermelho: é o numero do efeito que irá até o alvo, voce pode escolher usando o comando "/x"   setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -120.2, 1, -125.2, 1)   Roxo: é o dano minimo, e maximo da spell. Baseado no level.   doSendMagicEffect(position1, 196)   Azul claro: Efeito que vai dar no target, quando o efeito "22" bater nele, voce pode escolher pelo comando "/z"   E agora, vamos colocar sua spell no spells.xml:   <instant name="Nome da spell" words="Nome da spell" lvl="Level necessario" mana="mana que ira gastar" aggressive="1" range="7" blockwalls="1" needtarget="1" exhaustion="1500" needlearn="0" event="script" value="Nome do arquivo.lua"> <vocation id="id da vocaçao"/>   Agressive: se for para dar dano coloque "1" se nao for apra dano coloque "0" Blockwalls: se o jutsu pode atravessar paredes coloque "0", se nao atravessar coloque "1" Needtarget: se precisa estar atacando coloque "1" se nao, coloque "0" Exhaustion: Tempo de exalst, 1500 = 1,5 segundos.   Bem, fazendo tudo isso certinho, sua spell estará pronta, agora vou explicar uma spell simples de area.   ----------------------------------------------------------------------------------------------   Copie qualquer arquivo, e renomeie para o que desejar. Vou utilizar um script bem simples que eu criei agora, só para demonstraçao.   local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 214) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -93.5, 1, -106.5, 1) arr1 = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0} } local area1 = createCombatArea(arr1) setCombatArea(combat1, area1) local function onCastSpell1(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var) end function onCastSpell(cid, var) local position1 = {x=getCreaturePosition(cid).x+2, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z} local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) return TRUE end   setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)   Essa parte, como expliquei na spell anterior, apenas mude o tipo de dano, á seu gosto.   setCombatParam(combat1, COMBAT_PARAM_EFFECT, 214)   Aqui, voce muda o efeito, que está o numero 214, voce pode modificar, vendo os numeros pelo comando "/z"   setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -93.5, 1, -106.5, 1)   Aqui, voce escolhe dano minimo e máximo, baseado no level.   arr1 = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0} }   Essa seria a area da spell, os numeros: 3: local onde o player que executou a spell irá estar. (sempre no meio) 1: local onde sairá a spell, ou seja, onde ira sair o efeito, e ira dar dano. 0: nao sairá nada   Agora, vamos coloca a tag da spell em spells.xml:   <instant name="Nome da spell" words="Nome da spell" lvl="level necessario" needtarget="0" mana="mana que ira gastar" aggressive="1" exhaustion="1600" needlearn="0" event="script" value="Nome do arquivo.lua"> <vocation id="id da vocaçao"/>   O resto ja expliquei na spell anterior.   Bem galera, por enquanto é isso, muito simples né.. Estou aceitando criticas e dicas para o topico, que eu estarei editando... e, em breve farei um tutorial mais aprofundado .... Se gostou nao esqueça de deixar seu rep
  19. Upvote
    Duuhzinhow deu reputação a DuuhCarvalho em Modificar esse script   
    function onCastSpell(cid, var)
    local playerpos = getPlayerPosition(cid)
    local pos = getPlayerPosition(getCreatureTarget(cid))
    local effectmort = 254 --- Id do efeito que vai ser na target
    local effect = 134 ---Id do efeito da morte
     
     
    local healthCid, healthTarget = getCreatureMaxHealth(cid), getCreatureMaxHealth(getCreatureTarget(cid))
    local removeCid, removeTarget = healthCid * 30 / 100, healthTarget * 30 / 100
     
     
    if getCreatureTarget(cid) < 1 then
    return 0
    end
     
     
    local position = {x=pos.x, y=pos.y-1, z=pos.z}
    doSendMagicEffect(playerpos, effectmort)
    doSendMagicEffect(position, effect)
    doCreatureAddHealth(getCreatureTarget(cid), -removeTarget)
    doCreatureAddHealth(cid, -removeCid)
     
     
    return true
    end
     
  20. Upvote
    Duuhzinhow deu reputação a lucasromero em Item summon   
    Ta ai:


    function onUse(cid, item, fromPosition, itemEx, toPosition) local ids = {1,2,3,4,5} --Coloque o ID das vocations nesta tabela. local summons = getCreatureSummons(cid) local MaximoSummon = 2 local playerpos = getPlayerPosition(cid) local maxhealth = getCreatureMaxHealth(cid) if(table.maxn(summons) > MaximoSummon) then doPlayerSendTextMessage(cid, 27, "Voce so pode criar duas criaturas.") return false end if isInArray(ids, getPlayerVocation(cid)) then local monster = doCreateMonster("monstroaqui", playerpos) doConvinceCreature(cid, monster) setCreatureMaxHealth(monster, maxhealth) doCreatureAddHealth(monster, maxhealth) doRemoveItem(item.uid, 1) else return doPlayerSendTextMessage(cid, 27, "Voce nao pertence a vocation necessaria.") end return true end
  21. Upvote
    Duuhzinhow deu reputação a zipter98 em Action remove e adiciona items   
    local ids = {...} --Coloque o ID das vocations nesta tabela. local id = {6022, 2154} function onUse(cid, item, frompos, item2, topos) if isInArray(ids, getPlayerVocation(cid)) and item2.itemid == id[1] then doRemoveItem(item.uid, 1) doRemoveItem(item2.uid, 1) doPlayerAddItem(cid, id[2], 1) else return doPlayerSendCancel(cid, "Você não pertence à uma das vocações adequadas, ou está usando o pergaminho no item errado.") end return true end
  22. Upvote
    Duuhzinhow recebeu reputação de fhoenix00 em Tutorial criar spells (básico mesmo)   
    Eae galerinha do xtibia, vim aqui hoje para ensinar uma coisa simples, mas que muitos nao sabem, e queriam aprender de uma forma bem facil. Vou ensinar á criar spells básicas de damage, de area, e alvo unico... Primeiro, irei ensinar uma de alvo unico.
     
    Vá em data/spells/scripts copie um arquivo .lua e renomeie para o que desejar:
     
      Verde: é o tipo do dano, seja physical, fire, earth, ice, energy, lifedrain, manadrain, etc...   setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 22)   Vermelho: é o numero do efeito que irá até o alvo, voce pode escolher usando o comando "/x"   setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -120.2, 1, -125.2, 1)   Roxo: é o dano minimo, e maximo da spell. Baseado no level.   doSendMagicEffect(position1, 196)   Azul claro: Efeito que vai dar no target, quando o efeito "22" bater nele, voce pode escolher pelo comando "/z"   E agora, vamos colocar sua spell no spells.xml:   <instant name="Nome da spell" words="Nome da spell" lvl="Level necessario" mana="mana que ira gastar" aggressive="1" range="7" blockwalls="1" needtarget="1" exhaustion="1500" needlearn="0" event="script" value="Nome do arquivo.lua"> <vocation id="id da vocaçao"/>   Agressive: se for para dar dano coloque "1" se nao for apra dano coloque "0" Blockwalls: se o jutsu pode atravessar paredes coloque "0", se nao atravessar coloque "1" Needtarget: se precisa estar atacando coloque "1" se nao, coloque "0" Exhaustion: Tempo de exalst, 1500 = 1,5 segundos.   Bem, fazendo tudo isso certinho, sua spell estará pronta, agora vou explicar uma spell simples de area.   ----------------------------------------------------------------------------------------------   Copie qualquer arquivo, e renomeie para o que desejar. Vou utilizar um script bem simples que eu criei agora, só para demonstraçao.   local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 214) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -93.5, 1, -106.5, 1) arr1 = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0} } local area1 = createCombatArea(arr1) setCombatArea(combat1, area1) local function onCastSpell1(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var) end function onCastSpell(cid, var) local position1 = {x=getCreaturePosition(cid).x+2, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z} local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) return TRUE end   setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)   Essa parte, como expliquei na spell anterior, apenas mude o tipo de dano, á seu gosto.   setCombatParam(combat1, COMBAT_PARAM_EFFECT, 214)   Aqui, voce muda o efeito, que está o numero 214, voce pode modificar, vendo os numeros pelo comando "/z"   setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -93.5, 1, -106.5, 1)   Aqui, voce escolhe dano minimo e máximo, baseado no level.   arr1 = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0} }   Essa seria a area da spell, os numeros: 3: local onde o player que executou a spell irá estar. (sempre no meio) 1: local onde sairá a spell, ou seja, onde ira sair o efeito, e ira dar dano. 0: nao sairá nada   Agora, vamos coloca a tag da spell em spells.xml:   <instant name="Nome da spell" words="Nome da spell" lvl="level necessario" needtarget="0" mana="mana que ira gastar" aggressive="1" exhaustion="1600" needlearn="0" event="script" value="Nome do arquivo.lua"> <vocation id="id da vocaçao"/>   O resto ja expliquei na spell anterior.   Bem galera, por enquanto é isso, muito simples né.. Estou aceitando criticas e dicas para o topico, que eu estarei editando... e, em breve farei um tutorial mais aprofundado .... Se gostou nao esqueça de deixar seu rep
  23. Upvote
    Duuhzinhow recebeu reputação de fhoenix00 em AJUDA COM SPELLS   
    Eu mesmo criei esse tutorial sobre spells... bem basico, mas acho que servirá bem para voce... >>> http://www.xtibia.com/forum/topic/230354-tutorial-criar-spells-basico-mesmo/

    Ajudei? Rep+
  24. Upvote
    Duuhzinhow deu reputação a HeelNox em Adicionar nova cidade no npc travell   
    Editei o meu tenta ai, o post acima.
  25. Upvote
    Duuhzinhow recebeu reputação de vital900 em Tutorial criar spells (básico mesmo)   
    Eae galerinha do xtibia, vim aqui hoje para ensinar uma coisa simples, mas que muitos nao sabem, e queriam aprender de uma forma bem facil. Vou ensinar á criar spells básicas de damage, de area, e alvo unico... Primeiro, irei ensinar uma de alvo unico.
     
    Vá em data/spells/scripts copie um arquivo .lua e renomeie para o que desejar:
     
      Verde: é o tipo do dano, seja physical, fire, earth, ice, energy, lifedrain, manadrain, etc...   setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 22)   Vermelho: é o numero do efeito que irá até o alvo, voce pode escolher usando o comando "/x"   setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -120.2, 1, -125.2, 1)   Roxo: é o dano minimo, e maximo da spell. Baseado no level.   doSendMagicEffect(position1, 196)   Azul claro: Efeito que vai dar no target, quando o efeito "22" bater nele, voce pode escolher pelo comando "/z"   E agora, vamos colocar sua spell no spells.xml:   <instant name="Nome da spell" words="Nome da spell" lvl="Level necessario" mana="mana que ira gastar" aggressive="1" range="7" blockwalls="1" needtarget="1" exhaustion="1500" needlearn="0" event="script" value="Nome do arquivo.lua"> <vocation id="id da vocaçao"/>   Agressive: se for para dar dano coloque "1" se nao for apra dano coloque "0" Blockwalls: se o jutsu pode atravessar paredes coloque "0", se nao atravessar coloque "1" Needtarget: se precisa estar atacando coloque "1" se nao, coloque "0" Exhaustion: Tempo de exalst, 1500 = 1,5 segundos.   Bem, fazendo tudo isso certinho, sua spell estará pronta, agora vou explicar uma spell simples de area.   ----------------------------------------------------------------------------------------------   Copie qualquer arquivo, e renomeie para o que desejar. Vou utilizar um script bem simples que eu criei agora, só para demonstraçao.   local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 214) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -93.5, 1, -106.5, 1) arr1 = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0} } local area1 = createCombatArea(arr1) setCombatArea(combat1, area1) local function onCastSpell1(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var) end function onCastSpell(cid, var) local position1 = {x=getCreaturePosition(cid).x+2, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z} local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) return TRUE end   setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)   Essa parte, como expliquei na spell anterior, apenas mude o tipo de dano, á seu gosto.   setCombatParam(combat1, COMBAT_PARAM_EFFECT, 214)   Aqui, voce muda o efeito, que está o numero 214, voce pode modificar, vendo os numeros pelo comando "/z"   setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -93.5, 1, -106.5, 1)   Aqui, voce escolhe dano minimo e máximo, baseado no level.   arr1 = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0} }   Essa seria a area da spell, os numeros: 3: local onde o player que executou a spell irá estar. (sempre no meio) 1: local onde sairá a spell, ou seja, onde ira sair o efeito, e ira dar dano. 0: nao sairá nada   Agora, vamos coloca a tag da spell em spells.xml:   <instant name="Nome da spell" words="Nome da spell" lvl="level necessario" needtarget="0" mana="mana que ira gastar" aggressive="1" exhaustion="1600" needlearn="0" event="script" value="Nome do arquivo.lua"> <vocation id="id da vocaçao"/>   O resto ja expliquei na spell anterior.   Bem galera, por enquanto é isso, muito simples né.. Estou aceitando criticas e dicas para o topico, que eu estarei editando... e, em breve farei um tutorial mais aprofundado .... Se gostou nao esqueça de deixar seu rep
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...