Você está logado como visitante e tem acesso limitado, para acessar nosso conteúdo será necessário que você crie uma conta.
Obs.: certifique-se de informar uma conta de e-mail válida, para a ativação de sua conta.
Registre-se ou Logue sua Conta
REGRAS ·


Adicione este tópico no Digg · Salve no del.icio.us · Slashdot It · Poste em Technorati · Poste em Furl · Envie para Reddit · Compartilhe com Facebook · Fark It · Googlize este Post · Adicione em ma.gnolia · Adicione no Wink · Adicione em MyWeb · Adicione em Netscape
4 Páginas V   1 2 3 > »   
Reply to this topicStart new topic
> Pasta Data - Monstros, Parte III by ta4e
Avaliação 3 V
    
post 05:33 - 10/03/2007
Post #1
tibiaa4e



Colaborador de Scripting
Ícone do grupo

Grupo: Colaborador

Posts: 1.861
Registrado: 18-December 05
De: São Paulo/Pirituba
Membro N°: 7.702
Sou:


Char no Tibia:
Lemmyr Weloni

Seção Favorita:
actions

OTserv Preferido:
Meu e do soulblaster




Entendendo scripts da Pasta Data

Nessa Serie de Tutoriais vou explicar e faze-los entender a base dos scripts em lua e xml.
Desde você que não sabe nada de scripts e você que está num estagio médio
A idéia aqui é você aprender e saber o que e não pode fazer, já que a criatividade é sua parte

Esses tutoriais serão divididos em 11 partes, começando a explicar o if, else até os esquemas mais avançados.
A vantagem daqui é que você poderá testar seus scripts no otserver e sabendo o que deve fazer fica mais fácil do que fazer coisas a esmo...

Lembrando que você não ficará expert em LUA e sim em scripts de Otserver.

A divisão será em : (com links)

Parte I – Básico do básico de Lua
Parte II – Funções Lua
Parte III - Monstros
Parte IV - Raids
Parte V - Spells e suas grandes funções
Parte VI – Actions
Parte VII – Talk Actions e Movements
Parte VIII – A magia dos NPCS
Parte IX – Mega Quests
Parte X – Itens e grandes idéias
Parte XI – Weapons, Vocations e outfits

Todos esses tutoriais foram baseados em The Forgotten Server 0.3.0 Alpha 3 (Ou superior) use ele que é o melhor.

Parte II – Monstros

Esse será meu tutorial de monstros mudado para versão 8.21+, eu refiz ele pois eu acho que estava apesar de muito bom obsoleto
e preferi refaze-lo ao invés de apenas muda-lo. Os ataques e defesas explicarei ao final.

Aqui o exemplo de monstro :

CODE
        <?xml version="1.0" encoding="UTF-8"?>
<monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="280" manacost="0">
    <health now="8200" max="8200"/>
    <look type="35" corpse="5995"/>
    <targetchange interval="5000" chance="8"/>
    <strategy attack="100" defense="0"/>
    <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 staticattack="90"/>
        <flag runonhealth="0"/>
    </flags>
    
<attacks>
  <attack name="melee" interval="2000" skill="82" attack="80" />
  <attack name="demon gfb" interval="5700" chance="80" min="-180" max="-250" />
  <attack name="mana drain" interval="10000" chance="70" />
  <attack name="demon geb" interval="9000" chance="75" min="-360" max="-480" />
  <attack name="Fire Field" interval="5600" chance="85" />
</attacks>

    <defenses armor="50" defense="45">
        <defense name="healing" interval="1000" chance="15" min="90" max="200">
            <attribute key="areaEffect" value="blueshimmer"/>
        </defense>
        <defense name="speed" interval="1000" chance="15" speedchange="200" duration="20000">
            <attribute key="areaEffect" value="redshimmer"/>
        </defense>
    </defenses>
    
    <elements>
        <element firePercent="100"/>
        <element physicalPercent="25"/>
        <element earthpercent="20"/>
        <element energyPercent="20"/>
        <element deathPercent="20"/>
        <element icePercent="-25"/>
        <element holyPercent="-10"/>
    </elements>
    <immunities>
        <immunity lifedrain="1"/>
        <immunity paralyze="1"/>
        <immunity invisible="1"/>
    </immunities>
    
    <summons maxSummons="2">
        <summon name="fire elemental" interval="6000" chance="40" max="2"/>
    </summons>
    
    
    <voices interval="5000" chance="10">
        <voice sentence="Your soul will be mine!" yell="1"/>
        <voice sentence="MUHAHAHAHA!" yell="1"/>
        <voice sentence="CHAMEK ATH UTHUL ARAK!" yell="1"/>
        <voice sentence="I SMELL FEEEEAAAAAR!"/>
        <voice sentence="Your resistance is futile!" yell="0"/>
    </voices>
    
