Histórico de Curtidas
-
matthgermano deu reputação a xWhiteWolf em Magnus ChallengerFala 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.
-
matthgermano deu reputação a Tricoder em [TFS 1.x] Zombie EventNome: Zombie Event Versão TFS: 1.x Créditos: Printer Preview
http://2.1m.yt/xHhGcL9.png
Características
Quantidade minima e máxima de players e zombies. Começar automaticamente através do Globalevent ou por comando. Se juntar ao evento através do teleport ou do comando. Contagem de zumbis e de mortes. Três troféus com descrição e data. BUGS CORRIGIDOS!
Atenção
Adicione no-logout tool do RME na sala de espera e também na área do evento.
Tutorial
data/creaturescripts/creaturescripts.xml
<!-- Zombie Event --> <event type="preparedeath" name="ZombiePlayerDeath" script="player/zombieEventDeath.lua" /> <event type="death" name="ZombieOnDeath" script="player/zombieEventDeath.lua" /> data/creaturescripts/scripts/zombieEventDeath.lua
function onDeath(monster, corpse, killer, mostDamage, unjustified, mostDamage_unjustified) -- Send text and effect monster:say("I WILL BE BACK!", TALKTYPE_MONSTER_YELL) monster:getPosition():sendMagicEffect(CONST_ME_MORTAREA) -- Remove zombie count, when it dies Game.setStorageValue(ze_zombieCountGlobalStorage, getZombieEventZombieCount() - 1) -- Store player kills local killerId = killer:getId() if zombieKillCount[killerId] ~= nil then zombieKillCount[killerId] = zombieKillCount[killerId] + 1 else zombieKillCount[killerId] = 1 end return true end function onPrepareDeath(player, killer) -- Remove player from count local count = getZombieEventJoinedCount() Game.setStorageValue(ze_joinCountGlobalStorage, count - 1) -- Reset player after death player:teleportTo(player:getTown():getTemplePosition()) player:setStorageValue(ze_joinStorage, 0) player:addHealth(player:getMaxHealth()) player:addMana(player:getMaxMana()) -- Let's reward the 3 last players if count <= 3 then local playerName = player:getName() local trophy = ze_trophiesTable[count] local item = player:addItem(trophy.itemid, 1) if item then item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, string.format("%s %s\n%s.", playerName, trophy.description, os.date("%x"))) end -- Store kill count and remove from table to avoid memory leak local playerId, killCount = player:getId(), 0 if zombieKillCount[playerId] ~= nil then killCount = zombieKillCount[playerId] zombieKillCount[playerId] = nil end -- Broadcast Game.broadcastMessage(string.format("%d place goes to %s of Zombie Event versus %d Zombies and slained %d Zombies.", count, playerName, getZombieEventZombieCount(), killCount)) -- The last player died, let's reset the event if count <= 1 then resetZombieEvent() end end return false end data/movements/movements.xml
<!-- Zombie Event --> <movevent event="StepIn" actionid="7000" script="zombieEventTeleport.lua" /> data/movements/scripts/zombieEventTeleport.lua
data/talkactions/talkactions.xml
<talkaction words="!zombie" separator=" " script="zombieEventCommands.lua" /> data/talkactions/scripts/zombieEventCommands.lua
data/global.lua
dofile('data/zombieEvent.lua') data/zombieEvent.lua
data/monsters/Zombie Event.xml
-
matthgermano recebeu reputação de NathanAmaro em [RE]ComeçoSim, isso foi só um aquecimento. Eu acabei de terminar o mapa e estou fazendo mais alguns.
A minha intenção era disponibilizar um pack. :D
-
matthgermano deu reputação a NathanAmaro em [RE]ComeçoQue demais! Mapping necessita de uma paciência enorme, tá de parabéns. Pretende disponibilizar alguns mapas pra download? Hunts e cidades, se for, disponibiliza na última versão possível pra por no meu projeto uheueh
-
matthgermano recebeu reputação de NathanAmaro em [RE]ComeçoOi, sou novo no fórum e a pouco tempo retornei ao mapping. Eu gostaria de avaliações e no que eu poderia melhorar, uma vez que mapping é uma das coisas que mais me agrada nos OTs.
-
matthgermano deu reputação a WooX em [RE]ComeçoEstá bem legal, só acho que esta tudo muito "quadrado".
-
matthgermano recebeu reputação de Marco Oliveira em [RE]ComeçoOi, sou novo no fórum e a pouco tempo retornei ao mapping. Eu gostaria de avaliações e no que eu poderia melhorar, uma vez que mapping é uma das coisas que mais me agrada nos OTs.
-
matthgermano recebeu reputação de lenardo88 em [RE]ComeçoOi, sou novo no fórum e a pouco tempo retornei ao mapping. Eu gostaria de avaliações e no que eu poderia melhorar, uma vez que mapping é uma das coisas que mais me agrada nos OTs.
-
matthgermano deu reputação a Bruxo Ots em [RE]ComeçoAcho que tu voltou firme e forte ,ficou tesão essa ilha .
-
matthgermano recebeu reputação de Bruxo Ots em [RE]ComeçoOi, sou novo no fórum e a pouco tempo retornei ao mapping. Eu gostaria de avaliações e no que eu poderia melhorar, uma vez que mapping é uma das coisas que mais me agrada nos OTs.