Ir para conteúdo

brufds

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    brufds 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.
  2. Gostei
    brufds deu reputação a Wakon em (Resolvido)UTEVO MORT SCRIPT   
    Vai na tag da spell em "Data/spells" e no arquivo spells.xml, remova:
    casterTargetOrDirection="1" E adicione:
    needtarget="1" Exemplo:
    <instant name="Utevo Mort" words="utevo mort" lvl="16" mana="20" prem="1" range="6" needtarget="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/summon.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="5"/> <vocation id="6"/> </instant> Fiz algumas alterações no script, não é necessário trocar pelo meu, troque apenas se lhe agradar:
    function onTargetTile(cid, position) position.stackpos = 255 doConvinceCreature(cid, doCreateMonster("headcaptor", position, false)) doSendMagicEffect(position, CONST_ME_MAGIC_BLUE) return true end local arr = { {1, 0, 1}, {0, 2, 0}, {1, 0, 1}, } local removeTime = 1.0 --time to remove the clones local function removeCreatures(cid, creature) if isCreature(creature) == TRUE then doRemoveCreature(creature) end end function onTargetTile(cid, pos) local creature = doSummonCreature("headcaptor", pos) doCreatureAddMana(cid, -600) doCreatureSay(creature, "Utevo Mort!!", TALKTYPE_ORANGE_1) doConvinceCreature(cid, creature) addEvent(removeCreatures, removeTime * 1000, cid, creature) return true end local area, combat = createCombatArea(arr), createCombatObject() setCombatArea(combat, area) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile") function onCastSpell(cid, var) if #getCreatureSummons(cid) <= 0 then return doCombat(cid, combat, var) else return doPlayerSendCancel(cid, "You can't summon more creatures.") end return false end
  3. Gostei
    brufds deu reputação a Tricoder em (Resolvido)ERRO NO DISTRO   
    Vá no seu PHPMyAdmin, entre na sua database, clique no simbolo do SQL

    Execute isso:
    SET GLOBAL max_allowed_packet = 16776192; Clique em "run" ou "ok".
  4. Gostei
    brufds deu reputação a Vodkart em (Resolvido)AJUDA EM SCRIPT GUILDS   
    executa no seu banco de dados:
     

    ALTER TABLE `guilds` ADD `frags` INT(11) NOT NULL DEFAULT 0; ALTER TABLE `guilds` ADD `acesstime` INT(15) NOT NULL DEFAULT 0;
  5. Gostei
    brufds deu reputação a Pedro. em (Resolvido)BUG EM SCRIPT   
    no seu config.lua o worldid tá qto? 
  6. Gostei
    brufds deu reputação a zipter98 em (Resolvido)BUG EM SCRIPT DE AURA SYSTEM   
    local config = { [9] = 35; -- [VOCATION] = CORES; [10] = 66; [11] = 144; [12] = 205; } function effectText(cid) local texts, eff = "´ . ," for vocation, color in pairs(config) do if getPlayerVocation(cid) == vocation then eff = color break end end if eff then doSendAnimatedText(getThingPos(cid), texts, eff) addEvent(function() if isPlayer(cid) then effectText(cid) end end, 1000) end end function onLogin(cid) effectText(cid) return true end

Informação Importante

Confirmação de Termo