<loot capacity="350">
<item id="2148" countmax="20" chance1="100000" chancemax="90000" /> gold
<item id="2148" countmax="90" chance1="70000" chancemax="63000" /> gold
<item id="2148" countmax="100" chance1="42000" chancemax="9800" /> gold
<item id="2152" countmax="3" chance1="6600" chancemax="1200" /> platinum
<item id="2151" countmax="7" chance1="5600" chancemax="3000" /> talon
<item id="2795" countmax="6" chance1="12000" chancemax="800" /> fire mush
<item id="2171" chance="7200" /> platinum a
<item id="2462" chance="4500" /> devil h
<item id="2179" chance="4200" /> gold ring
<item id="7591" chance="5300" /> Great Health
<item id="7590" chance="5200" /> Great Mana
<item id="2470" chance="1400" /> golden legs
<item id="2472" chance="800" /> magic plate amor
<item id="1987" chance="100000">
    <inside>
        <item id="2149" countmax="3" chance1="12000" chancemax="2001" /> small emerald
          <item id="2148" countmax="100" chance1="10888" chancemax="9200" /> gold        
          <item id="2387" chance="48000" /> double a
          <item id="2176" chance="9999" /> orb
          <item id="2418" chance="7600" /> golden s
          <item id="1982" chance="7300" /> purpel tome
          <item id="2214" chance="6820" /> roh
          <item id="2396" chance="6800"/> ice rapier
        <item id="2165" chance="6860" /> stealth ring
        <item id="2432" chance="6200" /> fire a
        <item id="2164" chance="5100" /> might r
        <item id="2393" chance="4100"/> giant sword
        <item id="2520" chance="3200" /> demon shield
          <item id="5954" countmax="1" chance1="2600" chancemax="0" /> demon horn
        <item id="7368" countmax="5" chance1="2300" chancemax="0" /> assasin star
        <item id="2514" chance="1450" /> msm
        <item id="7382" chance="1300"/> demonrage sword
        <item id="7393" chance="900" /> demon trophy    
      </inside>
  </item>
</loot>
</monster>


Vou explica-lo passo a passo o que significa e ao final tentar enteder como se faz ele.
QUOTE
<monster name="Demon" nameDescription="Demon" race="fire" experience="6000" speed="280" manacost="0">
<health now="8200" max="8200"/>
<look type="35" head="0" body="0" legs="0" feet="0" addons="0" corpse="5995" />
<targetchange interval="5000" chance="8"/>
<strategy attack="100" defense="0"/>


Monster Name : É o nome que dele que aparece ou para ser sumonado ou colocado no map editor.
nameDescription : É o nome que aparecera ao dar look. Lembrando que a significa um ou seja só se usa em boss.
race : A raça dele. Ou seja o tipo de "sangue " que sai ao tomar dano. Existe 4 raças listadas abaixo :

QUOTE
venom : Venenosa, como Giant Spider, spider ou outros insetos.
blood : Blood é o mais normal sai sangue quando morre. Como Wolfs,trolls e outros tipos de humanos.
undead : Mortos, ou seja só sai aquele dano, como Skeletons, Vampire ou Mummys.
fire : Raça de fogo, como Demons,Fire elemental e outros.


experience : A experiencia que ele da ao ser morto.
speed : A velocidade inicial dele, lembrando que um player lvl 1 tem 220 de velocidade. Para fazer monstros que são "estatuas", coloque speedy 0.
manacost : A mana que prescisara para ele ser sumonado, caso seja 0 ele não poderá ser sumonado. E também é valida para convece-lo
Health now : A vida que o monstro iniciara ao ser sumonado ou dar spawn.
max : Esse é o health maximo.
looktype : O id da roupa do monstro.
head : É a cor da cabeça do monstro.
body : É a cor do tronco do monstro.
legs : É a cor da perna do monstro.
feet : É a cor do pé do monstro. (caso não seja um editavel pode ser retirado.)
addons : É o numero de addons.(0-sem, 1- addon 1, 2 -addon 2 e 3-Todos os addons).
corpse : O corpo dele quando ele morre (pode ser qualquer item.).
target change interval: É o quanto em milessegundos o monstro demora para tentar mudar de
alvo.(1000 = 1 segundo).
chanche: A chanche de ele tentar mudar de alvo (maximo é 100).
strategy attack: Isso funciona como o sistema do player de ataque defesa. O calculo de attack e defesa não pode
ultrapassar 100. Então normalmente os monstros vem com 100 de ataque e 0 de defesa. Um monstro como mais defesa pode ser mudado.
defense: Ler acima.

