Jump to content

Criando Quest


Allan Alcantara

Recommended Posts

Bom ... resolvi postar um tutorial de como criar quest, já está na hora de ajudar as pessoas que me ajudaram... E acho que vai ser bastante útil para todos aqueles que começam a fazer servidores e mecher em java.

então ... chega de falar então vamos ao tutorial ... laugh.gif

[ VI BASTANTE GENTE ATRAZ DISSO .. JÁ TINHA FEITO O TUTORIAL E POSTADO EM OUTRO LOCAL, MAS AGORA ESTOU POSTANDO AQUI ... ]


já faz bastante tempo que não posto nada, então vim aqui ajudar MUITA GENTE COM ESSE PROBLEMA. ^^

Criando Quest e Suas Funções:

A primeira coisa a fazer é adicionar as classes Java necessárias na busca. ex:(com.l2jdemonniac.gameserver.model.quest).

# Quest Search Created Mr. by allanalcantara

import sys

from com.l2jdemonniac.gameserver.model.quest import State

from com.l2jdemonniac.gameserver.model.quest import QuestState

from com.l2jdemonniac.gameserver.model.quest.jython import QuestJython as JQuest

Class QuestJython --> (importado sob o nome JQuest) contém informações sobre as buscas.
Class State --> usou isso para descrever o estado da quest.
Class QuestState --> aplicado diretamente para controlar o status de um jogador na missão ou quest.


Em seguida, adicione algumas constantes que vai fazer a busca mais fácil de ler. Se não, pode haver dificuldades com a edição a busca no futuro.
Constantes de nossa busca - NPC ID e itens.

KELTIR_NPC_ID = 12082

FANGS_ITEM_ID = 1859

DROP_RATE = 500000

WORLD_MAP_ITEM_ID = 1665

Em seguida, declarar uma função auxiliar.
Função do número de itens de quest (keltir presas) jogador. (St deve ser QuestState):

getCount def (r):

st.getQuestItemsCount return (FANGS_ITEM_ID)

--> Função para completar a quest (r deve ser QuestState):



def COMPLETED (r):

st.setState (COMPLETED)

st.clearQuestDrops ()

st.takeItems (FANGS_ITEM_ID, -1)

st.giveItems (WORLD_MAP_ITEM_ID, 1)

st.exitQuest (False)

return

Em seguida,ao declarar COMPLETED, tiramos todos os itens que ele juntou do jogador e dar-lhe uma recompensa. Em seguida, informa o servidor que a busca está concluída e não serão repetidas. (St.exitQuest (False))
Finalmente, a função auxiliar para verificar o número de itens no jogador para completar a quest. (St deve ser QuestState):

check def (r):

se 4 = getCount (r)>:

COMPLETED (r)

return

]Em seguida, declarar-se a própria busca class. Quest - a classe do python, que estende a classe java no com.l2jdemonniac.gameserver.model.quest.jython.QuestJyth Então, nós declaramos um onEvent, o método que é chamado java, se alguém começou a busca.

classe Quest (JQuest):



def __init__ (self, id, name descr): (descr self, name, id) JQuest.__init__



onEvent def (event, self, r):

st.getState id = ()

se id == created: st.setState (started)

elif id == COMPLETED: pass

elif id == STARTED: check (r)

return

O método init - para este construtor da classe Jython que chama a classe Java. Tem os seguintes parâmetros:

• self - uma referência a si mesmo.
• ID - um identificador numérico da busca para o cliente.
• name - O nome da quest, que será emitida diretamente do próprio servidor.
• descr - o nome da descrição de busca que é exibida para o jogador quando a busca tem um NPC, para que possamos tomar, mas essa busca, e ainda outra.

 


OnEvent o método é chamado de Java. Executa início a busca. Tem os seguintes parâmetros:

• self - link diretamente para a Quest Tutorial
• event - a seqüência de caracteres para identificar o evento de abertura para Java.
• ST - uma referência ao QuestState, para acompanhar o estado atual do jogador.

 


A primeira linha é uma verificação sobre o estado atual da busca diretamente para o jogador eo estado de lavada em 'id' uma variável.
Se a busca só é tomada, então anuncia o início da busca (se id == created em: st.setState (started)).
Se a busca é feita, então faça nada elif id == COMPLETED: pass)
Se a quest já começou (started), então chama a função check (check (), definido acima) dos itens que têm caráter para completar a quest. Nós não verificamos "evento" a variável, porque No nosso exemplo (quest Tutorial) são para todos os eventos que ocorrem. O Método é chamado de (OnEvent).


