antiblock
Rodnia | Alpha & Omega
  • Chatbox

    You don't have permission to chat.
    Load More
  • 0
Sign in to follow this  
rafaelxte2

Aprendendo A Criar Quests

Question

Olá boas pessoal  :adeus: 

Estou tentando entender de criar quests.
me inicie em uma facil para vocês que tem conhecimento avançado em tal procedimento 

porem trabalhoso para minha pessoa.

Ainda não a executei então gostaria que alguns de vossa excenlencia me mostra-se se há algo errado

com a mesma.

e se poder e não foi aborrecer, mesmo por pastebin  indicar o erro comentanto a quest nas linhas erradas.

 

sem mais segue a quest

 

--------------------------------------------------------------------
-- Quest vendedora de aprimoramentos - Oracle Games	2.0							----
-- Desenvolvida por Rafael Alves 
-- Oracle Games 2.0					 					----
--------------------------------------------------------------------
quest aprimoramento_ant_hack begin
	state start begin
		when 9010.chat"Item de aprimoramento" begin
			say_title("Comprar Aprimoramentos")
			say("Olá ..pc.get_name()..!")
			say("Devido a nosso servidor ser Oldscholl")
			say("adotamos esse meio de vender aprimoramento")
			say("para que não haja hacker em nosso servidores")
			say("lhes proporcionando assim um jogo mas agradavél.")
			say("Agradecemos a compreensão de todos")
			say("Deseja comprar aprimoramentos?")
			local s == select	( "Comprar" , "Não Obrigado" , "Fechar" )
				if cost < 1000000 then
					cost = 1000000
				end
				if pc.gold < cost then
                    say_title("Comprar Aprimoramentos ")
                    say("Infelizmente você não possui gold sufiente")
                    say("e se eu chegar em casa sem dinheiro")
                    say("meu marido vai ficar nada feliz.")
                    say("Então esqueça o fiado")
                    say_reward(string.format("Custa %d Gold", cost))
					return
				end
				
			if s == 1 then 
				chat("Você recebeu 20 Pergaminho do Aprimoramento")
				say("Obrigado por escolher nosso servidor")
				say("Esperamos que esteja se divertindo")
				say("Tenha um bom jogo")
				say("Sua compra foi efetuada com sucesso")
				pc.remove_gold (1000000)
				pc.give_item2("71084", 20)
			elseif s == 2 then
				say("Homem indeciso hahahahaha")
				say("mas fique tranquilo caso mude de idéia")
				say("eu estarei por aqui.")
				say("Esperamos que esteja se divertindo")
				say("Tenha um bom jogo")	
			elseif s == 3 then
				return
			end		
		
		end
	end
end 

 

Share this post


Link to post
Share on other sites

10 answers to this question

  • 0
when 9010.chat"Item de aprimoramento" begin 

esqueceste um ponto no chat-> VNUM.chat."texto"

say("Olá ..pc.get_name()..!")

Estás a fazer append, logo têns que fechar a string primeiro antes do append obvious

-> say("O meu nome é"..pc.get_name())

if cost < 1000000 then
    cost = 1000000
end

Onde é que está esta variavel?

if pc.gold < cost then

é pc.get_gold()

Share this post


Link to post
Share on other sites
antiblock
Cyphriun
  • 0
when 9010.chat"Item de aprimoramento" begin 

esqueceste um ponto no chat-> VNUM.chat."texto"

say("Olá ..pc.get_name()..!")

Estás a fazer append, logo têns que fechar a string primeiro antes do append obvious

-> say("O meu nome é"..pc.get_name())

if cost < 1000000 then
    cost = 1000000
end

Onde é que está esta variavel?

if pc.gold < cost then

é pc.get_gold()

 

Certo Giseli obrigado pela instrução e comentarios

o  problema da variavel:

 

if cost < 1000000 then
    cost = 1000000
end

preciso que a pessoa tenha esse gold caso nao haja retorne essa mensagem para ele.