Nessa parte, talvez você queira fazer um monstro com o jeito de um item, como aquelas torres de ankhrahmun.
Para isso troque a linha do looktype para essa :
CODE
<look typeex="1560"/>


Onde esse numero é o id do item.

Tabela de cores



Agora vamos explicar a parte de flags.

CODE
<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 staticattack="90"/>
        <flag runonhealth="0"/>
    </flags>


summonable : Se ele pode ou não ser sumonado por players. A mana é configurada no manacost.
attackable : Se ele pode ser atacado. Por exemplo aquelas torres magicas de ank não podem.
hostile : Se ele é hostil ou não. Chickens, deer não são hostis.
illusionable : Se ele pode ser usado pela spells "utevo res ina".
convinceable : Se ele pode ser convencido pela runa.
pushable : Se ele pode ou não ser "empurrado".
canpushitems : Se ele empurra ou não itens. (caso não seja possivel empurrar o item, ele destruira.
canpushcreatures : Se ele empurra ou não criaturas. Caso não seja possivel empurrar e a criatura tiver menos health que
seu dano maximo ele a matará).
targetdistance : O quanto de sqm ele atacará o player. (caso faça monstros não hostis coloque + de 4. Tente não colocar mais de 8)
staticattack : É a chanche de o monstro ficar parado. Porém ao colocar muito pouco ele não ficará nem um segundo parado.
runonhealth : Qual o minimo de vida para ele correr. Caso ele "heale" e isso passar desse valor, ele voltará a atacar.


Agora sobre elements (imunidades). Lembrando que valores negativos querem dizer fraqueza e positivos é boa defesa contra o elemento.

CODE
<elements>
        <element firePercent="100"/>
        <element physicalPercent="25"/>
        <element earthpercent="20"/>
        <element energyPercent="20"/>
        <element deathPercent="20"/>
        <element icePercent="-25"/>
        <element holyPercent="-10"/>
    </elements>


fire : O quanto de imunidade a fogo ele terá.
physical : O quanto de imunidade a fisico ele terá (Melee e Explosion Spell).
earth : A antiga poison.
energy : O quanto de imunidade a energy.
death: O quanto de imunidade a morte (Death Strike e Sudden Death).
ice : O quanto de imunidade a gelo ele terá.
holy : O quanto de imunidade a benção ele terá (apenas paladinos tem esse tipo de spell).

Nas imunidades é apenas colocar os nomes. E o monstro terá imunidade, hoje em dia é usado para elementos não citados acima
e outros tipos. Os que existem são

CODE
    physical
    fire
    earth ou poison
    energy
    death
    ice
    holy
    lifedrain
    paralyze
    outfit
    drunk
    invisible
    drown (dano dos monstro de agua)


Agora a parte de summons :

CODE
<summons maxSummons="2">
        <summon name="fire elemental" interval="6000" chance="40" max="2"/>
    </summons>


maxSummons : Numero maximo de summons que ele poderá ter vivas.
summon name : O nome do monstro que ele sumonará.
interval : De quanto em quanto tempo ele tentará sumonar o monstro em milessegundos.
chanche : A chanche de ele tentar sumonar.
max : O maximo que ele sumonará vivos esse monstro. (pelo amor deixe isso maior que o maximo dele.)


Agora a parte dos gritos:

CODE
<voices interval="5000" chance="10">
        <voice sentence="Your soul will be mine!" yell="1"/>
        <voice sentence="MUHAHAHAHA!" yell="1"/>
        <voice sentence="CHAMEK ATH UTHUL ARAK!" yell="1"/>
        <voice sentence="I SMELL FEEEEAAAAAR!"/>
        <voice sentence="Your resistance is futile!" yell="0"/>
    </voices>


interval: De quanto em quanto tempo ele tentará falar.
chanche: De quanto em quanto tempo ele poderá falar.
voice sentence: A fala que ele irá falar.
yell: Se essa fala será um grito ou não.

Agora o que eu considero uma das partes mais importantes do monstro. Infelizmente a maioria das pessoas, não se interressam por ela
E seus monstros ficam uma verdadeira merda...

CODE
    <loot capacity="250">