E finalmente, quando o esqueleto é determinada na quest, estamos a criar a busca em si (e defini-lo no servidor) e declará-lo.

QUEST = Quest (201, "Tutorial", "Search Tutorial")

CREATED = State ("Start" QUEST)

STARTED = State ('Introduction', QUEST)

COMPLETED State = ('Completed' Quest)

Quest vai ter um ID de cliente - 201 ID «Tutorial» e descrição «busca Tutorial».


Também terá três estados: created, started, completed. Os nomes dos estados pode ser usado para localizar automaticamente o necessário. HTM.

Por exemplo, para CRIADOR vai corresponder "Start.htm", por PASSOS - "Started.htm e será mostrado 'Completed.htm" CONCLUÍDO. Os nomes dos estados usado da mesma forma para armazenar o estado da busca no banco de dados, quando um jogador sai do jogo, para que os nomes não devem ser repetidos na mesma busca.

Precisamos também determinar o estado inicial da busca, quando um jogador levou apenas, e só a partir do NPC.


QUEST.setInitialState (created)

QUEST.addStartNpc (7056)

Aviso: no inicio do htm ao NPC tem que ser uma referência para a busca:

<a action="bypass npc_%objectId%_Quest"> -h

Agora você precisa adicionar um goto(ir) para esta busca por estado STARTED, por que iria ficar nas coisas necessárias.

STARTED.addQuestDrop (KELTIR_NPC_ID, FANGS_ITEM_ID, DROP_RATE)

Esta quest terá nada mais. Tudo que você necessita para funcionar correctamente a busca já foi adicionado. Aqui está o texto integral da busca:

import sys

from com.l2jdemonniac.gameserver.model.quest State

from com.l2jdemonniac.gameserver.model.quest QuestState

from com.l2jdemonniac.gameserver.model.quest.jython QuestJython as JQuest



KELTIR_NPC_ID = 12082

FANGS_ITEM_ID = 1859

DROP_RATE = 500000

WORLD_MAP_ITEM_ID = 1665





getCount def (r):

st.getQuestItemsCount retur (FANGS_ITEM_ID)



def completed (r):

st.setState (completed)

st.clearQuestDrops ()

st.takeItems (FANGS_ITEM_ID, -1)

st.giveItems (WORLD_MAP_ITEM_ID, 1)

st.exitQuest (false)

return



check def (r):

se 4 = getCount (r)>:

completed (r)

return



class Quest (JQuest):



def __init__ (self, id, name descr): (descr self, name, id) JQuest.__init__



onEvent def (event, self, r):

st.getState id = ()

se id == created: st.setState (started)

elif id == COMPLETED: pass

elif id == STARTED: check (r)

return



QUEST = Quest (201, "Tutorial", "busca Tutorial")

CREATED = State ("Start" QUEST)

STARTED = State ('Introduction', QUEST)

COMPLETED State = ('Completed' Quest)



QUEST.setInitialState (created)

QUEST.addStartNpc (7056)



STARTED.addQuestDrop (KELTIR_NPC_ID, FANGS_ITEM_ID, DROP_RATE)

Agora olha como ele funciona.

O jogador vem para o NPC inicial (neste caso, 7056), clique em "Quest". Quest será criado e do estado da quest irá prosseguir para criado eo jogador será apresentado ao Start.htm página com uma descrição da quest. Em seguida, o método onEvent, a caixa Start.htm abrira uma página de abertura traduzida em busca de status e INICIADOS, o jogador será apresentado com uma pagina Started.htm, onde será optado a como encontrar e keltirs. Etc.
Se o estado STARTED será registado as «presas», keltirs cair matando. O jogador pode voltar para o NPC de partida e perguntar sobre a quest - onEvent método será chamado novamente. Se um jogador não tem o número necessário de itens, o método de seleção () não traduz a busca para o próximo estado e Started.htm será mostrada novamente. Mas se um jogador tiver o número necessário de indivíduos (neste caso, 4 itens), a verificação do método () chama a conclusão () vai traduzir a busca de um novo estado preenchido, tirar todos os caninos, dará o mapa do mundo, porque uma recompensa para a busca, vai Completed.htm e completar a quest.
Agora vamos fazer a nossa busca mais parecido com o que deveria, por si só fornecer.
Primeiro de tudo, temos 3 métodos para declará-las em Java - onKill onTalk e onEvent. Se os métodos e onKill onTalk não declarados, em seguida, todos eles vão fazer o onEvent método, ou seja, identificar monstros busca e desencadear conversas NPC. Há uma nota, os métodos e onKill onTalk fará apenas com diálogos NPC, dependendo do estado atual da busca. OnKill método será invocado apenas quando matar um monstro quest.