if pc.gold < cost then
                    say_title("Comprar Aprimoramentos ")
                    say("Infelizmente você não possui gold sufiente")
                    say("e se eu chegar em casa sem dinheiro")
                    say("meu marido vai ficar nada feliz.")
                    say("Então esqueça o fiado")
                    say_reward(string.format("Custa %d Gold", cost))
					return
				end

pois é a que está mas dando trabalho para mim.

Share this post


Link to post
Share on other sites
  • 0

Certo Giseli obrigado pela instrução e comentarios

o  problema da variavel:

 

if cost < 1000000 then
    cost = 1000000
end

preciso que a pessoa tenha esse gold caso nao haja retorne essa mensagem para ele.

if pc.gold < cost then
                    say_title("Comprar Aprimoramentos ")
                    say("Infelizmente você não possui gold sufiente")
                    say("e se eu chegar em casa sem dinheiro")
                    say("meu marido vai ficar nada feliz.")
                    say("Então esqueça o fiado")
                    say_reward(string.format("Custa %d Gold", cost))
					return
				end

pois é a que está mas dando trabalho para mim.

if cost < 1000000 then
    cost = 1000000
end

Se não têns isto no questlib, estás a usar uma variavel que não existe nem localmente nem globalmente, e se o que pretendias éra por algum modo ter essa variavel 'cost' global para outros casos com valores diferentes, ao meteres a variavel cost = valor ela ia ficar assim para o resto da execução do programa(neste caso um reload quest ou restart) e não seria o pretendido.

local subCost = cost
if subCost < 1000000 then
    subCost = 1000000
end

Aqui sim, estarias a usar a variavel sem modificala, existem outras maneiras de fazer lock a mesma por metatable, mas é desnecessário a meu ver.

 

MAS, como ja vi tu não queres fazer nada disso acima, por isso onde tu verificas o gold do jogador simplesmente podes criar um variavel antes da verificação ou verificar o numero logo.

local cost = VALOR
if pc.get_gold() < cost then

OU

if pc.get_gold() < VALOR then

E dou um concelho, quando usas uma variavel somente 1 vez, não têns necessidade de re/criar ela localmente

Share this post


Link to post
Share on other sites
  • 0

Cer

 

if cost < 1000000 then
    cost = 1000000
end

Se não têns isto no questlib, estás a usar uma variavel que não existe nem localmente nem globalmente, e se o que pretendias éra por algum modo ter essa variavel 'cost' global para outros casos com valores diferentes, ao meteres a variavel cost = valor ela ia ficar assim para o resto da execução do programa(neste caso um reload quest ou restart) e não seria o pretendido.

local subCost = cost
if subCost < 1000000 then
    subCost = 1000000
end

Aqui sim, estarias a usar a variavel sem modificala, existem outras maneiras de fazer lock a mesma por metatable, mas é desnecessário a meu ver.

 

MAS, como ja vi tu não queres fazer nada disso acima, por isso onde tu verificas o gold do jogador simplesmente podes criar um variavel antes da verificação ou verificar o numero logo.

local cost = VALOR
if pc.get_gold() < cost then

OU

if pc.get_gold() < VALOR then

E dou um concelho, quando usas uma variavel somente 1 vez, não têns necessidade de re/criar ela localmente

 

to então fica assim a missao :