<item id="2148" countmax="20" chance1="100000" chancemax="90000" /> gold
<item id="2148" countmax="90" chance1="70000" chancemax="63000" /> gold
<item id="2148" countmax="100" chance1="42000" chancemax="9800" /> gold
<item id="2152" countmax="3" chance1="6600" chancemax="1200" /> platinum
<item id="2151" countmax="7" chance1="5600" chancemax="3000" /> talon
<item id="2795" countmax="6" chance1="12000" chancemax="800" /> fire mush
<item id="2171" chance="7200" /> platinum a
<item id="2462" chance="4500" /> devil h
<item id="2179" chance="4200" /> gold ring
<item id="7591" chance="5300" /> Great Health
<item id="7590" chance="5200" /> Great Mana
<item id="2470" chance="1400" /> golden legs
<item id="2472" chance="800" /> magic plate amor
<item id="1987" chance="100000">
    <inside>
        <item id="2149" countmax="3" chance1="12000" chancemax="2001" /> small emerald
          <item id="2148" countmax="100" chance1="10888" chancemax="9200" /> gold        
          <item id="2387" chance="48000" /> double a
          <item id="2176" chance="9999" /> orb
          <item id="2418" chance="7600" /> golden s
          <item id="1982" chance="7300" /> purpel tome
          <item id="2214" chance="6820" /> roh
          <item id="2396" chance="6800"/> ice rapier
        <item id="2165" chance="6860" /> stealth ring
        <item id="2432" chance="6200" /> fire a
        <item id="2164" chance="5100" /> might r
        <item id="2393" chance="4100"/> giant sword
        <item id="2520" chance="3200" /> demon shield
          <item id="5954" countmax="1" chance1="2600" chancemax="0" /> demon horn
        <item id="7368" countmax="5" chance1="2300" chancemax="0" /> assasin star
        <item id="2514" chance="1450" /> msm
        <item id="7382" chance="1300"/> demonrage sword
        <item id="7393" chance="900" /> demon trophy    
      </inside>
  </item>
</loot>


loot capacity : O maximo que o monstro terá de itens dentro de si, Lembrando que
dificilmente um monstro que vem muita coisa passa de 180.
itemid: O id do item que ele dropará.
countmax: O maximo que o item virá, podendo ser stackable ou não. Porém prefiro usar so para stackable. (não use isso para dar mais de 100, pois fica ridiculo.)
chanche1: A chanche que o monstro dará o item.
chanchemax: A chanche de ele dar a quantidade maxima do item.

Agora algumas dicas :
-Como a linguagem é xml, adicione o nome do item que ele dar, para se for editar, você não se confude. Pode colcoar sem nenhum caractere especial
-Coloque sempre monstros com bag, para isso faça isso :

CODE
    <item id="1987" chance="100000">
    <inside>
        <item id="7393" chance="900" /> demon trophy
    </inside>
  </item>


Ou seja não feche a tag do item 1987 (bag de rook), e abra a tag inside (dentro) e coloque tudo o que quiser, (não faça cair mais de 8 itens na bag), depois feche a tag inside e
feche a tag item. Ai a bag so virá quando cair algo dentro, se quiser fazer bags vazias coloque ela como um item normal separado.

