Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Fala galera, hoje vim trazer o projeto pronto do Magnus Challenger pra vocês instalarem no servidor de vocês!  :wow: 

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

Mostrar conteúdo oculto


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:

Mostrar conteúdo oculto



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:

Mostrar conteúdo oculto



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

Mostrar conteúdo oculto
 




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

Agora aprendendo a configurar:
 

No tasksystem vc pode editar isso daqui:

  Citar
partycount = true, --- true ou false pra ativar/desativar que os kills dos membros da party contem pra voce
killdistance = 7 --- distancia que conta os kills

 

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:

  Citar
local short = 100 + (math.random(0,6) * 50) -- quantidade de monstros no curto
local median = 500 + (math.random(0,6) * 50) -- quantidade de monstros no mediano
local long = 1000 + (math.random(0,10) * 100) -- quantidade de monstros no longo

 

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.

  Citar
local config = {
levelcollect = 30, --- level pra poder fazer tasks do tipo collect
time = 8 * 60 * 60, --- tempo que vc vai ficar sem poder falar com ele caso abandone uma task (em segundos)
bonus = 1.2, --- bonus de exp/gold caso a task escolhida seja random
multiplicator = 1 --- multiplicador de exp/gold (coloque de acordo com a necessidade do seu server)
}

 

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.

  Citar
local easy = {
[1] = "Goblin",
[2] = "Troll",
[3] = "Rotworm",
[4] = "Dwarf",
[5] = "Amazon",
[6] = "Elf",
[7] = "Wolf",
[8] = "Orc",
[9] = "Minotaur"
}

local medium = {
[1] = "Cyclops",
[2] = "Ghoul",
[3] = "Dragon",
[4] = "Mammoth",
[5] = "Vampire",
[6] = "Fire Devil",
[7] = "Fire Elemental",
[8] = "Valkyrie",
[9] = "Monk"
}

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"
}
 

 

 

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:
 

  Citar

 

 

local eacollect = {
[1] = {id = 5880, count = 20}, -- iron ore
[2] = {id = 5902, count = 15}, -- honeycomb
[3] = {id = 5878, count = 10}, -- minotaur leather
[4] = {id = 5890, count = 20}, -- chicken feather
[5] = {id = 5894, count = 15}, -- bat wing
[6] = {id = 5896, count = 10}, -- bear pawn
[7] = {id = 5897, count = 20}, -- wolf pawn
[8] = {id = 5921, count = 15}, -- heaven blossom
[9] = {id = 3956, count = 10} -- elephant tusk
}

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.

Editado por xWhiteWolf (veja o histórico de edições)

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

  • Respostas 233
  • Visualizações 23.5k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • 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 

  • fico feliz de ter contribuído pro seu projeto de alguma forma.  linha por linha e muito ctrl + c e ctrl + v hahaha pior nem é escrever tudo isso, é dar erro e você não souber aonde que tá e ter

  • oque parece? me manda um print do erro.. é 1.0 né?

Posted Images

Postado

Rep+    :wow:  :palmas:

                                                                                                          6yonKDJ.png    Erik123 Cazo                                                              

                                                                                 Tá subindo, ohyeah!    Se te Ajudei De um   rep_up.png

                                                                                                                   

                   

                                                                                                                     9NjKgih.png

 

 

 

                                                                          Quer ver o que você nunca viu?, simplesmente vá aonde você nunca foi.

 

                                                                                                                        (alguém).

                                                                                 

Postado
  • Autor

não faço idéia mas pela lógica é só trocar as coisas que derem erro de incompatibilidade que vai funcionar.. uma que eu tenho ctza que tem que trocar é

function onKill(cid, target, lastHit)

pra 

function onKill(cid, target)

o resto vai ser o executável do server que vai te dizer hahaha

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.8k

Informação Importante

Confirmação de Termo