--------------------------------------------------------------------
-- Quest vendedora de aprimoramentos - Oracle Games	2.0							----
-- Desenvolvida por Rafael Alves 
-- Oracle Games 2.0					 					----
--------------------------------------------------------------------
quest aprimoramento_ant_hack begin
	state start begin
		when 9010.chat."Item de aprimoramento" begin
			say_title("Comprar Aprimoramentos")
			say("Olá tudo bem"..pc.get_name())
			say("Devido a nosso servidor ser Oldscholl")
			say("adotamos esse meio de vender aprimoramento")
			say("para que não haja hacker em nosso servidores")
			say("lhes proporcionando assim um jogo mas agradavél.")
			say("Agradecemos a compreensão de todos")
			say("Deseja comprar aprimoramentos?")
			local s == select	( "Comprar" , "Não Obrigado" , "Fechar" )
				if pc.get_gold() < 1000000 then
                    say_title("Comprar Aprimoramentos ")
                    say("Infelizmente você não possui gold sufiente")
                    say("e se eu chegar em casa sem dinheiro")
                    say("meu marido vai ficar nada feliz.")
                    say("Então esqueça o fiado")
                    say_reward(string.format("Custa %d Gold", cost))
					return
				end
				
			if s == 1 then 
				chat("Você recebeu 20 Pergaminho do Aprimoramento")
				say("Obrigado por escolher nosso servidor")
				say("Esperamos que esteja se divertindo")
				say("Tenha um bom jogo")
				say("Sua compra foi efetuada com sucesso")
				pc.remove_gold (1000000)
				pc.give_item2("71084", 20)
			elseif s == 2 then
				say("Homem indeciso hahahahaha")
				say("mas fique tranquilo caso mude de idéia")
				say("eu estarei por aqui.")
				say("Esperamos que esteja se divertindo")
				say("Tenha um bom jogo")	
			elseif s == 3 then
				return
			end		
		
		end
	end
end 


 

 

Porem me retorna o seguinte erro de sintaxe
 

