Ir para conteúdo

anaosinho

Campones
  • Total de itens

    31
  • Registro em

  • Última visita

Posts postados por anaosinho

  1. Nossa, não consegui ler as letras no começo, coloque outra cor mais legível. Arrume as imagens, estão enormes.

     

    O resto tá bom.

     

    :)

     

     

    Aperte F5 que as imagem serão redimensionadas '-'

     

     

     

    Mas corte para os lugares específicos, as imagens colocam coisas desnecessárias.

     

     

     

    Tem pessoas que se perdem assim :S por isso deixo as imagens inteiras

  2. Notice: Undefined index: page in C:\Program Files\VertrigoServ\www\install.php on line 40

    Call Stack

    # Time Memory Function Location

    1 0.0029 555416 {main}( ) ..\install.php:0

     

    ( ! ) Notice: Undefined index: page in C:\Program Files\VertrigoServ\www\install.php on line 52

    Call Stack

    # Time Memory Function Location

    1 0.0029 555416 {main}( ) ..\install.php:0

     

    ( ! ) Notice: Undefined index: page in C:\Program Files\VertrigoServ\www\install.php on line 63

    Call Stack

    # Time Memory Function Location

    1 0.0029 555416 {main}( ) ..\install.php:0

     

     

    ddas.png

     

    Deu esse erro quando fui entrar no site que eu fis pro server

     

     

    Por favor ajuda '-' Dou 3 +REP pra quem ajudar

     

    =/

  3. Testarei e jajá darei meu veredito!

     

    _____________________________________________________

     

    Bom topico, bem explicado , bem legal, mais infelizmente não vem com os corpses dos pokemons e isso me dara um dor de cabeça tremenda na hora de editar meu server... mais tá aprovado... não baixem kkk quer dizer baixem vale a pena!

    _____________________________________________________________

    Mais um edit esqueçam o que disse ai em cima...

    Tá com tudo agora :D... só uma pergunta onde acho a id do corpse pra altera-la, pois quando copio não ta indo como corpse o id (itemtype)quando vou testar abre um item nada a ver (box, terreno...) qual id devo usar?... serei grato se obter resposta :D'

    _________________________________________________________________________________________

     

    (y) aprovado

     

    desculpe,depois postarei outro tutorial de como criar ids de itens,^^ usando o otitemeditor

    o corpse se cria de uma maneira diferente

     

     

     

    http://www.xtibia.com/forum/topic/158900-criando-novos-id-de-items-e-corpses/page__p__1047720#entry1047720

     

    Táa ae meu novo tutorial :) CRIANDO ITENS E CORPSES COM IDS NOVO ;)

  4. Olha Eterno para fazer meus pokes eu num uso o item editor (ele dá o mesmo problema comigo) eu ainda estou procurando como ajustar isso....

    Já sobre como colocar em 32x32 eu acho que esta imagem irá explicar:

    IMAGEM

    E sobre alguns pokes em 64x64 (4 sqm) até EU tenho preguiça de fazer e o steelix é muito difícil de fazer pois ele não está no tamanho certo, que é ele ser 96x96 (9 sqm), ele está com 64x64 (4 sqm) e tem que aumentar com as proporções corretas (estou parecendo um Nerd!!) e isto é chato de fazer.... Já tentei fazer ele umas 5 vezes, mais desisti porque é muito difícil....

     

     

     

    Aqui pra ajudar vocês sobre o corpse, e como faser o mosntro certinho tudo com imagens '---'

     

     

    http://www.xtibia.com/forum/topic/157664-pokemons-formato-idc/page__p__1040020#entry1040020

     

    http://www.xtibia.com/forum/topic/158900-criando-novos-id-de-items-e-corpses/page__p__1047720#entry1047720

  5. Ótimo, mas evite usar links para fora do XTibia (como o do client no TibiaBR, prefira utilizar os da nossa seção de download)

     

    Aprovado! :)

     

     

    Ok me desculpe é que estava sem tempo para upar o client do tibia ^^

     

    Vou editar com o client da seção :D

     

    EDIT

     

    Eii não achei o link do client no xtibia tem como me mandar? *--*

     

     

    EDIT

     

    nossa ninguem nunca mais respondeu meu tutorial fiquei Alone u.u

  6. Oláaa gente ;D

    Hoje eu vou mostar como criar Corpses usando o otitemeditor :D

    No tutorial estarei mostrando como criar ID, e como adicionar o item type do item pelo Dat editor

     

    Agora vamos lá, estarei usando um Server de Pokémon como base:

     

    Primeiramente Baixe os programas necessários.

     

    Download:

     

    Ot item Editor:

    http://www.4shared.com/file/ur8xZioc/otitemeditor037.html

     

    Dat Editor:

    http://www.multiupload.com/KD9NW6TMF0

     

    Scan Ot item editor:

    http://www.virustotal.com/file-scan/report.html?id=c72e216f7c17f9bd81c1ea8f0d9d18d729fca5783772e3b69b0b9469bf28c957-1308245391

     

    Scan dat Editor:

    http://www.virustotal.com/file-scan/report.html?id=3c5e94e59df52ef693d12b0543aa66d6f8b0dee89a88bdb1e1cd1ca5d3d13195-1306952621

     

    E baixe o tíbia no TibiaBR

    http://tibiabr.com/Downloads/Tibia_8.54

     

     

    Depois de baixar tudo, Extraia o otitemeditor, o Dat editor E o instale o tíbia 8.54

    Procure deixar tudo na mesma pasta para facilitar

     

    E pegue o Tibia.dat

    E o Tibia.spr

    e coloque dentro da pasta do Otitemeditor

     

     

    1.png

     

     

    Abra o Otitemeditor

    Lembre-se se você não colocar o Tibia.dat E o Tibia.spr não ira funcionar (USE SEMPRE O DAT E O SPR DO TIBIA SE NÃO NÃO FUNCIONARA)

     

    Clique em File / Load otb

     

    E abra o Items.otb do seu Server que geralmente fica na pasta

     

    Data / Items / Items.otb

     

     

    2.png

     

     

    Os items que aparecerão vão ser do tíbia

    Mas não se preocupe Porque os itens vão funcionar como os do Pokemon.

     

    Abra o dat editor, Vá em :

     

    File / Open

     

    Procure a pasta do client do seu Server, e nos seus devidos lugares abra o Tibia.dat e Tibia.spr

     

    (USE SEMPRE O DAT E O SPR DO CLIENT QUE VOCÊ USA PARA ENTRAR NO SEU SERVER) no meu caso o de pokemon

     

    1.png

     

     

    Espere carregar e as sprites do seu client irão aparecer

     

    As sprites irão aparecer no Canto esquerdo

     

     

    Agora clique em:

     

    File / New / Item

     

     

    5.png

     

     

    E os corpses aparecerão

     

    Agora escolha o corpse que você deseja, eu vou usar o do Bayleef

    Pegue o Item Type do item (Que é está na tabelinha No centro a baixo)

     

     

    6.png

     

     

    E Guarde.

     

    Agora vá no Otitemeditor e Clique no + Que está ao lado do Deprecated

     

     

    7.png

     

     

    Escolha qualquer um dos números Abaixo ( Esse numero será o id do seu item)

    Vou usar o numero 110 (GUARDE ESSE NUMERO)

     

    Clique no numero que você escolheu E na caixinha ao lado onde esta escrito CID

    Ponha o numero que eu falei pra você guardar.

     

     

    8.png

     

     

    Retire o Not moveable da caixinha ao lado do Cid.

     

    Agora clique com o botão direito no item number que você escolheu e selecione NONE.

    Clique em File / Save as...

    E salve em cima do seu otb Antigo

     

     

    9.png

     

     

    Agora vá na pasta do seu Server Clique em:

     

    Data / Items / Items.xml

     

    E abra com o bloco de notas

     

     

    10.png

     

     

    Copie os dados de qualquer monstro, e cole abaixo

     

     

    11.png

     

     

    Agora pegue o item id que você criou (AQUELE SEGUNDO NUMERO QUE EU FALEI PARA GUARDAR (OU SEJA O ITEM ID)

     

    E ponha encima do id antigo do item , e mude o nome do item Para “Fainted Nomedopoke”

     

     

    12.png

     

     

    Salve e feche.

     

    Agora vá em:

     

    Data / Monsters / Pokes .

     

    Abra o XML do Pokémon que você esta editando.

    E mude o corpse=" ID DO CORPO"/>

    Mude o id do corpse e salve.

     

     

    13.png

     

     

    Prontoooo Novo corpse adicionado

     

    CASO NÃO SAIBA CRIAR UM NOVO MONSTRO OLHE MEU OUTRO TOPICO (ENCINANDO A CRIAR POKEMONS FORMATO .IDC)

    http://www.xtibia.com/forum/topic/157664-pokemons-formato-idc/

     

    Se te ajudei dá um +REP pra min aeee Não cai o dedo

     

    GENTE TINHA UM ERRO NO TUTORIAL, JÁ FOI CONSERTADO

     

    Créditos

    Psycho Okama : <Eooooo

    FUIIIIIIIIZ

  7. Testarei e jajá darei meu veredito!

     

    _____________________________________________________

     

    Bom topico, bem explicado , bem legal, mais infelizmente não vem com os corpses dos pokemons e isso me dara um dor de cabeça tremenda na hora de editar meu server... mais tá aprovado... não baixem kkk quer dizer baixem vale a pena!

    _____________________________________________________________

    Mais um edit esqueçam o que disse ai em cima...

    Tá com tudo agora :D... só uma pergunta onde acho a id do corpse pra altera-la, pois quando copio não ta indo como corpse o id (itemtype)quando vou testar abre um item nada a ver (box, terreno...) qual id devo usar?... serei grato se obter resposta :D'

    _________________________________________________________________________________________

     

    (y) aprovado

     

    desculpe,depois postarei outro tutorial de como criar ids de itens,^^ usando o otitemeditor

    o corpse se cria de uma maneira diferente

  8. mas e o ataque dos novos pokemons como o da steelix? aonde poe

     

    Embaixo , lá no xml do pokemon na linha

     

     

    </flags>

    <attacks>

    <attack name="nome da magia (tem que existir no seu server)" interval="tempo que o mosntro usa" chance="chance de usar" range="poder da magia" min="dano minimo use sempre o menos EX: -100" max="dano maximo use sempre o menos EX: -200">

    </attack>

     

    ai vai adicionando as linhas com os novos atakes

     

    se o atake ainda não estiver criado vá na pasta Spells crie um xlm da nova magia, edite o nome, vá no dat editor pegue o item type da magia que você quer (o efeito desejado)

     

    volte, abra o Spells.xml adicione a sua nova magia. depois faça o que eu disse a cima.

     

    crie uma linha no xml do seu pokemon e vá adicionando as magias ^^

     

    use isso para faser os pokemons selvagens '-'

     

    Se te ajudei da um +Rep ae :B

  9. E tome rep pra esse cara jajá vou por a imagem de fã pra ele, mais so vou testar amanhã tomara que de certo... o servidor que eu baixei e bem complicado apesar de ser o mais completo e o svkeot tem aqui no forum!

     

     

    vlw *---*

     

    Se precisar de ajuda é só postar aqui

  10. Bem ja resolvi um dos meus muitos prols... eu ja ageitei os corpos, mais depois que capturo o pokemon... vou por aonde se usa o pokemon (da bolsa pra os itens) ele não vai da um mensagem branca em baixo "you cant dress this intem" alguém sabe resolver isso?

     

     

    Tem sim entre no script do portrait e coloque o novo pokemon lá :)

  11. gente to precisando que vocês me ajudem com esse script preciso dele pra amanhã :S

     

    eu preciso que vocês arrumem pra quando a pessoas dar move com o pokemon ele fique parado no local que você mandou ;D

     

    vlw gente aguardo resposta

     

     

     

    local nao = {'4820', '4821', '4822', '4823', '4824', '4825', '1395', '1389', '1391', '1393', '460'}

     

    local direction = {'4', '5', '6', '7'}

    -- ridefly

    local ridefly = {'Crystal Onix', 'Venusaur', 'Ninetales', 'Arcanine', 'Ponyta', 'Rapidash', 'Doduo', 'Dodrio', 'Onix', 'Rhyhorn', 'Tauros', 'Porygon', 'Aerodactyl', 'Dragonite', 'Charizard', 'Pidgeot', 'Fearow', 'Moltres', 'Zapdos', 'Articuno', 'Mew', 'Mewtwo'}

    local ride = {'Crystal Onix', 'Venusaur', 'Ninetales', 'Arcanine', 'Ponyta', 'Rapidash', 'Doduo', 'Dodrio', 'Onix', 'Rhyhorn', 'Tauros'}

    local fly = {'Porygon', 'Aerodactyl', 'Dragonite', 'Charizard', 'Pidgeot', 'Fearow', 'Zapdos', 'Moltres', 'Articuno', 'Mew', 'Mewtwo'}

    local flys = {

    [265] = {229, 2300, 350}, -- moltres

    [283] = {230, 2100, 350}, -- artic

    [199] = {224, 2600, 350}, -- zapdos

    [9] = {232, 2200, 525}, -- 1000

    [34] = {233, 2200, 525},-- two

    [210] = {221, 1300, 410},-- nite

    [80] = {222, 900, 375}, -- geot

    [17] = {226, 800, 400}, -- fearow

    [10] = {227, 1100, 410}, -- aero

    [67] = {216, 1000, 410}, -- chari

    [97] = {316, 600, 440}, -- porygon

    }

     

    local rides = {

    [93] = {128, 780, 400}, -- tauros

    [114] = {129, 800, 375}, -- kyuubi

    [220] = {130, 800, 395}, -- rapid

    [16] = {131, 410, 500}, -- ponyta

    [77] = {132, 400, 510}, -- rhyhorn

    [88] = {12, 900, 390}, -- arcan

    [493] = {492, 1000, 360}, -- shiny arca

    [496] = {494, 420, 420}, -- shiny vneu

    [292] = {293, 480, 430}, -- cristal onix

    [248] = {126, 450, 450}, -- onix

    [22] = {134, 390, 450}, -- venu

    [120] = {133, 750, 380}, -- dodrio

    [26] = {135, 420, 500}, -- doduo

    }

    local bolas = {'2222', '2223', '2224'}

    local ultra = {'2220', '2221', '2227'}

    local etudao = 9506

     

    local mind = 9507

     

    -- ROCK SMASH

    local rocksmash = {'Sandshrew', 'Sandslash', 'Diglett', 'Dugtrio', 'Primeape', 'Machop', 'Machoke', 'Machamp', 'Geodude', 'Graveler', 'Golem' , 'Onix', 'Cubone', 'Marowak', 'Rhyhorn', 'Rhydon', 'Kangaskhan', 'Tauros', 'Snorlax', 'Poliwrath'}

    local erockmash = 9502

    local cdrocksmash = 5

    -- ROCK SMASH

     

    -- DIG

    local digholes = {'468', '481', '483'}

    local dig = {'Raticate', 'Sandshrew', 'Sandslash', 'Diglett', 'Dugtrio', 'Primeape', 'Machop', 'Machoke', 'Machamp', 'Geodude', 'Graveler', 'Golem' , 'Onix', 'Cubone', 'Marowak', 'Rhyhorn', 'Rhydon', 'Kangaskhan', 'Tauros', 'Snorlax'}

    local edig = 9504

    local cddig = 5

    -- DIG

     

    -- CUT

    local cut = {'Raticate', 'Bulbasaur', 'Ivysaur', 'Venusaur', 'Charmeleon', 'Sandshrew', 'Sandslash', 'Gloom', 'Vileplume', 'Paras', 'Parasect', 'Meowth', 'Persian', 'Bellsprout', 'Weepinbell', 'Victreebel', 'Farfetchd', 'Krabby', 'Kingler', 'Exeggutor', 'Cubone', 'Marowak', 'Tangela', 'Scyther', 'Pinsir', 'Charizard'}

    local ecut = 9503

    local cdcut = 5

    -- CUT

     

    -- BLINK

    local blink = {'Abra', 'Kadabra', 'Alakazam', 'Porygon'}

    local exhaustblink = 9501

    local cdblink = 50

    -- BLINK

     

    -- LIGHT

    local light = {'Abra', 'Kadabra', 'Alakazam', 'Magnemite', 'Magneton', 'Drowzee', 'Hypno', 'Voltorb', 'Electrode', 'Mrmime', 'Electabuzz', 'Jolteon', 'Porygon', 'Pikachu', 'Raichu'}

    local exhautStorage = 9500

    local time = 600

    local cd = 17

    -- LIGHT

     

    function onUse(cid, item, frompos, item2, topos)

    if getPlayerItemCount(cid, item2.itemid) >= 1 then

    return false

    end

    if exhaustion.get(cid, etudao) then

    doPlayerSendCancel(cid, "Please wait a few seconds before using order again!")

    return true

    end

    if isMonster(item2.uid) and item2.uid ~= getCreatureSummons(cid)[1] and item2.uid ~= cid then

    if #getCreatureSummons(cid) == 0 then

    doPlayerSendCancel(cid, "You need a pokemon to use order.")

    return true

    end

    if exhaustion.get(cid, mind) then

    doPlayerSendCancel(cid, "Your pokemon is too exhausted from the last control, this ability has 2 minutes cooldown.")

    return true

    end

    if isPlayer(getCreatureMaster(item2.uid)) then

    doPlayerSendCancel(cid, "You cant control the mind of someone's else pokemon.")

    return true

    end

    if not isInArray({"Alakazam", "Tentacruel", "Gengar"}, getCreatureName(getCreatureSummons(cid)[1])) then

    doPlayerSendCancel(cid, "This pokemon cant control minds.")

    return true

    end

    exhaustion.set(cid, mind, 240)

    doCreatureSay(getCreatureSummons(cid)[1], "CONTROL MIND!", TALKTYPE_MONSTER)

    doSendDistanceShoot(getThingPos(getCreatureSummons(cid)[1]), getThingPos(item2.uid), 39)

    registerCreatureEvent(item2.uid, "Controled")

    doSendMagicEffect(getThingPos(item2.uid), 136)

    doSendMagicEffect(getThingPos(item2.uid), 134)

    doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 133)

    setPlayerStorageValue(cid, 61209, getCreatureMaxHealth(getCreatureSummons(cid)[1]))

    setPlayerStorageValue(cid, 61210, getCreatureHealth(getCreatureSummons(cid)[1]))

    doConvinceCreature(cid, item2.uid)

    if getCreatureSpeed(item2.uid) == 0 then

    doChangeSpeed(item2.uid, 180)

    end

    doCreatureSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", control "..string.lower(getCreatureName(item2.uid)).."'s mind!", 1)

    local cmed = item2.uid

    local cmname = getCreatureName(getCreatureSummons(cid)[1])

    local cmpos = getThingPos(getCreatureSummons(cid)[1])

    doRemoveCreature(getCreatureSummons(cid)[1])

    local cmzao = doSummonCreature(""..cmname.." cm", cmpos)

    doConvinceCreature(cid, cmzao)

    setPlayerStorageValue(cid, 888, 1)

    local function check(params)

    if isCreature(params.cid) then

    if getPlayerStorageValue(params.cid, 888) <= 0 then

    return true

    end

    if not isCreature(cmed) then

    local pkcmpos = getThingPos(getCreatureSummons(cid)[1])

    doRemoveCreature(getCreatureSummons(cid)[1])

    local item = getPlayerSlotItem(cid, 8)

    local pk = doSummonCreature(getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball."), pkcmpos)

    doConvinceCreature(cid, pk)

    doCreatureSetLookDir(getCreatureSummons(cid)[1], 2)

    registerCreatureEvent(pk, "DiePoke")

    registerCreatureEvent(pk, "Exp")

    registerCreatureEvent(cid, "PlayerPokeDeath")

    setCreatureMaxHealth(pk, (getPlayerStorageValue(cid, 61209)))

    doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61209)))

    doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61210))-(getPlayerStorageValue(cid, 61209)))

    setPlayerStorageValue(cid, 888, 0)

    end

    if params.rod == 20 then

    local lifecmed = getCreatureMaxHealth(cmed) - getCreatureHealth(cmed)

    local poscmed = getThingPos(cmed)

    local cmeddir = getCreatureLookDir(cmed)

    local namecmed = getCreatureName(cmed)

    doRemoveCreature(getCreatureSummons(cid)[1])

    local back = doSummonCreature(""..namecmed.." s", poscmed)

    if getCreatureSpeed(back) == 0 then

    doChangeSpeed(back, 180)

    end

    doCreatureSetLookDir(back, cmeddir)

    doCreatureAddHealth(back, -lifecmed)

    local item = getPlayerSlotItem(cid, 8)

    local mynewpos = getThingPos(getCreatureSummons(cid)[1])

    doRemoveCreature(getCreatureSummons(cid)[1])

    pk = doSummonCreature(getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball."), mynewpos)

    doConvinceCreature(cid, pk)

    doCreatureSetLookDir(getCreatureSummons(cid)[1], 2)

    registerCreatureEvent(pk, "DiePoke")

    registerCreatureEvent(pk, "Exp")

    registerCreatureEvent(cid, "PlayerPokeDeath")

    setCreatureMaxHealth(pk, (getPlayerStorageValue(cid, 61209)))

    doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61209)))

    doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61210))-(getPlayerStorageValue(cid, 61209)))

    setPlayerStorageValue(cid, 888, 0)

    else

    doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 220)

    end

    end

    end

    for rod = 1, 20 do

    addEvent(check, rod*500, {cid = cid, rod = rod})

    end

    return true

    end

     

    if item2.uid == cid then

    if getPlayerStorageValue(cid, 888) >= 1 then

    doPlayerSendCancel(cid, "You cant fly neither ride pokemons being controled.")

    return true

    end

    if #getCreatureSummons(cid) == 0 and getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 then

    doPlayerSendCancel(cid, "You need a pokemon to use order.")

    return true

    end

     

    if getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 and not isInArray(ridefly, getCreatureName(getCreatureSummons(cid)[1])) then

    doPlayerSendCancel(cid, "You can't ride this pokemon nor fly with it.")

    return true

    end

     

    if getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 and getCreatureSpeed(getCreatureSummons(cid)[1]) == 0 then

    return true

    end

     

     

    if getPlayerStorageValue(cid, 17001) <= 0 and getPlayerStorageValue(cid, 17000) <= 0 and isInArray(ride, getCreatureName(getCreatureSummons(cid)[1])) then

    local pokemon = rides[getCreatureOutfit(getCreatureSummons(cid)[1]).lookType]

    if getCreatureSpeed(getCreatureSummons(cid)[1]) >= 1 then

    doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))

    end

    local function ride(params)

    if isCreature(params.cid) then

    if isCreature(getCreatureSummons(params.cid)[1]) then

    if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(cid)) <= params.d then

    doChangeSpeed(cid, -250)

    doChangeSpeed(cid, pokemon[2])

    exhaustion.set(cid, etudao, 4)

    setPlayerStorageValue(cid, 17001, 1)

    doSetCreatureOutfit(cid, {lookType = pokemon[1], lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, -1)

    setPlayerStorageValue(cid, 61209, getCreatureMaxHealth(getCreatureSummons(cid)[1]))

    setPlayerStorageValue(cid, 61210, getCreatureHealth(getCreatureSummons(cid)[1]))

    doRemoveCreature(getCreatureSummons(cid)[1])

    else

    dirh = getDirectionTo(getThingPos(getCreatureSummons(params.cid)[1]), getThingPos(params.cid))

    if dirh == NORTHWEST then

    if math.random(1,100) >= 51 then

    dirh = NORTH

    else

    dirh = WEST

    end

    elseif dirh == SOUTHWEST then

    if math.random(1,100) >= 51 then

    dirh = SOUTH

    else

    dirh = WEST

    end

    elseif dirh == SOUTHEAST then

    if math.random(1,100) >= 51 then

    dirh = SOUTH

    else

    dirh = EAST

    end

    elseif dirh == NORTHEAST then

    if math.random(1,100) >= 51 then

    dirh = NORTH

    else

    dirh = EAST

    end

    end

    local dirh = dirh

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then

    doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(cid)[1]))

    doPushCreature(getCreatureSummons(params.cid)[1], dirh, 1, 0)

    doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))

    else

    doPushCreature(getCreatureSummons(params.cid)[1], dirh, 1, 0)

    doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))

    end

    end

    end

    end

    end

     

    local function speed(params)

    if isCreature(params.cid) then

    if isCreature(getCreatureSummons(params.cid)[1]) then

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then

    doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(cid)[1]))

    end

    end

    end

    end

    doCreatureSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", let me ride you!", 1)

    exhaustion.set(cid, etudao, 4)

    if getPlayerGroupId(cid) >= 2 and getPlayerGroupId(cid) <= 6 then

    distanc = 1

    else

    distanc = 0

    end

    local distance = distanc

    for i=1,12 do

    addEvent(ride, pokemon[3]*i, {cid = cid, d = distance})

    addEvent(speed, ((pokemon[3]*12)+100), {cid = cid})

    end

    return true

    end

     

    if getPlayerStorageValue(cid, 17001) >= 1 then

    setPlayerStorageValue(cid, 17001, 0)

    if getPlayerGroupId(cid) ~= 6 then

    setPlayerGroupId(cid, 8)

    end

    doCreatureSetLookDir(cid, 2)

    doChangeSpeed(cid, -(getCreatureSpeed(cid)))

    if getPlayerGroupId(cid) >= 2 and getPlayerGroupId(cid) <= 7 then

    doChangeSpeed(cid, 400*getPlayerGroupId(cid))

    else

    doChangeSpeed(cid, 250)

    end

    doRemoveCondition(cid, CONDITION_OUTFIT)

    local item = getPlayerSlotItem(cid, 8)

    doCreatureSay(cid, "" .. getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball.")..", let me get down!", 1)

    doSummonMonster(cid, getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball."))

    local pk = getCreatureSummons(cid)[1]

    registerCreatureEvent(cid, "PlayerPokeDeath")

    registerCreatureEvent(pk, "DiePoke")

    registerCreatureEvent(pk, "Exp")

    setCreatureMaxHealth(pk, (getPlayerStorageValue(cid, 61209)))

    doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61209)))

    doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61210))-(getPlayerStorageValue(cid, 61209)))

    return true

    end

     

     

    if getPlayerStorageValue(cid, 17000) >= 1 then

    if isInArray({460, 1022, 1023}, getTileInfo(getThingPos(cid)).itemid) then

    doPlayerSendCancel(cid, "You can\'t stop flying at this height!")

    return true

    end

    if getTileInfo(getThingPos(cid)).itemid >= 4820 and getTileInfo(getThingPos(cid)).itemid <= 4825 then

    doPlayerSendCancel(cid, "You can\'t stop flying above the water!")

    return true

    end

    if getPlayerGroupId(cid) ~= 6 then

    setPlayerGroupId(cid, 8)

    end

    doCreatureSetLookDir(cid, 2)

    setPlayerStorageValue(cid, 17000, 0)

    doChangeSpeed(cid, -(getCreatureSpeed(cid)))

    if getPlayerGroupId(cid) >= 2 and getPlayerGroupId(cid) <= 7 then

    doChangeSpeed(cid, 200*getPlayerGroupId(cid))

    else

    doChangeSpeed(cid, 250)

    end

    doRemoveCondition(cid, CONDITION_OUTFIT)

    local item = getPlayerSlotItem(cid, 8)

    doCreatureSay(cid, "" .. getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball.")..", let me get down!", 1)

    doSummonMonster(cid, getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball."))

    local pk = getCreatureSummons(cid)[1]

    registerCreatureEvent(cid, "PlayerPokeDeath")

    registerCreatureEvent(pk, "DiePoke")

    registerCreatureEvent(pk, "Exp")

    setCreatureMaxHealth(pk, (getPlayerStorageValue(cid, 61209)))

    doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61209)))

    doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61210))-(getPlayerStorageValue(cid, 61209)))

    return true

    end

     

    if getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 and isInArray(fly, getCreatureName(getCreatureSummons(cid)[1])) then

    if getPlayerStorageValue(cid, 17000) <= 0 then

    local pokemon = flys[getCreatureOutfit(getCreatureSummons(cid)[1]).lookType]

    local function fly(params)

    if isCreature(params.cid) then

    if isCreature(getCreatureSummons(params.cid)[1]) then

    if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(cid)) <= params.dd then

    doPlayerSendTextMessage(cid,27, "Type \"up\" or \"h1\" to fly higher and \"down\" or \"h2\" to fly lower." )

    setPlayerStorageValue(cid, 61209, getCreatureMaxHealth(getCreatureSummons(cid)[1]))

    setPlayerStorageValue(cid, 61210, getCreatureHealth(getCreatureSummons(cid)[1]))

    setPlayerStorageValue(cid, 17000, 1)

    registerCreatureEvent(cid, "Flying")

    doChangeSpeed(cid, -250)

    doChangeSpeed(cid, pokemon[2])

    exhaustion.set(cid, etudao, 4)

    doSetCreatureOutfit(cid, {lookType = pokemon[1], lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, -1)

    doRemoveCreature(getCreatureSummons(cid)[1])

    else

    dir = getDirectionTo(getThingPos(getCreatureSummons(params.cid)[1]), getThingPos(params.cid))

    if dir == NORTHWEST then

    if math.random(1,100) >= 51 then

    dir = NORTH

    else

    dir = WEST

    end

    elseif dir == SOUTHWEST then

    if math.random(1,100) >= 51 then

    dir = SOUTH

    else

    dir = WEST

    end

    elseif dir == SOUTHEAST then

    if math.random(1,100) >= 51 then

    dir = SOUTH

    else

    dir = EAST

    end

    elseif dir == NORTHEAST then

    if math.random(1,100) >= 51 then

    dir = NORTH

    else

    dir = EAST

    end

    end

    local dir = dir

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then

    doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(cid)[1]))

    doPushCreature(getCreatureSummons(params.cid)[1], dir, 1, 0)

    doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))

    else

    doPushCreature(getCreatureSummons(params.cid)[1], dir, 1, 0)

    doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))

    end

    end

    end

    end

    end

     

    local function speed(params)

    if isCreature(params.cid) then

    if isCreature(getCreatureSummons(params.cid)[1]) then

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then

    doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(cid)[1]))

    end

    end

    end

    end

     

    doCreatureSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", lets fly!", 1)

    exhaustion.set(cid, etudao, 4)

    if getPlayerGroupId(cid) >= 2 and getPlayerGroupId(cid) <= 6 then

    distancc = 1

    else

    distancc = 0

    end

    local distancee = distancc

    for i=1,12 do

    addEvent(fly, pokemon[3]*i, {cid = cid, dd = distancee})

    addEvent(speed, ((pokemon[3]*12)+100), {cid = cid})

    end

    return true

    end

    return true

    end

    end

    -- ROCK SMASH

    if item2.itemid == 1285 and getPlayerStorageValue(cid, 63215) <= 0 then

    if #getCreatureSummons(cid) == 0 then

    doPlayerSendCancel(cid, "You need a pokemon to use rock smash.")

    return true

    end

    if not isInArray(rocksmash, getCreatureName(getCreatureSummons(cid)[1])) then

    doPlayerSendCancel(cid, "This pokemon can't use rock smash.")

    return true

    end

    if isInArray(rocksmash, getCreatureName(getCreatureSummons(cid)[1])) then

    if exhaustion.get(cid, erocksmash) then

    doPlayerSendCancel(cid, "Please wait a few seconds before using rock smash again!")

    return true

    end

     

     

    if getCreatureSpeed(getCreatureSummons(cid)[1]) == 0 then

    return true

    end

    doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))

    local function tocut(params)

    if isCreature(params.cid) then

    if isCreature(getCreatureSummons(params.cid)[1]) then

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) >= 1 then

    return true

    end

    if getPlayerStorageValue(getCreatureSummons(params.cid)[1], 100) >= 1 then

    return true

    end

    if getDistanceBetween(getThingPos(getCreatureSummons(params.cid)[1]), topos) == 1 then

    doSendMagicEffect(topos, 118)

    doTransformItem(getTileItemById(topos, 1285).uid, 2257)

    exhaustion.set(cid, erocksmash, cdrocksmash)

    setPlayerStorageValue(getCreatureSummons(params.cid)[1], 100, 1)

    local function detrans(params)

    doTransformItem(getTileItemById(topos, 2257).uid, 1285)

    if isCreature(getCreatureSummons(params.ciddd)[1]) then

    setPlayerStorageValue(getCreatureSummons(params.ciddd)[1], 100, 0)

    end

    end

    addEvent(detrans, 5500, {ciddd = cid})

    doCreatureSay(getCreatureSummons(cid)[1], "ROCK SMASH!", TALKTYPE_MONSTER)

    local function nmr(params)

    if isCreature(params.cid) then

    if isCreature(getCreatureSummons(params.cid)[1]) then

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then

    doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(params.cid)[1]))

    end

    end

    end

    end

    addEvent(nmr, 400, {cid = cid})

    else

    local badire = getDirectionTo(getThingPos(getCreatureSummons(cid)[1]), topos)

    if badire == NORTHWEST then

    if math.random(1,100) >= 51 then

    badire = NORTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), badire), params.ccid, 0, 0) then

    badire = NORTH

    else

    badire = WEST

    end

    else

    badire = WEST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), badire), params.ccid, 0, 0) then

    badire = WEST

    else

    badire = NORTH

    end

    end

    elseif badire == SOUTHWEST then

    if math.random(1,100) >= 51 then

    badire = SOUTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), badire), params.ccid, 0, 0) then

    badire = SOUTH

    else

    badire = WEST

    end

    else

    badire = WEST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), badire), params.ccid, 0, 0) then

    badire = WEST

    else

    badire = SOUTH

    end

    end

    elseif badire == SOUTHEAST then

    if math.random(1,100) >= 51 then

    badire = SOUTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), badire), params.ccid, 0, 0) then

    badire = SOUTH

    else

    badire = EAST

    end

    else

    badire = EAST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), badire), params.ccid, 0, 0) then

    badire = EAST

    else

    badire = SOUTH

    end

    end

    elseif badire == NORTHEAST then

    if math.random(1,100) >= 51 then

    badire = NORTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), badire), params.ccid, 0, 0) then

    badire = NORTH

    else

    badire = EAST

    end

    else

    badire = EAST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), badire), params.ccid, 0, 0) then

    badire = EAST

    else

    badire = NORTH

    end

    end

    end

    local badire = badire

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then

    doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(params.cid)[1]))

    doPushCreature(getCreatureSummons(params.cid)[1], badire, 1, 0)

    doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(params.cid)[1]))

    else

    doPushCreature(getCreatureSummons(params.cid)[1], badire, 1, 0)

    doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(params.cid)[1]))

    end

    end

    end

    end

    end

     

    doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", smash this rock!", 1)

    local speed = getCreatureBaseSpeed(getCreatureSummons(cid)[1])

    local temk = 1000 -(2.3 * speed)

    addEvent(tocut, 0, {cid = cid, ccid = getCreatureSummons(cid)[1], topos = topos})

    for i = 1, getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), topos) * 2 do

    addEvent(tocut, temk*i, {cid = cid, ccid = getCreatureSummons(cid)[1], topos = topos})

    end

    return true

    end

    end

    -- ROCK SMASH END

     

    -- CUT

    if item2.itemid == 2767 and getPlayerStorageValue(cid, 63215) <= 0 then

    if #getCreatureSummons(cid) == 0 then

    doPlayerSendCancel(cid, "You need a pokemon to use cut.")

    return true

    end

    if not isInArray(cut, getCreatureName(getCreatureSummons(cid)[1])) then

    doPlayerSendCancel(cid, "This pokemon can't use cut.")

    return true

    end

    if isInArray(cut, getCreatureName(getCreatureSummons(cid)[1])) then

    if exhaustion.get(cid, ecut) then

    doPlayerSendCancel(cid, "Please wait a few seconds before using cut again!")

    return true

    end

    if getCreatureSpeed(getCreatureSummons(cid)[1]) == 0 then

    return true

    end

    doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))

    local function tocut(params)

    if isCreature(params.cid) then

    if isCreature(getCreatureSummons(params.cid)[1]) then

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) >= 1 then

    return true

    end

    if getPlayerStorageValue(getCreatureSummons(params.cid)[1], 101) >= 1 then

    return true

    end

    if getDistanceBetween(getThingPos(getCreatureSummons(params.cid)[1]), topos) == 1 then

    doSendMagicEffect(topos, 141)

    doTransformItem(getTileItemById(topos, 2767).uid, 6216)

    exhaustion.set(cid, ecut, cdcut)

    setPlayerStorageValue(getCreatureSummons(params.cid)[1], 101, 1)

    local function detrans(params)

    doTransformItem(getTileItemById(topos, 6216).uid, 2767)

    if isCreature(getCreatureSummons(params.ciddd)[1]) then

    setPlayerStorageValue(getCreatureSummons(params.ciddd)[1], 101, 0)

    end

    end

    addEvent(detrans, 5500, {ciddd = cid})

    doCreatureSay(getCreatureSummons(cid)[1], "CUT!", TALKTYPE_MONSTER)

    local function nmr(params)

    if isCreature(params.cid) then

    if isCreature(getCreatureSummons(params.cid)[1]) then

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then

    doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(params.cid)[1]))

    end

    end

    end

    end

    addEvent(nmr, 400, {cid = cid})

    else

    adire = getDirectionTo(getThingPos(getCreatureSummons(cid)[1]), topos)

    if adire == NORTHWEST then

    if math.random(1,100) >= 51 then

    adire = NORTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), adire), params.ccid, 0, 0) then

    adire = NORTH

    else

    adire = WEST

    end

    else

    adire = WEST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), adire), params.ccid, 0, 0) then

    adire = WEST

    else

    adire = NORTH

    end

    end

    elseif adire == SOUTHWEST then

    if math.random(1,100) >= 51 then

    adire = SOUTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), adire), params.ccid, 0, 0) then

    adire = SOUTH

    else

    adire = WEST

    end

    else

    adire = WEST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), adire), params.ccid, 0, 0) then

    adire = WEST

    else

    adire = SOUTH

    end

    end

    elseif adire == SOUTHEAST then

    if math.random(1,100) >= 51 then

    adire = SOUTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), adire), params.ccid, 0, 0) then

    adire = SOUTH

    else

    adire = EAST

    end

    else

    adire = EAST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), adire), params.ccid, 0, 0) then

    adire = EAST

    else

    adire = SOUTH

    end

    end

    elseif adire == NORTHEAST then

    if math.random(1,100) >= 51 then

    adire = NORTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), adire), params.ccid, 0, 0) then

    adire = NORTH

    else

    adire = EAST

    end

    else

    adire = EAST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), adire), params.ccid, 0, 0) then

    adire = EAST

    else

    adire = NORTH

    end

    end

    end

    local adire = adire

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then

    doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(params.cid)[1]))

    doPushCreature(getCreatureSummons(params.cid)[1], adire, 1, 0)

    doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(params.cid)[1]))

    else

    doPushCreature(getCreatureSummons(params.cid)[1], adire, 1, 0)

    doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(params.cid)[1]))

    end

    end

    end

    end

    end

     

    doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", cut this bush!", 1)

    local speed = getCreatureBaseSpeed(getCreatureSummons(cid)[1])

    temk = 1000 -(2.3 * speed)

    addEvent(tocut, 0, {cid = cid, ccid = getCreatureSummons(cid)[1], topos = topos})

    for i = 1, getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), topos) * 2 do

    addEvent(tocut, temk*i, {cid = cid, ccid = getCreatureSummons(cid)[1], topos = topos})

    end

     

    return true

    end

    end

    -- CUT END

     

    -- DIG

    if isInArray(digholes, item2.itemid) and getPlayerStorageValue(cid, 63215) <= 0 then

    if #getCreatureSummons(cid) == 0 then

    doPlayerSendCancel(cid, "You need a pokemon to use dig.")

    return true

    end

    if not isInArray(dig, getCreatureName(getCreatureSummons(cid)[1])) then

    doPlayerSendCancel(cid, "This pokemon can't use dig.")

    return true

    end

    if isInArray(dig, getCreatureName(getCreatureSummons(cid)[1])) then

    if exhaustion.get(cid, edig) then

    doPlayerSendCancel(cid, "Please wait a few seconds before using dig again!")

    return true

    end

    if getCreatureSpeed(getCreatureSummons(cid)[1]) == 0 then

    return true

    end

    doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))

    local function tocut(params)

    if isCreature(params.cid) then

    if isCreature(getCreatureSummons(params.cid)[1]) then

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) >= 1 then

    return true

    end

    if getPlayerStorageValue(getCreatureSummons(params.cid)[1], 99) >= 1 then

    return true

    end

    if getDistanceBetween(getThingPos(getCreatureSummons(params.cid)[1]), topos) == 1 then

    doSendMagicEffect(topos, 3)

    setPlayerStorageValue(getCreatureSummons(params.cid)[1], 99, 1)

    doTransformItem(getTileItemById(topos, item2.itemid).uid, item2.itemid+1)

    exhaustion.set(cid, edig, cddig)

    local function detrans(params)

    doTransformItem(getTileItemById(topos, item2.itemid+1).uid, item2.itemid)

    if isCreature(getCreatureSummons(params.ciddd)[1]) then

    setPlayerStorageValue(getCreatureSummons(params.ciddd)[1], 99, 0)

    end

    end

    addEvent(detrans, 5500, {ciddd = cid})

    doCreatureSay(getCreatureSummons(cid)[1], "DIG!", TALKTYPE_MONSTER)

    local function nmr(params)

    if isCreature(params.cid) then

    if isCreature(getCreatureSummons(params.cid)[1]) then

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then

    doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(params.cid)[1]))

    end

    end

    end

    end

    addEvent(nmr, 400, {cid = cid})

    else

    local cdire = getDirectionTo(getThingPos(getCreatureSummons(cid)[1]), topos)

    if cdire == NORTHWEST then

    if math.random(1,100) >= 51 then

    cdire = NORTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), cdire), params.ccid, 0, 0) then

    cdire = NORTH

    else

    cdire = WEST

    end

    else

    cdire = WEST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), cdire), params.ccid, 0, 0) then

    cdire = WEST

    else

    cdire = NORTH

    end

    end

    elseif cdire == SOUTHWEST then

    if math.random(1,100) >= 51 then

    cdire = SOUTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), cdire), params.ccid, 0, 0) then

    cdire = SOUTH

    else

    cdire = WEST

    end

    else

    cdire = WEST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), cdire), params.ccid, 0, 0) then

    cdire = WEST

    else

    cdire = SOUTH

    end

    end

    elseif cdire == SOUTHEAST then

    if math.random(1,100) >= 51 then

    cdire = SOUTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), cdire), params.ccid, 0, 0) then

    cdire = SOUTH

    else

    cdire = EAST

    end

    else

    cdire = EAST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), cdire), params.ccid, 0, 0) then

    cdire = EAST

    else

    cdire = SOUTH

    end

    end

    elseif cdire == NORTHEAST then

    if math.random(1,100) >= 51 then

    cdire = NORTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), cdire), params.ccid, 0, 0) then

    cdire = NORTH

    else

    cdire = EAST

    end

    else

    cdire = EAST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), cdire), params.ccid, 0, 0) then

    cdire = EAST

    else

    cdire = NORTH

    end

    end

    end

    local cdire = cdire

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then

    doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(params.cid)[1]))

    doPushCreature(getCreatureSummons(params.cid)[1], cdire, 1, 0)

    doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(params.cid)[1]))

    else

    doPushCreature(getCreatureSummons(params.cid)[1], cdire, 1, 0)

    doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(params.cid)[1]))

    end

    end

    end

    end

    end

     

    doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", open this hole!", 1)

    local speed = getCreatureBaseSpeed(getCreatureSummons(cid)[1])

    temk = 1000 -(2.3 * speed)

    addEvent(tocut, 0, {cid = cid, ccid = getCreatureSummons(cid)[1], topos = topos})

    for i = 1, getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), topos) * 2 do

    addEvent(tocut, temk*i, {cid = cid, ccid = getCreatureSummons(cid)[1], topos = topos})

    end

    return true

    end

    end

    -- DIG END

     

    -- BLINK

    if #getCreatureSummons(cid) == 0 and getPlayerStorageValue(cid, 63215) <= 0 and getPlayerStorageValue(cid, 17000) <= 0 then

    doPlayerSendCancel(cid, "You need a pokemon to use order.")

    return true

    end

    if not isMonster(item2.uid) and getPlayerStorageValue(cid, 63215) <= 0 and getPlayerStorageValue(cid, 17000) <= 0 then

    if isInArray(blink, getCreatureName(getCreatureSummons(cid)[1])) then

    if exhaustion.get(cid, exhaustblink) then

    if getCreatureSpeed(getCreatureSummons(cid)[1]) == 0 then

    doPlayerSendCancel(cid, "You can\'t order your pokemon to move now.")

    return true

    end

    doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", move!", 1)

    doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))

    setPlayerStorageValue(getCreatureSummons(cid)[1], 12, 1)

    local function move(params)

    if isCreature(params.cid) then

    if isCreature(getCreatureSummons(params.cid)[1]) then

    if getPlayerStorageValue(getCreatureSummons(params.cid)[1], 12) == 0 then

    return true

    end

    if getDistanceBetween(getThingPos(getCreatureSummons(params.cid)[1]), topos) == 0 then

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then

    local function speeed(params)

    if isCreature(params.sum) then

    if getCreatureSpeed(params.sum) == 0 then

    doChangeSpeed(params.sum, getCreatureBaseSpeed(params.sum))

    end

    end

    end

    addEvent(speeed, 600, {sum = getCreatureSummons(params.cid)[1]})

    end

    setPlayerStorageValue(getCreatureSummons(params.cid)[1], 12, 0)

    return true

    end

    local edire = getDirectionTo(getThingPos(getCreatureSummons(cid)[1]), params.topos)

    if edire >= 0 and edire <= 7 then

    if edire == NORTHWEST then

    if math.random(1,100) >= 51 then

    edire = NORTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), edire), params.ccid, 0, 0) then

    edire = NORTH

    else

    edire = WEST

    end

    else

    edire = WEST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), edire), params.ccid, 0, 0) then

    edire = WEST

    else

    edire = NORTH

    end

    end

    elseif edire == SOUTHWEST then

    if math.random(1,100) >= 51 then

    edire = SOUTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), edire), params.ccid, 0, 0) then

    edire = SOUTH

    else

    edire = WEST

    end

    else

    edire = WEST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), edire), params.ccid, 0, 0) then

    edire = WEST

    else

    edire = SOUTH

    end

    end

    elseif edire == SOUTHEAST then

    if math.random(1,100) >= 51 then

    edire = SOUTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), edire), params.ccid, 0, 0) then

    edire = SOUTH

    else

    edire = EAST

    end

    else

    edire = EAST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), edire), params.ccid, 0, 0) then

    edire = EAST

    else

    edire = SOUTH

    end

    end

    elseif edire == NORTHEAST then

    if math.random(1,100) >= 51 then

    edire = NORTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), edire), params.ccid, 0, 0) then

    edire = NORTH

    else

    edire = EAST

    end

    else

    edire = EAST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), edire), params.ccid, 0, 0) then

    edire = EAST

    else

    edire = NORTH

    end

    end

    end

    local edire = edire

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then

    doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(params.cid)[1]))

    doPushCreature(getCreatureSummons(params.cid)[1], edire, 1, 0)

    doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(params.cid)[1]))

    else

    doPushCreature(getCreatureSummons(params.cid)[1], edire, 1, 0)

    doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(params.cid)[1]))

    end

    end

    end

    end

    end

     

    local function voltarnormal(params)

    if isCreature(params.cid) then

    if isCreature(getCreatureSummons(params.cid)[1]) then

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then

    local function speeed(params)

    if isCreature(params.sum) then

    doChangeSpeed(params.sum, getCreatureBaseSpeed(params.sum))

    end

    end

    addEvent(speeed, 0, {sum = getCreatureSummons(params.cid)[1]})

    end

    setPlayerStorageValue(getCreatureSummons(params.cid)[1], 12, 0)

    end

    end

    end

     

    local pois = getThingPos(item2.uid)

    local speed = getCreatureBaseSpeed(getCreatureSummons(cid)[1])

    local temk = 1000 -(2.3 * speed)

    local SumPos = getThingPos(getCreatureSummons(cid)[1])

    local travelx = math.abs((topos.x) - (SumPos.x))

    local travely = math.abs((topos.y) - (SumPos.y))

    local travel = ((travelx) + (travely))

    addEvent(move, 0, {cid = cid, ccid = getCreatureSummons(cid)[1], topos = pois, item2 = item2.uid})

    for i = 1, travel do

    addEvent(move, temk*i, {cid = cid, ccid = getCreatureSummons(cid)[1], topos = pois, item2 = item2.uid})

    end

    addEvent(voltarnormal, temk * travel, {cid = cid})

    exhaustion.set(cid, etudao, travel)

    else

    if not isWalkable(topos, cid, 0, 0) then

    doPlayerSendCancel(cid, "Your pokemon cannot teleport there.")

    return true

    end

    if getItemName(item2.uid) == "shallow water" then

    doPlayerSendCancel(cid, "Your pokemon cannot teleport there.")

    return true

    end

    doSendDistanceShoot(getThingPos(getCreatureSummons(cid)[1]), topos, 39)

    doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 211)

    doTeleportThing(getCreatureSummons(cid)[1], topos, false)

    doSendMagicEffect(topos, 134)

    doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", teleport there!", 1)

    doCreatureSay(getCreatureSummons(cid)[1], "BLINK!", TALKTYPE_MONSTER)

    exhaustion.set(cid, exhaustblink, cdblink)

    return true

    end

    return true

    end

    end

    --- BLINK END

     

    -- LIGHT --

    if isCreature(item2.uid) and getCreatureMaster(item2.uid) == cid and getPlayerStorageValue(cid, 63215) <= 0 and getPlayerStorageValue(cid, 17000) <= 0 and item2.uid ~= cid then

    if not isInArray(light, getCreatureName(getCreatureSummons(cid)[1])) then

    doPlayerSendCancel(cid, "This pokemon can't use flash.")

    return true

    end

    if isInArray(light, getCreatureName(getCreatureSummons(cid)[1])) then

    if not isMonster(item2.uid) and getCreatureMaster(item2.uid) ~= cid then

    return doPlayerSendCancel(cid,"Please use flash on your pokemon.")

    end

    if exhaustion.get(cid, exhautStorage) then

    doPlayerSendCancel(cid,"Please wait a few seconds before using flash again!")

    return true

    end

    exhaustion.set(cid, exhautStorage, cd)

    doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", use flash!", 1)

    doCreatureSay(getCreatureSummons(cid)[1], "FLASH!", TALKTYPE_MONSTER)

    doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 28)

    doSetCreatureLight(getCreatureSummons(cid)[1], 8, 215, time*1000)

    return true

    end

    end

    -- LIGHT END --

    if #getCreatureSummons(cid) == 0 then

    return true

    end

    if getCreatureSpeed(getCreatureSummons(cid)[1]) == 0 then

    doPlayerSendCancel(cid, "You can\'t order your pokemon to move now.")

    return true

    end

    if getPlayerStorageValue(getCreatureSummons(cid)[1], 12) == 1 then

    doPlayerSendCancel(cid, "You can\'t order your pokemon to move now.")

    return true

    end

    doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", move!", 1)

    doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))

    setPlayerStorageValue(getCreatureSummons(cid)[1], 12, 1)

    local function move(params)

    if isCreature(params.cid) then

    if isCreature(getCreatureSummons(params.cid)[1]) then

    if getPlayerStorageValue(getCreatureSummons(params.cid)[1], 12) == 0 then

    return true

    end

    if getDistanceBetween(getThingPos(getCreatureSummons(params.cid)[1]), topos) == 0 then

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then

    local function speeed(params)

    if isCreature(params.sum) then

    if getCreatureSpeed(params.sum) == 0 then

    doChangeSpeed(params.sum, getCreatureBaseSpeed(params.sum))

    end

    end

    end

    addEvent(speeed, 600, {sum = getCreatureSummons(params.cid)[1]})

    end

    setPlayerStorageValue(getCreatureSummons(params.cid)[1], 12, 0)

    setPlayerStorageValue(cid, etudao, -1)

    return true

    end

    local dire = getDirectionTo(getThingPos(getCreatureSummons(cid)[1]), params.topos)

    if dire >= 0 and dire <= 7 then

    if dire == NORTHWEST then

    if math.random(1,100) >= 51 then

    dire = NORTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), dire), params.ccid, 0, 0) then

    dire = NORTH

    else

    dire = WEST

    end

    else

    dire = WEST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), dire), params.ccid, 0, 0) then

    dire = WEST

    else

    dire = NORTH

    end

    end

    elseif dire == SOUTHWEST then

    if math.random(1,100) >= 51 then

    dire = SOUTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), dire), params.ccid, 0, 0) then

    dire = SOUTH

    else

    dire = WEST

    end

    else

    dire = WEST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), dire), params.ccid, 0, 0) then

    dire = WEST

    else

    dire = SOUTH

    end

    end

    elseif dire == SOUTHEAST then

    if math.random(1,100) >= 51 then

    dire = SOUTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), dire), params.ccid, 0, 0) then

    dire = SOUTH

    else

    dire = EAST

    end

    else

    dire = EAST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), dire), params.ccid, 0, 0) then

    dire = EAST

    else

    dire = SOUTH

    end

    end

    elseif dire == NORTHEAST then

    if math.random(1,100) >= 51 then

    dire = NORTH

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), dire), params.ccid, 0, 0) then

    dire = NORTH

    else

    dire = EAST

    end

    else

    dire = EAST

    if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), dire), params.ccid, 0, 0) then

    dire = EAST

    else

    dire = NORTH

    end

    end

    end

    local dire = dire

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then

    doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(params.cid)[1]))

    doPushCreature(getCreatureSummons(params.cid)[1], dire, 1, 0)

    doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(params.cid)[1]))

    else

    doPushCreature(getCreatureSummons(params.cid)[1], dire, 1, 0)

    doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(params.cid)[1]))

    end

    end

    end

    end

    end

     

    local function voltarnormal(params)

    if isCreature(params.cid) then

    if isCreature(getCreatureSummons(params.cid)[1]) then

    setPlayerStorageValue(cid, etudao, -1)

    if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then

    local function speeed(params)

    if isCreature(params.sum) then

    if getCreatureSpeed(params.sum) == 0 then

    doChangeSpeed(params.sum, getCreatureBaseSpeed(params.sum))

    end

    end

    end

    addEvent(speeed, 0, {sum = getCreatureSummons(params.cid)[1]})

    end

    setPlayerStorageValue(getCreatureSummons(params.cid)[1], 12, 0)

    end

    end

    end

     

    local pois = getThingPos(item2.uid)

    local speed = getCreatureBaseSpeed(getCreatureSummons(cid)[1])

    local temk = 1000 -(2.3 * speed)

    local SummonPos = getThingPos(getCreatureSummons(cid)[1])

    local travelx = math.abs((topos.x) - (SummonPos.x))

    local travely = math.abs((topos.y) - (SummonPos.y))

    local travel = ((travelx) + (travely))

    addEvent(move, 0, {cid = cid, ccid = getCreatureSummons(cid)[1], topos = pois, item2 = item2.uid})

    for i = 1, travel-1 do

    addEvent(move, temk*i, {cid = cid, ccid = getCreatureSummons(cid)[1], topos = pois, item2 = item2.uid})

    end

    addEvent(voltarnormal, temk*travel, {cid = cid})

    exhaustion.set(cid, etudao, travel)

    return true

    end

  12. Eae Galerinha, é meu Primeiro post no XTibia então sem pisar em mim em ;B

     

    Procurei e não achei um tutorial assim então vou postar pra ajudar os iniciantes ;)

     

    Eu estarei ensinando como se adiciona sprites prontas com formato .idc

     

    Primeira mente você precisara do programa DAT EDITOR

     

    Download :

     

    Pacote de Sprites Prontas Pokemons Johto Feitos Pelo Purple:

    Agora com os 125 pokemons, Corpses, Magias e portraits de todos os johto:

    http://www.4shared.com/file/WWLgCVbT/johtos.html

     

    Dat Editor :

    http://www.multiupload.com/KD9NW6TMF0

     

    Scan Dat Editor: http://www.virustotal.com/file-scan/report.html?id=3c5e94e59df52ef693d12b0543aa66d6f8b0dee89a88bdb1e1cd1ca5d3d13195-1306952621

     

    Novo Scan Pacote de Sprites :http://www.virustotal.com/file-scan/report.html?id=98c2917453f3829817cf36562a34dc627000675528a0ef62f4838cf256584da2-1303932047

     

    Agora vamos começar :D

     

    Depois de baixar o Dat Editor, extraia ele na pasta que você quiser.

     

    Abra o dat editor, Vá em :

     

    File / Open

     

    Procure a pasta do client do seu Server, e nos seus devidos lugares abra o Tibia.dat e Tibia.spr

     

    1.png

     

    Espere carregar e as sprites do seu client irão aparecer

     

    Agora Extraia os pokemons que vocês baixaram , e note que eles estão em formato .idc

     

    Vá no dat editor e clique em :

     

    Import / Import Itens

     

    Vá ate a pasta onde você extraiu os pokemons em formato .idc, segure Ctrl e selecione todos de uma vez

     

    2.png

     

     

    As sprites irão aparecer no Canto esquerdo

     

     

    Agora clique em :

     

    File / Save

     

    Na janelinha clique em Compile

     

    10.png

     

     

    Depois que carregar totalmente

     

    Feixe a janelinha Más não fexe o Dat Editor

     

    Na tabela inferior do Dat Editor tem vários itens, e um deles é o ItemType

     

    4.png

     

    Pegue esse numero do ItemType e grave ou copie.

     

    Abra a pasta do seu Server, clique em :

     

    Data / Monsters / Pokes

     

    Copie Qualquer Arquivo XML

     

    5.png

     

    Renomeie para o nome do Pokemon que esta no Dat Editor

     

    6.png

     

    Abra o arquivo com o bloco de notas.

     

    Mude o nome do Pokemon , e Lá onde está escrito :

     

    Look Type = ...

     

    Mude para o ItemType que esta no dat editor ( que eu falei pra copiar)

     

    7.png

     

    Volte para a pasta :

     

    Data / Monsters

    Abra o arquivo Monsters.xml

     

    Copie qualquer Pokemon, mude o nome para o Pokémon que você criou, e no fim da linha esta escrito o

    nome do Pokemon .xml

     

    8.png

     

    Mude para o nome do arquivo que você criou.

     

     

    9.png

     

     

    Lembrete sempre ponha .xml no fim

     

    Salve tudo, e Abra o seu Server

    Proonto novo Pokémon Adicionado :x

     

    Se você quiser Adicionar os atakes novos dos pokemons fala isso:

     

    Embaixo , lá no xml do pokemon na linha

     

     

    </flags>

    <attacks>

    <attack name="nome da magia (tem que existir no seu server)" interval="tempo que o mosntro usa" chance="chance de usar" range="poder da magia" min="dano minimo use sempre o menos EX: -100" max="dano maximo use sempre o menos EX: -200">

    </attack>

     

    ai vai adicionando as linhas com os novos atakes

     

    se o atake ainda não estiver criado vá na pasta Spells crie um xlm da nova magia, edite o nome, vá no dat editor pegue o item type da magia que você quer (o efeito desejado)

     

    volte, abra o Spells.xml adicione a sua nova magia. depois faça o que eu disse a cima.

     

    crie uma linha no xml do seu pokemon e vá adicionando as magias ^^

     

    use isso para faser os pokemons selvagens '-'

     

    Gentee entra no meu novo tutorial :D, Criando novos itens e corpses com ids proprios

     

    http://www.xtibia.com/forum/topic/158900-criando-novos-id-de-items-e-corpses/page__p__1047720#entry1047720

     

    See te Ajudei Dáa um +Rep Ae pro Okaminha ;B não cai o dedo \õ :smile_positivo:

     

     

    Créditos:

    Psycho Okama < Eoooooo

    E as sprites convertidas pelo < Purple

     

     

    Fuiz \õ/

  • Quem Está Navegando   0 membros estão online

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