Vamos ver como o método que é chamado com o keltir onKill assassinato capaz de buscar INICIADOS:

STARTED.addKillId (KELTIR_NPC_ID)

e do método na classe onKill Quest:

class Quest (JQuest):

onKill def (self, r, NPCID):

se NPCID == KELTIR_NPC_ID:

n = getCount (r)

se n == 0:

return "Chat0.htm"

elif n == 1:

return "Chat1.htm"

elif n> = 4:

return "Chat4.htm"

return "Collected" + str (n) + "de 4 dentes"

return

Método onKill (assim como um método onTalk) tem as seguintes opções:

• self - a busca
• NPCID - ID NPC, que nós temos que matar (se ele é um método onTalk, então o ID do NPC, com quem devemos falar).
• ST - o estado atual do jogador.

 


Neste método, verificar e observar se os mortos keltir'om NPC. Basicamente, este teste não é necessária porque Temos apenas KELTIR_NPC_ID.
Em seguida, verifique o número de objetos (neste caso, o número de caninos) e, se não o fizerem, em seguida, retornar a string "Chat0.htm", se apenas um item, em seguida, retornar a string "Chat1.htm", se os mesmos itens 4 ou mais ", Chat4.htm ". Se a string retornada dos métodos onEvent onKill ou onTalk, em seguida, o servidor htm será relevantes. Em Chat0.htm pode ter o seguinte texto: "Você não tem uma única presa, volte mais tarde, quando coletar 4 partes e blá, blá, blá ..." no Chat1.htm pode ser o seguinte texto: "Você tem apenas uma presa em recolher essa ainda .... " Em Chat4.htm - "Você tem o número necessário de itens, volte ao seu treinador que iria completar a quest ..."

Nota: Se uma linha começa com o return ", ele irá mostrar a página html com o texto que vale mais. Então, em vez de:

return "Chat4.htm"

pode ser fornecido:

return "<html> <body> Volte para o seu treinador para completar a quest </ body> </ html>"

Além disso, se a string termina sem Htm. Ou no começo lá, o texto será exibido como um sistema de mensagem na janela de chat. No nosso caso, vamos fazê-lo, isso seria para cada assassinato keltik mensagens do sistema: "N coletados a partir dos 4 dentes".
Nosso código para onKill tem uma desvantagem. Ele vai mostrar constantemente Chat0.htm, Chat1.htm e Chat4.htm, também precisamos que Chat0.htm e Chat1.htm aparecer apenas uma vez. Como vamos fazer? Com a ajuda de variáveis.
Em cada linha de busca podem ser armazenados usando variáveis. Essas variáveis ?? são armazenadas no seu banco de dados. Em cada método, podemos definir, ler e excluir variáveis. Vamos mudar método do onKill , para que o diálogo seja chamado apenas uma vez.


onKill def (self, r, NPCID):

if NPCID == KELTIR_NPC_ID:

n = getCount (r)

if n == 0:

None if st.get == ("chat0 '):

st.set ("chat0", "true")

return "Chat0.htm"

elif n == 1:

None if st.get == ("chat1 '):

st.set ("chat1", "true")

return "Chat1.htm"

elif n> = 4:

return "Chat4.htm"

return "Collected" + str (n) + "de 4 dentes"

return

Se o jogador não tem dentes (n = 0), então nós começamos com variável 'chat0. Quando o método onKill é chamado pela primeira vez, ainda não é o que as variáveis ?? não estão disponíveis e nenhum retorno python. Neste caso, declarar uma variável e mostra diálogo de uma (Chat0.htm) . Quando matamos keltir, mas não saia sua presa, o st.get função ('chat0') retorna a seqüência True, mas não if. E o segundo tempo da janela Chat0.htm não aparece, mas na janela do chat irá linha «Collected 0 de 4 dentes». Seguindo o mesmo princípio é feito com Chat1.htm.


Aqui está a versão final do trabalho da busca:

import sys

from com.l2jdemonniac.gameserver.model.quest import State

from com.l2jdemonniac.gameserver.model.quest import QuestState

from com.l2jdemonniac.gameserver.model.quest.jython import QuestJython as JQuest



KELTIR_NPC_ID = 12082

FANGS_ITEM_ID = 1859

DROP_RATE = 500000

WORLD_MAP_ITEM_ID = 1665





def __init__ (self, id, name descr): JQuest.__init__(descr, self, name, id)



getCount def (r):

st.getQuestItemsCount retur (FANGS_ITEM_ID)



def completed (r):

st.setState (completed)

st.clearQuestDrops ()

st.takeItems (FANGS_ITEM_ID, -1)

st.giveItems (WORLD_MAP_ITEM_ID, 1)

st.exitQuest (false)

return



check def (r):

se 4 = getCount (r)>:

completed (r)

return



class Quest (JQuest):







onEvent def (event, self, r):

st.getState id = ()

se id == created: st.setState (started)

elif id == COMPLETED: pass

elif id == STARTED: check (r)

return "1.htm"



QUEST = Quest(201, "Tutorial" , "Busca Tutorial")

CREATED = State('Start', QUEST)



QUEST.setInitialState(CREATED)



for npc in NPCS:

QUEST.addStartNpc(npc)

QUEST.addTalkId(npc)

PRONTO!
então é isso ...
Acho que fiz tudo certo ...
então se tiver faltando algo, e quem poder me corriga!

Abraço forte.
em breve mais tutoriais, e mais mods.



Quest Generator


Olá Galera, vim aqui postar pra vocês um novo Sistema de Criação de Quest, ele é totalmente Feito no Delphi e Facil de manosear, então fiquem a vontade, Caso tenha duvidas de como utilizar o programa, leia as Funções de como criar Quest Acima..

Imagens

SS1:

allan1o.jpg


SS2:
allan2.jpg

Download do Programa:
Clique aqui

Créditos pelo Sistema:
LightofLine



AVISO: Teste feito como Base no meu Projeto na Quest e Na criação do tutorial..


credits allanalcantara

ATENÇÃO: Caso alguem poste em outro Fórum não remova os créditos ...
são totalmente meus. Obrigado


- copiei aqui então se houver problemas, só mandar um MP que eu corrigo... abraços.

 

Edited by Allan Alcantara
  • Like 10

Olá, Seja muito bem vindo, Tenho um Canal no Youtube, relacionado a Tutoriais e Dicas sobre Lineage e tudo mais. Há bastante video sobre o Game, você pode aprender bastante.. Caso tenha uma dúvida de como fazer algo, envie um direct pra mim e eu farei o vídeo!

[Link]  youtube.com/allaanz1n
[Skype] allan.deh

 

Link to comment
Share on other sites


Good Job minha nega *-*

 

Realmente vai ajudar bastante .

 

rsrs, sempre ajudando os necessitados, ajudando até demais por sinal né. kkk enfim ..

 

até que merecia fixo ein! ><'

Olá, Seja muito bem vindo, Tenho um Canal no Youtube, relacionado a Tutoriais e Dicas sobre Lineage e tudo mais. Há bastante video sobre o Game, você pode aprender bastante.. Caso tenha uma dúvida de como fazer algo, envie um direct pra mim e eu farei o vídeo!

[Link]  youtube.com/allaanz1n
[Skype] allan.deh

 

Link to comment
Share on other sites

Muito bom Allan, um dia eu sento pra aprender java. ^^

Mas mesmo pra mim que nunca trabalhei com java consegui entender o tuto, muito bem explicado.

 

Abraço!

 

 

 

Link to comment
Share on other sites

valeu amigo, estou sempre a dispor. ^^"

 

precisar estamos ae. :D

Olá, Seja muito bem vindo, Tenho um Canal no Youtube, relacionado a Tutoriais e Dicas sobre Lineage e tudo mais. Há bastante video sobre o Game, você pode aprender bastante.. Caso tenha uma dúvida de como fazer algo, envie um direct pra mim e eu farei o vídeo!

[Link]  youtube.com/allaanz1n
[Skype] allan.deh

 

Link to comment
Share on other sites

Bom Galera vim aqui Avisar, que tem agora um novo programa pra criar quest, prontinho pra vocês! :D

ele foi feito no Delphi então, fica o critério de vocês.

 

estarei postando SS aqui logo logo, só upar o programa e as demais, pra facilitar a criação das Quest

agora ficou mais facil, então deixarei para Download pra vocês. abraços.

 

 

SS 1:

allan1o.jpg

 

 

SS 2:

allan2.jpg

Edited by Allan Alcantara

Olá, Seja muito bem vindo, Tenho um Canal no Youtube, relacionado a Tutoriais e Dicas sobre Lineage e tudo mais. Há bastante video sobre o Game, você pode aprender bastante.. Caso tenha uma dúvida de como fazer algo, envie um direct pra mim e eu farei o vídeo!

[Link]  youtube.com/allaanz1n
[Skype] allan.deh

 

Link to comment
Share on other sites

Muuuuuuuuito bom minha nega ♥

Eu tava usando outro programinha aqui ( um russo )

vamo ver do que esse brinquedinho aí é capaz (:

Caso tenha alguma sugestão para aplicativos, por favor envie por MP.

 WhatsApp BR: 22 98156-2591 

 WhatsApp US: +1 (240) 283-7709 

L2JDream Project

Link to comment
Share on other sites

Muuuuuuuuito bom minha nega ♥

Eu tava usando outro programinha aqui ( um russo )

vamo ver do que esse brinquedinho aí é capaz (:

 

aeauheauheuahea

 

 

vaaaaaamos faça todos os Testes possiveis, meu querido! :D *-* ;]

Olá, Seja muito bem vindo, Tenho um Canal no Youtube, relacionado a Tutoriais e Dicas sobre Lineage e tudo mais. Há bastante video sobre o Game, você pode aprender bastante.. Caso tenha uma dúvida de como fazer algo, envie um direct pra mim e eu farei o vídeo!

[Link]  youtube.com/allaanz1n
[Skype] allan.deh

 

Link to comment
Share on other sites

Massa mais seguinte explica ai cada função... Tipo Quest Item Reward Info etc...

 

Obs : eu sei viu ^^ so pra quem não sabe creio que tem gente que vai ter duvida nisso.

Convido a todos para conheçer um servidor diferenciado,inaugurado dia 26-03! clique no banner abaixo

 

cojPkeB.gif

 

Link to comment
Share on other sites

no de cima da pra tirar no que tem abaixo, então é facil. rsrs

mas se alguem tiver dificuldade só falar, que eu faço.

Olá, Seja muito bem vindo, Tenho um Canal no Youtube, relacionado a Tutoriais e Dicas sobre Lineage e tudo mais. Há bastante video sobre o Game, você pode aprender bastante.. Caso tenha uma dúvida de como fazer algo, envie um direct pra mim e eu farei o vídeo!

[Link]  youtube.com/allaanz1n
[Skype] allan.deh

 

Link to comment
Share on other sites

  • 3 months later...
  • 2 weeks later...
  • 1 month later...
  • 3 months later...

este gerador de quest funciona em H5 ?

gostaria de fazer uma quest p criar meu proprio npc buffer

obrigado pela atençao

lml

 

forte abraço

Tem foda que é foda...

 

Lucas Dresch

Desenvolvimento de Jogos Digitais  Unity e L2J

Link to comment
Share on other sites

tem como você especificar "Quest Path". O que seguinifica? tipo eu coloco como se fosse o nome da quest mais da erro!

 

allan1o.jpg

é o lugar onde você vai salvar.

Olá, Seja muito bem vindo, Tenho um Canal no Youtube, relacionado a Tutoriais e Dicas sobre Lineage e tudo mais. Há bastante video sobre o Game, você pode aprender bastante.. Caso tenha uma dúvida de como fazer algo, envie um direct pra mim e eu farei o vídeo!

[Link]  youtube.com/allaanz1n
[Skype] allan.deh

 

Link to comment
Share on other sites

  • 1 year later...

é o lugar onde você vai salvar.

 

gostei do brinquedo baixando aqui

pra ajuda mais ainda tem como postar um video usando o programa faz uma quest simples

so no Ctrl+c Ctrl+v pra da um plus

obrigado pela ajuda

ate breve com VÍDEO ^^

 

ops baixei mas como instalo ^^

vó espera o vídeo tutorial

abraços.

Edited by neigodoi

VIVENDO E APRENDENDO SEMPRE COM PRAZER

Link to comment
Share on other sites

  • 1 month later...
  • 6 months later...

mano nao to vendo a 1 print alguem filho de jesus arruma ai pfv

oq coloco no localhost

como arruma setup pfv

 

alguem ai q tenha conseguido me ajuda.


não intendi o começo help....

 

 

eu tbm NÃO lol


 

 

Bom ... resolvi postar um tutorial de como criar quest, já está na hora de ajudar as pessoas que me ajudaram... E acho que vai ser bastante útil para todos aqueles que começam a fazer servidores e mecher em java.

então ... chega de falar então vamos ao tutorial ... laugh.gif

[ VI BASTANTE GENTE ATRAZ DISSO .. JÁ TINHA FEITO O TUTORIAL E POSTADO EM OUTRO LOCAL, MAS AGORA ESTOU POSTANDO AQUI ... ]


já faz bastante tempo que não posto nada, então vim aqui ajudar MUITA GENTE COM ESSE PROBLEMA. ^^

Criando Quest e Suas Funções:

A primeira coisa a fazer é adicionar as classes Java necessárias na busca. ex:(com.l2jdemonniac.gameserver.model.quest).

# Quest Search Created Mr. by allanalcantara
import sys
from com.l2jdemonniac.gameserver.model.quest import State
from com.l2jdemonniac.gameserver.model.quest import QuestState
from com.l2jdemonniac.gameserver.model.quest.jython import QuestJython as JQuest


Em seguida, adicione algumas constantes que vai fazer a busca mais fácil de ler. Se não, pode haver dificuldades com a edição a busca no futuro.
Constantes de nossa busca - NPC ID e itens.


KELTIR_NPC_ID = 12082
FANGS_ITEM_ID = 1859
DROP_RATE = 500000
WORLD_MAP_ITEM_ID = 1665

Em seguida, declarar uma função auxiliar.
Função do número de itens de quest (keltir presas) jogador. (St deve ser QuestState):

getCount def (r):
  st.getQuestItemsCount return (FANGS_ITEM_ID)



def COMPLETED (r):
  st.setState (COMPLETED)
  st.clearQuestDrops ()
  st.takeItems (FANGS_ITEM_ID, -1)
  st.giveItems (WORLD_MAP_ITEM_ID, 1)
  st.exitQuest (False)
  return

Em seguida,ao declarar COMPLETED, tiramos todos os itens que ele juntou do jogador e dar-lhe uma recompensa. Em seguida, informa o servidor que a busca está concluída e não serão repetidas. (St.exitQuest (False))
Finalmente, a função auxiliar para verificar o número de itens no jogador para completar a quest. (St deve ser QuestState):


check def (r):
  se 4 = getCount (r)>:
	COMPLETED (r)
  return
]Em seguida, declarar-se a própria busca class. Quest - a classe do python, que estende a classe java no com.l2jdemonniac.gameserver.model.quest.jython.QuestJyth Então, nós declaramos um onEvent, o método que é chamado java, se alguém começou a busca.

classe Quest (JQuest):

  def __init__ (self, id, name descr): (descr self, name, id) JQuest.__init__

  onEvent def (event, self, r):
	st.getState id = ()
	se id == created: st.setState (started)
	elif id == COMPLETED: pass
	elif id == STARTED: check (r)
	return







E finalmente, quando o esqueleto é determinada na quest, estamos a criar a busca em si (e defini-lo no servidor) e declará-lo.


QUEST = Quest (201, "Tutorial", "Search Tutorial")
CREATED = State ("Start" QUEST)
STARTED = State ('Introduction', QUEST)
COMPLETED State = ('Completed' Quest)


Também terá três estados: created, started, completed. Os nomes dos estados pode ser usado para localizar automaticamente o necessário. HTM.

Por exemplo, para CRIADOR vai corresponder "Start.htm", por PASSOS - "Started.htm e será mostrado 'Completed.htm" CONCLUÍDO. Os nomes dos estados usado da mesma forma para armazenar o estado da busca no banco de dados, quando um jogador sai do jogo, para que os nomes não devem ser repetidos na mesma busca.

Precisamos também determinar o estado inicial da busca, quando um jogador levou apenas, e só a partir do NPC.



QUEST.setInitialState (created)
QUEST.addStartNpc (7056)
Aviso: no inicio do htm ao NPC tem que ser uma referência para a busca:


<a action="bypass npc_%objectId%_Quest"> -h
Agora você precisa adicionar um goto(ir) para esta busca por estado STARTED, por que iria ficar nas coisas necessárias.

STARTED.addQuestDrop (KELTIR_NPC_ID, FANGS_ITEM_ID, DROP_RATE)
Esta quest terá nada mais. Tudo que você necessita para funcionar correctamente a busca já foi adicionado. Aqui está o texto integral da busca:

import sys
from com.l2jdemonniac.gameserver.model.quest State
from com.l2jdemonniac.gameserver.model.quest QuestState
from com.l2jdemonniac.gameserver.model.quest.jython QuestJython as JQuest

KELTIR_NPC_ID = 12082
FANGS_ITEM_ID = 1859
DROP_RATE = 500000
WORLD_MAP_ITEM_ID = 1665


getCount def (r):
  st.getQuestItemsCount retur (FANGS_ITEM_ID)

def completed (r):
  st.setState (completed)
  st.clearQuestDrops ()
  st.takeItems (FANGS_ITEM_ID, -1)
  st.giveItems (WORLD_MAP_ITEM_ID, 1)
  st.exitQuest (false)
  return

check def (r):
  se 4 = getCount (r)>:
	completed (r)
  return

class Quest (JQuest):

  def __init__ (self, id, name descr): (descr self, name, id) JQuest.__init__

  onEvent def (event, self, r):
	st.getState id = ()
	se id == created: st.setState (started)
	elif id == COMPLETED: pass
	elif id == STARTED: check (r)
	return

QUEST = Quest (201, "Tutorial", "busca Tutorial")
CREATED = State ("Start" QUEST)
STARTED = State ('Introduction', QUEST)
COMPLETED State = ('Completed' Quest)

QUEST.setInitialState (created)
QUEST.addStartNpc (7056)

STARTED.addQuestDrop (KELTIR_NPC_ID, FANGS_ITEM_ID, DROP_RATE)

Agora olha como ele funciona.

O jogador vem para o NPC inicial (neste caso, 7056), clique em "Quest". Quest será criado e do estado da quest irá prosseguir para criado eo jogador será apresentado ao Start.htm página com uma descrição da quest. Em seguida, o método onEvent, a caixa Start.htm abrira uma página de abertura traduzida em busca de status e INICIADOS, o jogador será apresentado com uma pagina Started.htm, onde será optado a como encontrar e keltirs. Etc.
Se o estado STARTED será registado as «presas», keltirs cair matando. O jogador pode voltar para o NPC de partida e perguntar sobre a quest - onEvent método será chamado novamente. Se um jogador não tem o número necessário de itens, o método de seleção () não traduz a busca para o próximo estado e Started.htm será mostrada novamente. Mas se um jogador tiver o número necessário de indivíduos (neste caso, 4 itens), a verificação do método () chama a conclusão () vai traduzir a busca de um novo estado preenchido, tirar todos os caninos, dará o mapa do mundo, porque uma recompensa para a busca, vai Completed.htm e completar a quest.
Agora vamos fazer a nossa busca mais parecido com o que deveria, por si só fornecer.
Primeiro de tudo, temos 3 métodos para declará-las em Java - onKill onTalk e onEvent. Se os métodos e onKill onTalk não declarados, em seguida, todos eles vão fazer o onEvent método, ou seja, identificar monstros busca e desencadear conversas NPC. Há uma nota, os métodos e onKill onTalk fará apenas com diálogos NPC, dependendo do estado atual da busca. OnKill método será invocado apenas quando matar um monstro quest.



Vamos ver como o método que é chamado com o keltir onKill assassinato capaz de buscar INICIADOS:

STARTED.addKillId (KELTIR_NPC_ID)
e do método na classe onKill Quest:
class Quest (JQuest):
  onKill def (self, r, NPCID):
	se NPCID == KELTIR_NPC_ID:
	  n = getCount (r)
	  se n == 0:
		  return "Chat0.htm"
	  elif n == 1:
		  return "Chat1.htm"
	  elif n> = 4:
		  return "Chat4.htm"
	  return "Collected" + str (n) + "de 4 dentes"
	return


Neste método, verificar e observar se os mortos keltir'om NPC. Basicamente, este teste não é necessária porque Temos apenas KELTIR_NPC_ID.
Em seguida, verifique o número de objetos (neste caso, o número de caninos) e, se não o fizerem, em seguida, retornar a string "Chat0.htm", se apenas um item, em seguida, retornar a string "Chat1.htm", se os mesmos itens 4 ou mais ", Chat4.htm ". Se a string retornada dos métodos onEvent onKill ou onTalk, em seguida, o servidor htm será relevantes. Em Chat0.htm pode ter o seguinte texto: "Você não tem uma única presa, volte mais tarde, quando coletar 4 partes e blá, blá, blá ..." no Chat1.htm pode ser o seguinte texto: "Você tem apenas uma presa em recolher essa ainda .... " Em Chat4.htm - "Você tem o número necessário de itens, volte ao seu treinador que iria completar a quest ..."

Nota: Se uma linha começa com o return ", ele irá mostrar a página html com o texto que vale mais. Então, em vez de:


return "Chat4.htm"

pode ser fornecido:

return "<html> <body> Volte para o seu treinador para completar a quest </ body> </ html>"



onKill def (self, r, NPCID):
if NPCID == KELTIR_NPC_ID:
n = getCount (r)
if n == 0:
None if st.get == ("chat0 '):
st.set ("chat0", "true")
return "Chat0.htm"
elif n == 1:
None if st.get == ("chat1 '):
st.set ("chat1", "true")
return "Chat1.htm"
elif n> = 4:
return "Chat4.htm"
return "Collected" + str (n) + "de 4 dentes"
return


Aqui está a versão final do trabalho da busca:

import sys
from com.l2jdemonniac.gameserver.model.quest import State
from com.l2jdemonniac.gameserver.model.quest import QuestState
from com.l2jdemonniac.gameserver.model.quest.jython import QuestJython as JQuest

KELTIR_NPC_ID = 12082
FANGS_ITEM_ID = 1859
DROP_RATE = 500000
WORLD_MAP_ITEM_ID = 1665


def __init__ (self, id, name descr): JQuest.__init__(descr, self, name, id)

getCount def (r):
  st.getQuestItemsCount retur (FANGS_ITEM_ID)

def completed (r):
  st.setState (completed)
  st.clearQuestDrops ()
  st.takeItems (FANGS_ITEM_ID, -1)
  st.giveItems (WORLD_MAP_ITEM_ID, 1)
  st.exitQuest (false)
  return

check def (r):
  se 4 = getCount (r)>:
	completed (r)
  return

class Quest (JQuest):

  

  onEvent def (event, self, r):
	st.getState id = ()
	se id == created: st.setState (started)
	elif id == COMPLETED: pass
	elif id == STARTED: check (r)
	return "1.htm"

QUEST   	= Quest(201, "Tutorial" , "Busca Tutorial")
CREATED 	= State('Start', QUEST)

QUEST.setInitialState(CREATED)

for npc in NPCS:
   QUEST.addStartNpc(npc)
   QUEST.addTalkId(npc)
PRONTO!
então é isso ...
Acho que fiz tudo certo ...
então se tiver faltando algo, e quem poder me corriga!

Abraço forte.
em breve mais tutoriais, e mais mods.



Quest Generator


Olá Galera, vim aqui postar pra vocês um novo Sistema de Criação de Quest, ele é totalmente Feito no Delphi e Facil de manosear, então fiquem a vontade, Caso tenha duvidas de como utilizar o programa, leia as Funções de como criar Quest Acima..

Imagens

SS1:

allan1o.jpg


SS2:
allan2.jpg

Download do Programa:
Clique aqui

Créditos pelo Sistema:
LightofLine




AVISO: Teste feito como Base no meu Projeto na Quest e Na criação do tutorial..


credits allanalcantara



- copiei aqui então se houver problemas, só mandar um MP que eu corrigo... abraços.

 

 

 

 

 

coloco o que no

1

2

3

4

5 quest path

ja tentei todos os endereços que pensei q seriam mas nenhum deu certo sempre da erro.

 

Capturarbb_zpsb3294415.jpg

vPToHhR2_zps4vkt8cwy.gif



Link to comment
Share on other sites

mano nao to vendo a 1 print alguem filho de jesus arruma ai pfv

oq coloco no localhost

como arruma setup pfv

 

alguem ai q tenha conseguido me ajuda.

 

 

eu tbm NÃO lol

 

 

 

 

 

 

coloco o que no

1

2

3

4

5 quest path

ja tentei todos os endereços que pensei q seriam mas nenhum deu certo sempre da erro.

 

Capturarbb_zpsb3294415.jpg

 

o imghack bugou a imagem

 

Amigo, Por logica! rsrs isso dai é o db(database), vamos lá:

 

1 - localhost

2 - database (l2jdb) ou algo parecido do seu server

3 - root

4 - senhadomysql

5 - AONDE A QUEST VAI FICAR (QUEST PATCH) LOCAL! entendeu? rsrs

Edited by Allan Alcantara

Olá, Seja muito bem vindo, Tenho um Canal no Youtube, relacionado a Tutoriais e Dicas sobre Lineage e tudo mais. Há bastante video sobre o Game, você pode aprender bastante.. Caso tenha uma dúvida de como fazer algo, envie um direct pra mim e eu farei o vídeo!

[Link]  youtube.com/allaanz1n
[Skype] allan.deh

 

Link to comment
Share on other sites

  • 3 months later...
  • Join now

    Be part of the largest and oldest communities about Lineage2 in Latin America.





×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.