Ir para conteúdo

Sexys

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Sexys recebeu reputação de cleber13 em Unown Legion   
    Vou te Ajudar
     
    Primeiramente, em pokemon moves.lua:
    elseif spell == "Unown Help" then     local config = {         summonPoke = "Unown",         health = 5,                       --% de HP (baseada na HP máxima do pokémon) tirada do Unown Legion.     }     if isSummon(cid) then         local pid = getCreatureMaster(cid)         doSummonMonster(pid, config.summonPoke)         local newPoke = getCreatureSummons(pid)[#getCreatureSummons(pid)]         setPlayerStorageValue(newPoke, 1001, pokes[getCreatureName(newPoke)].offense * getPlayerLevel(pid))         setPlayerStorageValue(newPoke, 1002, pokes[getCreatureName(newPoke)].defense)                      setPlayerStorageValue(newPoke, 1003, pokes[getCreatureName(newPoke)].agility)         setPlayerStorageValue(newPoke, 1004, pokes[getCreatureName(newPoke)].vitality * getPlayerLevel(pid))         setPlayerStorageValue(newPoke, 1005, pokes[getCreatureName(newPoke)].specialattack * getPlayerLevel(pid))         setCreatureMaxHealth(newPoke, getVitality(newPoke) * HPperVITsummon)         doCreatureAddHealth(newPoke, getCreatureMaxHealth(newPoke))         doCreatureAddHealth(cid, -getCreatureMaxHealth(cid) * (config.health / 100))     end elseif spell == "Unown Rush" then     local config = {         distEffect = xxx,            --Distance effect.         effect = xxx,                --Efeito de invisibilidade.         barrierEffect = xxx,         --Effect do Barrier.         barrierTime = 8,             --Duração do Barrier, em segundos.         barrierInterval = 500,       --Intervalo de tempo, em milésimos de segundo, entre cada efeito do Barrier.         times = 4,                   --Quantas vezes a spell em área será "lançada" (também quantas vezes o efeito será "rebatido" entre Unown Legion e os Unowns).         interval = 400,              --Intervalo de tempo entre as "rebatidas", em milésimos de segundo.         intervalAOE = 200,           --Intervalo de tempo entre os "lances" da spell em área.         combat = ghostDmg,           --Elemento da spell.     }     function barrierEffect(cid, time)         if isCreature(cid) then             if time < 0 then                 return true             end             doSendMagicEffect({x = getThingPos(cid).x + 1, y = getThingPos(cid).y + 1, z = getThingPos(cid).z}, config.barrierEffect)             addEvent(barrierEffect, config.barrierInterval, cid, time - 1)         end     end     local summons, t = getCreatureSummons(getCreatureMaster(cid)), {}     doDisapear(cid)     doSendMagicEffect(getThingPos(cid), config.effect)     for i = 1, config.times do         for j = 2, #summons do             if isCreature(summons[j]) and isCreature(cid) then                 t[#t + 1] = summons[j]                 addEvent(function()                     doSendDistanceShoot(getThingPos(cid), getThingPos(summons[j]), config.distEffect)                     addEvent(function()                         doSendDistanceShoot(getThingPos(summons[j]), getThingPos(cid), config.distEffect)                     end, 100)                 end, i * config.interval + 100)             end         end     end     addEvent(function()         barrierEffect(cid, math.floor(config.barrierTime * 1000 / config.barrierInterval))         if isCreature(cid) then             for i = 1, #t do                 if isCreature(t[i]) then                     doRemoveCreature(t[i])                 end             end             for i = 1, config.times do                 addEvent(function()                     if isCreature(cid) then                         local area = getPosfromArea(cid, rushAreaEffect)                         for j = 1, #area do                             doSendDistanceShoot(getThingPos(cid), area[j], config.distEffect)                         end                         doDanoWithProtect(cid, config.combat, getThingPos(cid), rushAreaDamage, -min, -max, 0)                         if i == config.times then                             doAppear(cid)                             setPlayerStorageValue(cid, 9658783, 1)                             addEvent(function()                                 if isCreature(cid) then                                     setPlayerStorageValue(cid, 9658783, -1)                                 end                             end, config.barrierTime * 1000 - (config.times * (config.interval + config.intervalAOE)))                         end                     end                 end, i * config.intervalAOE)             end         end     end, config.times * config.interval + 100 * config.times) Depois, em data/actions/scripts, goback.lua: Acima de: local cd = getCD(item.uid, "blink", 30) coloque:     if #getCreatureSummons(cid) > 1 then         for _, s in pairs(getCreatureSummons(cid)) do             if getCreatureName(s) == "Unown" then                 doRemoveCreature(s)             end         end     end Depois, em data/talkactions/scripts, move1.lua: Abaixo de: if getPlayerStorageValue(mypoke, 93828) > os.time() then     return doPlayerSendCancel(cid, "Your pokemon can't use moves right now.") end coloque:    local unownCount = 7           --Quantidade de Unowns máxima/quantidade de Unowns para usar o Unown Rush.     if move.name == "Unown Help" then         if #getCreatureSummons(cid) >= unownCount + 1 then             return doPlayerSendCancel(cid, "You already have "..unownCount.." Unowns helping you.")         end     elseif move.name == "Unown Rush" then         if #getCreatureSummons(cid) < unownCount + 1 then             return doPlayerSendCancel(cid, "You need "..unownCount.." Unowns helping you to use this spell.")         end     end
  2. Gostei
    Sexys recebeu reputação de rodrigokingh em (Resolvido)[PEDIDO] Máquina de helds   
    nao entedi muito bem mais ta top
     
  3. Gostei
    Sexys deu reputação a zipter98 em (Resolvido)[PEDIDO] Máquina de helds   
    Foi mal pela demora, fiquei sem internet quase o dia todo.
    Em data/XML/channels.xml, você deverá criar canais relativos a cada opção de troca, seguindo o modelo:
    <channel id="ID_do_canal" name="Nome_do_canal"> <vocation id="10"/> </channel> Exemplos:
    <channel id="22" name="20 Devoted Token (Tier 1-2)"> <vocation id="10"/> </channel> <channel id="23" name="70 Mighty Token (Tier 1-3)"> <vocation id="10"/> </channel> Depois, na mesma pasta, vocations.xml:
    <vocation id="10" name="Held Machine" description="a pokemon trainer" needpremium="0" gaincap="0" gainhp="15" gainmana="0" gainhpticks="2" gainhpamount="3" gainmanaticks="0" gainmanaamount="0" manamultiplier="1.1" attackspeed="-1" soulmax="251" gainsoulticks="-1" fromvoc="1"> <formula meleeDamage="0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="1.0" club="1.0" sword="1.0" axe="1.0" distance="1.0" shielding="1.0" fishing="3.0" experience="1.0"/> </vocation> data/actions/scripts, código da máquina de troca:
    function onUse(cid) doPlayerSetVocation(cid, 10) openChannelDialog(cid) return true end data/creaturescripts/scripts:
    local trade_options = { --[channel_id] = {token = {token_itemid, amount}, results = {held_itemid, held_itemid, held_itemid, ...}}, } function onJoinChannel(cid, channelId, users, isTv) local option = trade_options[channelId] if not option then return false end doPlayerSetVocation(cid, 1) if doPlayerRemoveItem(cid, option.token[1], option.token[2]) then local result = option.results[math.random(#option.results)] doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "In trade of "..option.token[2].."x "..getItemNameById(option.token[1])..", you received: "..getItemNameById(result)..".") doPlayerAddItem(cid, result, 1) else doPlayerSendTextMessage(cid, 27, "You do not have "..option.token[2].."x "..getItemNameById(option.token[1])..".") end return false end Configure na tabela trade_options as opções de troca, seguindo o modelo:
    [ID_do_canal] = {token = {ID_do_token, quantidade}, results = {IDs_dos_helds}}, Tag:
    <event type="joinchannel" name="Held_Machine" event="script" value="nome_do_arquivo.lua"/> Em login.lua:
    registerCreatureEvent(cid, "Held_Machine")  
  4. Gostei
    Sexys deu reputação a Wend em [Link Quebrado]Pokémon Dash v6 open source   
    ►Hoje estou trazendo aqui para vocês o download do pokemon dash v6 open source!
     
    ►Lista dos sistemas, lembrando o servidor não contem level system
    v1.0



    v2.0



    v3.0 beta



    v4.0



    v5.0



    v6.0



     
    ► O servidor pode ser desatualizado próximo ao pda porem o Dash v6 é \/



     
    ► Antes de falarem ctrl +c ctrl+v leia \/



     
    ► Download - no download contem client + server + sources !
    http://www.4shared.com/rar/VPIc8EeQba/servidor_pokemon_dash_v6.html? ► uma img para terem noção do que estão baixando



     
    ► Scan

     
    ► Créditos
    Brun123 por ums 92% do servidor Snix ajustou varios bugs no source, e compilou o executavel etc...
  5. Gostei
    Sexys deu reputação a xWhiteWolf em Magnus Challenger   
    Fala galera, hoje vim trazer o projeto pronto do Magnus Challenger pra vocês instalarem no servidor de vocês!   

    Pra quem não conhece é um sistema de Tasks baseado no Zezenia onde você pode escolher entre tasks de matar monstros ou de coletar certos items para o npc Magnus, um guerreiro famoso da cidade que está atolado de tarefas e precisa da sua ajuda!

    Peguei os aspectos que eu julguei serem os principais do modelo do Zezenia e editei com algumas coisas que eu achei que ficariam melhores.
    Quem quiser pode ver um vídeo comentado de como o sistema funciona:




    Dito isso vou ensinar vocês como instalar isso no server:
    Pra começar vá em data\creaturescripts\scripts e procure login.lua, agora vá até o final do arquivo e antes do último return true coloque essas linhas abaixo

    ainda em creaturescripts procure creaturescripts.xml e adicione essa linha junto com as outras que já estão lá (seguindo o padrão)
    <!-- TASK SYSTEM --> <event type="kill" name="tasksystem" script="tasksystem.lua"/> Agora crie um arquivo em creaturescripts\scripts com o nome de tasksystem.lua e adicione o seguinte à ele:




    Terminada a parte da contagem de kill vamos ao NPC em si.
    Crie um arquivo chamado Magnus.xml em data\npc e coloque isso dentro dele:




    Agora em data\npc\scripts crie um arquivo chamado zezeniaa.lua e adicione esse conteúdo dentro do arquivo:





    ~~~~~~~~~~~~~~~~ FEITO ISSO ESTÁ TERMINADO ~~~~~~~~~~~~~~~~~~

    Agora aprendendo a configurar:
     
    No tasksystem vc pode editar isso daqui:
    Eu fiz um sistema onde se vc estiver em party com alguém e a pessoa matar os bixos conta como se você tivesse matado; Assim incentiva o pessoal a ir numa cave de Dragon e ao invés de matar quem está lá pra ficar sozinho na cave, eles vão chamar party pra fazerem a task juntos.. assim fazer amigos fica mais fácil e com maiores laços é maior a chance do povo não abandonar o seu server.

    Apenas digite "true" ou "false" pra ativar/desativar esse sistema e em baixo temos a distancia máxima pro monstro estar do cara que está fazendo a task pra contar o kill. Se a distancia entre o monstro e a pessoa for maior que 7 não vai contar pra ele a kill.


    No zezeniaa.lua as coisas que dão pra configurar são maiores mas são igualmente simples:
    Toda vez que vc pedir uma task short (curta) vc vai ter de 100 a 400 monstros pra matar, ele gera um número de 0 a 6 e multiplica por 5 e soma com os 100 iniciais.. o mesmo vale pra todos os outros valores.

    levelcollect é o level mínimo pra fazer tasks do tipo collect.
    time é o tempo em segundos que você vai ficar sem poder falar com o npc caso desista de alguma task, o padrão é 8 * 60 * 60 (8 horas)
    bonus é por quanto vai multiplicar caso vc permita que o npc escolha aleatoriamente entre todas as opções.. o padrão é 20% de bonus (1.2)
    multiplicador é uma coisa que eu adicionei pra ficar mais fácil mexer na fórmula sem cometer cagadas, se vc tá ganhando 10% de exp e quer ganhar 80% é só colocar 8 no multiplicador.

     
    Isso daqui é o banco de dados principal do sistema de kill, toda vez que vc escolher uma task do tipo fácil, médio, dificil ele vai acessar essas tabelas contendo o nome das criaturas.. vc pode facilmente adicionar novos nomes, o npc já está programado pra lidar com isso, apenas siga o padrão e mantenha sempre o último sem vírgula!

    Ex: adicionando Morgaroth na tabela de hard
    local hard = { [1] = "Giant Spider", [2] = "Dragon Lord", [3] = "Grim Reaper", [4] = "Demon", [5] = "Crystal Spider", [6] = "Demon Skeleton", [7] = "Juggernaut", [8] = "Destroyer", [9] = "Hand of Cursed Fate", [10] = "Morgaroth" } atente-se também pra não repetir o número no index.. se o anterior era [9] use [10].

    O restante das tabelas são separadas para o banco de dados das tasks de collect:
     
    segue a mesma lógica da de kill só que aqui você tem o id dos itens que serão usados... aquela count não tem nada a ver com o item pois ele vai gerar tanto o item aleatoriamente quanto à count;
    Ex: 
    [1] = {id = 5880, count = 20}, -- iron ore isso não significa que se cair iron ore (id 5880) irá cair sempre 20.. até porque eu poderia escolher uma task long e easy e pegar a task de trazer até 50 iron ores, apenas tente manter os padrões que são os intervalos definidos.
    No easy ele varia de 10 a 20, no medium ele varia de 20 a 35 e no hard de 40 a 50.



    Espero que vocês tenham curtido, é um sistema grande mas bem simples de se mexer... se tiverem quaisquer problemas podem comentar aqui. Deu trabalho fazer isso então se você gostou deixe o seu comentário aí e o seu "Gostei" que vai me incentivar a trazer mais coisas desse tipo pra cá. Abraços do lobo.


    PS: Pra sumonar o npc digite com o GOD: /n Magnus ou coloque ele pelo map editor.
  6. Gostei
    Sexys deu reputação a xWhiteWolf em Magnus Challenger   
    vc precisa achar a função que removeItem no 1.0, parece que tiraram ela em 1.0 e substituiram por outra.. o mesmo vale pra onCreatureSay 
  7. Gostei
    Sexys deu reputação a Waldragon em [Tutorial] Como trocar o ip do OT CLIENT   
    Fala ae galerinha na paz? Espero que sim .. Vejo que muitas pessoas tem duvidas
    De como trocar o ip do OT CLIENT , então estou trazendo esse tutorial para vocês..
    Passo a passo...
     
    1°  Primeiramente abra a pasta do seu servidor e click em Config.lua .
     
    2°  Depois aperte ctrl+F  e localize a palavra ip  .
     
    3°  Aperte Enter umas 5 vezes, em seguida vai localizar ip = "aqui vai esta algum IP"
         Ai e só substitui o IP que estava em " " pelo seu IP...
     
    Agora a parte do OT CLIENT
     
    1°  Abra a pasta do seu Ot Client , vá em modules/client_entergame.
     
    2°  Agora abra o arquivo entergame.lua .
          Em seguida aperte ctrl+F e escreva em localizar 7171 .
     
    3°  Agora aperte duas vezes Enter que vai localizar essa frase...
          EnterGame.setUniqueServer('Aqui vai esta algum IP', 7171, 854, 270, 210)
         Ai e só você trocar esse IP que estava ali pelo IP que você colocou no config.lua..
     
    Espero ter ajudado ....

Informação Importante

Confirmação de Termo