vendedoras_aprimoramento.quest:46:syntax error : [string "start"]:9: unexpected symbol near `=='

Share this post


Link to post
Share on other sites
  • 0
local s == select	( "Comprar" , "Não Obrigado" , "Fechar" )

== é evaluação de boleano: true == true, false == false, true == false, 1 == 2, 2 == 1, 1 == 1 e etc.

= é para definir o valor da variavel

Share this post


Link to post
Share on other sites
  • 0

Bom então vamos ver minha verificação ficaria assim

if pc.get_gold()<1000000 then
     say_title("Comprar Aprimoramentos ")
     say("Infelizmente você não possui gold sufiente")
     say("e se eu chegar em casa sem dinheiro")
     say("meu marido vai ficar nada feliz.")
     say("Então esqueça o fiado")
     return
end

blz e correia dentro dessa função 1 que é selecionar uma das opções caso ele aceite comprar primeiro verificaria o gold se é suficiente e caso nao fosse, apresentaria a mesagem acima e se fosse sufiente correria a quest normal.

 

então seria essa minha seleção

local s=select	( "Comprar" , "Não Obrigado" , "Fechar" )

    if s==1 then ----------> não equilavale ao valor da primeira opção?
      chat("Você recebeu 20 Pergaminho do Aprimoramento")
      say("Obrigado por escolher nosso servidor")
      say("Esperamos que esteja se divertindo")
      say("Tenha um bom jogo")
      say("Sua compra foi efetuada com sucesso")
      pc.remove_gold (1000000)
      pc.give_item2("71084", 25)
      return			
    end

    elseif s==2 then ------> 2 não é equivalente ao valor da segunda opção?
      say("Homem indeciso hahahahaha")
      say("mas fique tranquilo caso mude de idéia")
      say("eu estarei por aqui.")
      say("Esperamos que esteja se divertindo")
      say("Tenha um bom jogo")
      return
    end

então está faltando nesta função com o que ele comprar as resposta selecionada??

Share this post


Link to post
Share on other sites
  • 0

Bom primeiramente muito obrigado ao giselle. 

Pois agora a quest esta correndo pefeitamente.

 

segue 

--------------------------------------------------------------------
-- Quest vendedora de aprimoramentos - Oracle Games	2.0							----
-- Desenvolvida por Rafael Alves 
-- Oracle Games 2.0
-- Agradecimento ao Giselle pela explicação e panciencia
--sem o mesmo nao seria possivel terminar este meu primeiro projeto			 					----
--------------------------------------------------------------------
quest aprimoramento_ant_hack begin
	state start begin
		when 9010.chat."Item de aprimoramento" begin
			say_title("Comprar Aprimoramentos")
			say("Olá tudo bem" ..pc.get_name())
			say("Devido a nosso servidor ser Oldscholl")
			say("adotamos esse meio de vender aprimoramento")
			say("para que não haja hacker em nosso servidores")
			say("lhes proporcionando assim um jogo mas agradavél.")
			say("Agradecemos a compreensão de todos")
			say("Ah que devo a honra de sua visita?")
		local f = select("Comprar Aprimoramento","Ha,nada obrigado","Fechar")
		if f == 1 then
			
			if pc.get_gold() < 1000000 then
				say_title("Comprar Aprimoramentos ")
                    say("Infelizmente você não possui gold sufiente")
                    say("e se eu chegar em casa sem dinheiro")
                    say("meu marido vai ficar nada feliz.")
                    say("Então esqueça o fiado")
					return
			end
			
			say("Obrigado por escolher nosso servidor")
			say("Esperamos que esteja se divertindo")
			say("Tenha um bom jogo")
			say("Sua compra foi efetuada com sucesso")
			pc . changegold ( - 1000000 )
			pc.give_item2("71084", 20)
			chat("Você recebeu 20 Pergaminho do Aprimoramento")
		elseif f == 2 then
			say("Homem indeciso hahahahaha")
			say("mas fique tranquilo caso mude de idéia")
			say("eu estarei por aqui.")
			say("Esperamos que esteja se divertindo")
			say("Tenha um bom jogo")
			say("")
		elseif f == 3 then
			return
		end
	
		end
	end
end

Share this post


Link to post
Share on other sites
  • 0

Só um aparte. Sabes que o NPC não está a dar os "aprimoramentos" certo?

 

Podes sempre adicionar um else no teu select "f == 1", ou então fazes um else if com "pc.get_gold() >=1000000" seguido de um then e os comandos para dar os itens ao jogador com os respetivos ID's do "aprimoramento".

Share this post


Link to post
Share on other sites
  • 0

Só um aparte. Sabes que o NPC não está a dar os "aprimoramentos" certo?

 

Podes sempre adicionar um else no teu select "f == 1", ou então fazes um else if com "pc.get_gold() >=1000000" seguido de um then e os comandos para dar os itens ao jogador com os respetivos ID's do "aprimoramento".

 

if f == 1 then
			
			if pc.get_gold() < 1000000 then
				say_title("Comprar Aprimoramentos ")
                    say("Infelizmente você não possui gold sufiente")
                    say("e se eu chegar em casa sem dinheiro")
                    say("meu marido vai ficar nada feliz.")
                    say("Então esqueça o fiado")
					return
			end
			
			say("Obrigado por escolher nosso servidor")
			say("Esperamos que esteja se divertindo")
			say("Tenha um bom jogo")
			say("Sua compra foi efetuada com sucesso")
			pc . changegold ( - 1000000 )
			pc.give_item2("71084", 20)
			chat("Você recebeu 20 Pergaminho do Aprimoramento") 

Parece-me que não leste bem a quest.

Share this post


Link to post
Share on other sites
  • 0
if f == 1 then
			
			if pc.get_gold() < 1000000 then
				say_title("Comprar Aprimoramentos ")
                    say("Infelizmente você não possui gold sufiente")
                    say("e se eu chegar em casa sem dinheiro")
                    say("meu marido vai ficar nada feliz.")
                    say("Então esqueça o fiado")
					return
			end
			
			say("Obrigado por escolher nosso servidor")
			say("Esperamos que esteja se divertindo")
			say("Tenha um bom jogo")
			say("Sua compra foi efetuada com sucesso")
			pc . changegold ( - 1000000 )
			pc.give_item2("71084", 20)
			chat("Você recebeu 20 Pergaminho do Aprimoramento") 

Parece-me que não leste bem a quest.

 

Então giselle como pode ver aqui me corre bem a quest... 

Não percebi bem seu comentario/sugestao

 

 

imagens abaixo

 

image.jpg

 

 

image.jpg

 

image.jpg

 

image.jpg

 

image.jpg

 

image.jpg

 

 

 

Então como pode ver nas imagens aqui estás correndo perfeitamente

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this