- Não faça um monstro que não seja boss cair muitos itens, pois fica ridiculo.
- Se quiser que um monstro drope um item sempre (como os pharaos dropam aqueles itens, faça ele com chanche 1000000, ai ele sempre cairá.


Bem agora é a parte legal dos monstros, bem legal é no começo é um verdadeiro saco, depois fica muito legal (Eu por exemplo adorei fazer 250 monstros no zorzin ot,
e agora ter que fazer denovo pq o tibia mudo tudo ¬¬).

Bem eu ensinarei como fazer spells em monstros, porém você poderá usar as feitas em spells tradicional, (eu uso as minhas antigas).
Vou explicar essa do demon.

CODE
<attacks>
  <attack name="melee" interval="2000" skill="82" attack="80" />
  <attack name="demon gfb" interval="5700" chance="80" min="-180" max="-250" />
  <attack name="mana drain" interval="10000" chance="70" />
  <attack name="demon geb" interval="9000" chance="75" min="-360" max="-480" />
  <attack name="Fire Field" interval="5600" chance="85" />
</attacks>


attack name: Nome da magia, alguns nomes são reservados para já constar a condição (explicados mais a frente). Para usar as magias ja criadas use o nome dela.
interval: Tempo em milessegundos, que ele atacará.
chanche: A chanche de ele atacar o player.
skill : Só pode ser usado com o nome Melee, siginifica o skill do monstro
attack: Seria o ataque da arma do monstro (imaginaria).


Bem nesse monstro ele usa magias criadas por mim que estão no spells.
Agora vamos fingir que eu fiquei fresco, e não quero mais usar magias do spells, pq kero limprar 1kb do meu hd. Então
vou refazer todas elas dentro do monstro.
Começando pela geb (Great Energy Beam):

Lembra que eu falei que tem as palavras reservadas ?
Então cada magia do Tibia tem sua condição e esses nomes ja dão o tipo dela.

CODE
    "melee",
    "physical",
    "poison",
    "earth",
    "fire",
    "ice",
    "freeze",
    "energy",
    "drown",
    "death",
    "curse",
    "holy",
    "lifedrain",
    "manadrain",
    "healing",
    "speed",
    "outfit",
    "invisible",
    "drunk",
    "firefield",
    "poisonfield",
    "energyfield",
    "firecondition",
    "poisoncondition",
    "energycondition",
    "drowncondition",
    "freezecondition",
    "cursecondition"


Só para os duvidosos curse é death e dazzled é benção.

Pelo amor de deus, não me façam explicar cada um dos nomes reservado. Pelo nome já da pra imaginar.
Agora que já temos isso
Vamos construir nossa GEB

Ela fica assim :

CODE
attack name="energy" interval="9000" chance="30" length="8" spread="0" min="-380" max="-420">
            <attribute key="areaEffect" value="purpleenergy"/>
        </attack>


Esse length e spread são definições do tamanho dela. Onde :
QUOTE
length - comprimento.
spread - seria mais ou menos a largura.
radius - raio da magia. Ou seja o numero de sqm em relação ao centro para as pontas.


Acredito que essa será a parte mais complicada de explicar. EU prefiro dar por exemplos.
Imagine as seguintes magias a firewave, great energy beam e Great fireball.

Para fazer uma firewave deviamos usar isso
length="4", spread="4";
A great energy beam :
lenght="8", spread="0"
A Great Fireball :
radius="4"

Para explicar o radius tem essa figura
CODE
        {0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 8, 8, 7, 8, 8, 0, 0, 0, 0},
        {0, 0, 0, 8, 7, 6, 6, 6, 7, 8, 0, 0, 0},
        {0, 0, 8, 7, 6, 5, 5, 5, 6, 7, 8, 0, 0},
        {0, 8, 7, 6, 5, 4, 4, 4, 5, 6, 7, 8, 0},
        {0, 8, 6, 5, 4, 3, 2, 3, 4, 5, 6, 8, 0},
        {8, 7, 6, 5, 4, 2, 1, 2, 4, 5, 6, 7, 8},
        {0, 8, 6, 5, 4, 3, 2, 3, 4, 5, 6, 8, 0},
        {0, 8, 7, 6, 5, 4, 4, 4, 5, 6, 7, 8, 0},
        {0, 0, 8, 7, 6, 5, 5, 5, 6, 7, 8, 0, 0},
        {0, 0, 0, 8, 7, 6, 6, 6, 7, 8, 0, 0, 0},
        {0, 0, 0, 0, 8, 8, 7, 8, 8, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0}


Ou seja com raio 8 ele abrangerá tudo isso.
Então ele ficará um tipo de triangulo, tornando nossa vida mais pratica.
O length seria simplesmente o numero 1,2,3,4,5,6,7,8. Ou seja , uma reta
O spread sempre é usado junto com o length.
O spread maximo é contado apenas no ultimo sqm do length, então ele ficaria assim :

CODE
{1, 1, 1, 1, 1},
{0, 1, 1, 1, 0},
{0, 1, 1, 1, 0},
{0, 0, 3, 0, 0}

Sendo o 3 o primeiro sqm da magia. Ao sqm de numero 4, ele fica com 4 de largura e vai diminuindo até que fique em 0.
Meio complicado de explicar, tente fazer testes que você encontrará facilmente.
Bem isso você ja sabe, como fazer magias espontaneas. Agora tem aquelas magias que os montros tacam na direção do player
Para isso acontecer apenas adicione a tag

CODE
target="1"
range="7"


Target ou alvo é para ele tacar no monstros. E range o maximo de sqm ele poderá tacar no alvo.

Pois muito bem, agora tentei explicar, o modo de fabricar as distancias dela.

Agora tem mais duas magias que tem prefixos diferentes, que é outfit e paralyze ou haste.
As duas tem uma diferença em comum que é duration, que seria o tempo que durará o efeito

speedchange para paralyze ou haste (coloque valores negativos para diminuir, se tiver em defesa só o player será afetado, se tiver em defesa o monstro será afetado).
item="id&q