Jump to content

RafaVK

Miembro
  • Contador contenido

    58
  • Ingreso

  • Última visita

  • Días ganados

    2

Mensajes publicados por RafaVK

  1. Bueno para los que no entendieron lo que quiero decir seria algo asi:

     

    Por ejemplo tengo un sistema de canje pero no quiero que puedan entrar todos, entonces quiero cuando le des click a la opcion de "Canjes" te pida una contraseña la cual la daria yo en un evento y tal.

     

    Gracias de antemano espero su respuesta!.

    PD: Perdon si ya existia pero no la encuentro, por lo menos en zone.

    quest test begin
    	state start begin
    		when 12312.chat."Ingresar Contraseña" with pc.is_gm() begin
    			say_title("Seleccion de Contraseña")
    			say("Ingrese la contraseña: ")
    			a = input()
    			game.set_event_flag("contra", a)
    		end
    		when 12312.chat."Reclamar" begin
    			say_title("Ingresar..")
    			say("Ingrese la contraseña: ")
    			a = input()
    			if a == game.get_event_flag("contra") then
    				say_title("Ingresar..")
    				say("Contraseña correcta ")				
    			else
    				say_title("Ingresar..")
    				say("Contraseña erronea ")
    			end
    		end
    	end
    end
    

    Me imagino que es algo así lo que pides.... te hice lo básico tu ya haces lo que necesites...

  2. Les traigo este resumen de quest  :)  :)  :)  lo hice mientras estudiaba este lenguaje. Tiene lo básico no está completo (Me ha dado pereza completarlo hace casi 1 año que lo hice...  pero les servirá a los que deseen aprender.
     

    ---Resumen de las Quest
    
    [*]Estructura de una quest
    
    	quest capidos begin				-----> Encabezado de la quesy seguido del nombre de la quest se recomienda que sea el mismo del archivo que se crea.
    		state start begin			-----> Indica que la quest empieza aquí
    			when login begin		-----> Pregunta por algo que esta pasando en este caso pregunta por un login es decir si un personaje se conecto.
    				 chat("Bienvenido al servidor, pasalo bien")		-----> La acción que se realiza en al quest.
    			end						-----> Finaliza la acción
    		end							-----> Finaliza el estado
    	end								-----> Finaliza la quest
    	
    [*]	Comentarios 
    
    	Se hacen con un -- 
    [*] Variables
    
    	local nombre = variable			-----> Nos sirve para almacenar datos. Ejemplo local nivel = pc.get_level()
    	local texto = input()
    	local numero = math.random(1,100)
    	local s = select ("opcion1" , "opcion2" , "opcion3")			----->	Sirve para colocar botones en los mensajes
    	if s == 1 then						----->	Sirve para preguntar por cual de las opciones se le dió clic es decir a la opcion1 corresponde el 1 a la opcion2 corresponde el 2 y asi sucesivamente con la cantidad de opciones que se coloquen.
    	
    	
    [*] Estados de las quest
    	
    	start						----->  Estado de inicio de una quest.
    	setstate("nombre estado")	----->	Cambiar de estado. Tambien se usa la funcion set_state("nombre estado")
    	set_quest_state(,)		----->	Cambiar el estado de una quest distinta. Recordando que el nombre y el estado van dentro de comillas "" asi: set_quest_state("nombre", "estado")	
    	
    	Ejemplo de estados:
    	quest capidos begin				-----> Encabezado de la quesy seguido del nombre de la quest se recomienda que sea el mismo del archivo que se crea.
    		state start begin			-----> Indica que la quest empieza aquí
    			when login begin		-----> Pregunta por algo que esta pasando en este caso pregunta por un login es decir si un personaje se conecto.
    				 setstate("run")	----->	Ejecuta el cambio de STATE
    			end						-----> Finaliza la acción
    		end							-----> Finaliza el estado
    		state run begin				-----> Indica que la quest empieza aquí
    			when enter begin		-----> Se usa para que las acciones se hagan cuando se entra al estado.
    				chat("Has entrado al state.")
    			end			
    			when leave begin		----->	Se usa para que las acciones se hagan cuando se finaliza o sale del estado.
    				chat("Has salido del state.")
    			end
    			when login begin		-----> Pregunta por algo que esta pasando en este caso pregunta por un login es decir si un personaje se conecto.
    				 return				-----> Finaliza la quest
    			end						-----> Finaliza la acción
    		end							-----> Finaliza el estado
    	end								-----> Finaliza la quest
    	
    [*] Operadores lógicos
    
    	when				----->  sirve para comenzar acciones.
    	while				----->  sirve para comenzar acciones.
    	with				----->	poner condiciones.
    	and					----->	poner condiciones.
    	or					----->	poner condiciones.
    	if					----->	poner condiciones.
    	elseif				----->	poner condiciones.
    	else				----->	poner condiciones.
    	>					----->	Comparación
    	<					----->	Comparación
    	>=					----->	Comparación
    	<=					----->	Comparación
    	==					----->	Comparación
    	~=					----->	Comparación
    [*] Estructura de un IF
    	if [X] then
    		accion1
    	else if [X2] then
    		accion2
    	end
    [*] Estructura de un when
    	when condiciones begin
    		accion
    	end
    
    [*] Ciclos o Bucles
    	Un BUCLE se puede romper con la palabra break
    	
    	[*] Bucle 1
    		repeat
    			bloque de sentencias
    		until (condición)
    		
    	[*] Bucle 2
    		while (condición) do
    			bloque de sentencias
    		end
    		-- BUCLE INFINITO
    		while true do
    			bloque
    		end
    		-- FIN DE BUCLE INFINITO
    	[*] Bucle 3
    		for var = start, stop , aumento do
    			bloque de sentencias
    		end
    	[*] Bucle 4
    		-- FOR PARA ARRAY
    		local tab = {"valor1", "valor2", "valor3"}
    		for k, v in ipairs(tab) do
    			say(k.." = "..v)
    		end --for
    		-- FIN FOR PARA ARRAY
    	
    [*]	Arrays
    	
    	local nombrearray = {10,20,34,43,57}			----->	Array simple 
    	nombrearray[1]									----->	Trae el contenido del array en la posición 1 en esta caso 10.
    	EJEMPLO:
    			local items = {160,161,162,163}
    			for i=1, table.getn(items) do -- en la i ponemos igual a 1 y luego la cantidad de veces que se repita
    				pc.give_item2(items[i]) -- te dara cada uno de los items que haya en la tabla
    			end -- cada for le corresponde un end
    	
    	local nombre = { -- abres la tabla
    		{} -- subcategoria 1
    		{} -- subcategoria 2
    		{} -- subcategoria 3
    	} -- cierras la tabla
    	
    	Una subcategoría sirve para agrupar una cantidad de elementos en si y para obtener los elementos se hace:
    		nombre[subcategoria][posicion]
    	
    	Ejemplo:
    			local cordes = {
    				{12500,13400,17500,14000},
    				{12400,18900,13200}
    			}
    			cordes[1][4] -- 14000
    			cordes[2][2] -- 18900
    	EJEMPLO PRACTICO 1:
    						local cordes = {
    							{12500,13400},
    							{12400,18900},
    							{19800,12300}
    						}
    						pc.warp(cordes[1][1],cordes[1][2]) -- 12500, 13400
    	
    	EJEMPLO PRACTICO 2:
    						say("Que arma quieres")
    						say("")
    						local items = {
    							{160,2},
    							{161,1},
    							{162,3}
    						}
    						local arma = select ("Ninfa +0" , "Ninfa +1" , "Ninfa +2" , "Cerrar")
    						if arma == table.getn(items)+1 then 
    							return 
    						end
    						pc.give_item2(items[arma][1],items[arma][2])
    	
    	
    [*]Mostrar Texto En El Cliente
    
    	chat("mensaje")							----->	Mostrar chat de infromación en el chat general. Solo lo ve el personaje que se conecta.
    	notice_all("mensaje")					----->	Mostrar a todos los personajes Conectados.
    	say_title("mensaje")					----->	Mensaje en forma de título
    	say("mensaje")							----->	Mensaje que muestra el texto que se desea. Est mensaje es mostrado en un recuadro en medio de la pantalla.
    	say_reward("mensaje")					----->	Mensaje en forma de recompensa con color distinto.
    
    	
    	
    [*] Datos Curiosos.
    	math.random(numero incial,numero final)	----->	Funcion que devuelve un número aleatorio entre el numero inicial y el numero final que se establezca.
    	pc									----->	Es el usuario o personaje que esta conectado.
    	pc.get_level()						----->	Obteiene el nivel de un personaje.
    	login								----->	Acción que se da al conectarse un personaje.
    	logout								----->	Acción que se da al desconectarse un personaje.
    	when vnum.chat."texto de opcion" begin		----->	Se utiliza para activar la quest cuando le da en una opcion de un lista de opciones. Es decir, cuando se le da clic en la opcion "texto de opcion" del npv o item del vnum.
    	pc.count_item("vnum")				----->	Sirve para comprobar si el personaje tiene el item correspondiente al venum en su inventario.
    	
    	vnum.chat."texto"					----->	Al darle clic en la npc con el vnum se abre un dialogo con opciones. Al dar click en la opción que contiene el texto empieza el contenido del when.
    	vnum.click							----->	Al hacer click en el npc del vnum, empieza el contenido del when.
    	vnum.click							----->	Al hacer click en el npc, empieza el contenido del when.
    	kill								----->	Cuando el jugador mata un enemigo, comienza el contenido del when.
    	when vnum.kill begin				----->	Indica si el monstruo que le corresponde el vnum esta muerto
    	party_kill							----->	Cuando un miembro del grupo mata a un enemigo inicia el contenido del when.
    	vnum.party_kill						----->	Cuando un miembro del grupo mata a aun enemigo con vnum, empieza el contenido del when.
    	X.target.click						----->	Cuando haces click al tarjet de nombre X empieza el contenido del when.
    	X.target.arrive						----->	Cuando llegas al punto con el tarje de nombre X empieza el contenido del when.
    	pc.get_map_index == codigomapa		----->	Indica si el personaje esta en el mapa de codigomapa
    	pc.get_max_hp						----->	Se puede preguntar por el nivel de hp que tienes.
    	pc.is_mount							----->	Se puede preguntar si estas montado en una montura o no.
    	when condicion1 with condicion2 and condicion3 begin ----> Estrctura para 2 o mas condiciones 
    	pc.get_empire()						----->	Se puede preguntar en que reino estas.
    	vnum.use							----->	Cuando se una un el item del vnum se activa esta quest
    	pc.give_item2("vnum", cantidad)		----->	Se utiliza para dar un item al inventario del personaje.
    	return								----->	Accion que se utiliza en la accion de un boton de cancelar o cerrar. Y sirve para cerrar la ventana de la quest.
    	pc.change_money(-cantidad)			----->	Acción que sirve para disminuir o aumentar la cantidad de yang de un personaje.
    	pc.remove_item(vnum, cantidad) 		----->	Accion que sirve para remover un item del inventario del personaje.
    	pc.gold								----->	Pregunta por la cantidad de yang que tiene el personaje.
    	pc.get_sex()						-----> 	Obtiene el sexo de un personaje. Se compara 1 hombre 2 mujer.
    	say_item_vnum(vnum)					----->	Muestra 1 item con su imagen.
    	pc.count_item(vnum)					----->	Cuenta cuantos items hay.
    	mob_name(vnum)						----->	Nombre de un monstruo
    	pc.getname()						----->	Obtener el nombre del personaje.
    	
    	
    	---------------------------------------------------------------------------------------------------------------------------------------------
    	¡¡¡¡¡IMPORTANTE !!!!
    	EL JUEGO ALMACENA PARA SIEMPRE LOS VALORES DE LOS SIGUIENTES COMANDOS
    	pc.setqf							----->	 nos permite asignar un determinado valor a un personaje de modo que podamos usar el comando pc.getqf para crear condiciones que impliquen que el personaje tenga ese valor concreto para activarse. pc.setqf("nombredelqf", valor) otra forma pc.setqf("kekomola",	pc.getqf("kekomola") + 1)
    		ejemplo:
    				pc.setqf("kekomola", 2)							--> valor fijo
    				pc.setqf("kekomola", pc.getqf("kekomola") + 1) ---> Cada que se use aumenta 1
    	pc.getqf							----->	Chekea que valor tiene el comando anterior
    		ejemplo:
    				if pc.getqf("kekomola") == 5 then   ----> se comprueba el valor de kemola que es el valor que se acumulo en el comando anterior.
    	
    	
    		Ejemplo combinado:
    							quest item begin
    								state start begin
    									when 70045.use begin
    										pc.setqf("buenas", pc.getqf("buenas") + 1)
    										if pc.getqf("buenas") == 1 then
    											chat("buenas")
    										elseif pc.getqf("buenas") == 2 then
    											chat("que tal")
    										elseif pc.getqf("buenas") >= 3 then
    											chat("me aburro")
    										end
    									end
    								end
    							end
    		Ejemplo Practico:
    							quest muertes begin
    								state start begin
    									when kill with not npc.is_pc() begin
    										pc.setqf("mobs", pc.getqf("mobs") + 1)
    										chat("LLevas "..pc.getqf("mobs").." matados en tu juego")
    									end
    								end
    							end
    	---------------------------------------------------------------------------------------------------------------------------------------------
    	horse.unsummon()						----->	 Nos permite guardar el Caballo
    	horse.summon()							----->	 Nos permite sacar el caballo
    	horse.set_level(nivel)						----->	 Asigna un nivel al caballo
    	
    	
    
    	letter : Relacionado con las letters (explicación en otro capitulo).
    	button : Relacionado con las letters (explicación en otro capitulo).
    	info : Relacionado con las letters (explicación en otro capitulo).
    	nombre.timer : Cuando el timer llamado con nombre llega a 0, empieza el contenido del when.
    	nombre.server_timer : Cuando el server_timer llamado con nombre llega a 0, empieza el contenido del when.
    	
    	
    	
    	
    	----------------------
    	Como hago yo para saber que valor tiene en el qf cierto personaje? es decir puedo poner una ques con el mismo nombre del qf para todos los personajes? y si es así como hago yo para saber con otra quest distinta que valor del qf tiene un personaje X ?
    	pc.getf('nombrequest','nombreqf')
    	pc.getqf = get playing character quest flag
    	pc.getf = get playing character flag
    	-----------------------
    	
    

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.

  3. algunas funciones del game o algo pueden estar malas, no te guies por eso. En mi server en una tabla decia que yo y que usaba hack y no era asi solo que los privados pasamos aveces una velocidad de movimiento normal o algo y al sobrepasarla el servidor lo detecta como hack.

     

    Es raro que en un game oficial que la velocidad pueda ser ejemplo 20% max el tuyo le pongas 150% xd dice como que aquí pasa algo raro jaja y salen estos anuncio depende como lo configures.

     

     

    igual puedo estar equibocado...

     

    Gracias por la respuesta. Lo mismo pienso yo aunque es mejor esperar mas comentarios antes de sacar una conclusión

  4. Me he encontrado con esto en mis syserr

    SYSERR: Feb 28 19:36:55 :: Hack: HACK_DETECT: LorMuErte HprQ¨ÈçsZ¾[Ù)=œ¬GDÎŽš?YeHŽ÷!vż–œ¸ÉÆi”]X¸B@ܘ?Fc
    `š¦”Z''Rªu…ÃLA×Â_jû•á8¨óŬëç	¿¶šÒ=¬ÖjL´Þ²ÿfÙœÐqªæp«l#3ëyÔØÚÓ-£<K1•áèÆAåÖ€WFo5/+ßÖänf7Wーˆ™¬seµú«ŒIÆÆ¡‰µŽaªïÚ{oíÿË}n´oÝ&ð¾å$;µ‘°#ô"ÒyðüÝñôÍ•1º£\FÎjB
    å[Ek{»cà‰|ÂÓÌvªiͼ­˜
    
    SYSERR: Feb 28 19:41:18 :: Hack: HACK_DETECT: alejandra18 KHù¤>åE‡ÕVÜM
    ÕslÛk†L÷ÑèZŒ•=xtÁó„"2Ó“ÒÞEúٚɈÄ39Œ™yçÉ~]
    
    SYSERR: Feb 28 23:03:52 :: Hack: HACK_DETECT: espi Ÿ~Rá(e#g
    <²î«€Å8¹f¸õâ9³ÌtÊ[ær/Qª÷móéÔu‡=sÑëž
    °„gP`ÍT©l§´<Ým ªò6…%Ãía™,‰q·Ðÿû$ð‡Ö‘ÓùhOƸµj)p÷ù’x®Ú/ºƒ@üWý$Å}ëÓcáI
    
    SYSERR: Feb 28 23:55:04 :: Hack: HACK_DETECT: alejandra18 •úxzÂx1
    

     

  5. 
    

    quest test begin

    state start begin

    when 9003.chat."Tienda General" begin

    setskin(NOWINDOW)

    npc.open_shop(3)

    end

    when 9003.chat."Objeto Encantado" begin

    setskin(NOWINDOW)

    if pc.count_item(71084) > 0 then

    chat("Lo siento , tienes que gastar tu Objeto Encantado")

    return

    else

    pc.give_item2(71084,25)

    pc.change_money(-122231) --Cantidad de dinero a cobrar. Importante dejar el -

    chat("Has obtenido 25 Objeto Encantado")

    end

    end

    end

    end

     

  6.  

    Básicamente he echo esto, pero todavía no se si funciona. Tengo que probarlo.

    quest pocion20 begin
    state start begin
    when 27118.use begin
    if get_time() < pc.getqf("tiempo1") then
    syschat("Aun no puedes, tienes que esperar "+ get_time() + " segundos")
    return
    else
    pc.setqf("tiempo1",0) 
    pc.setqf("tiempo1",get_time()+4)
    affect.add_collect(apply.HP_REGEN, 20000, 3)
    pc.remove_item(27118,1)
    end
    end
    end
    end
    

     

    Te recomiendo 2 estados para la quest debido que al hacer esto:

    if get_time() < pc.getqf("tiempo1") then
    

    Sin que tengas el qf antes definido puede darte errores (No graves) pero si te marcaría un error en locale algo de comparación con algo nulo o inexistente.

    pc.setqf("tiempo1",0) 
    pc.setqf("tiempo1",get_time()+4)
    

    Es innecesario poner 2 setqf cuando en el segundo estás reemplazando completamente el primero....

     

    Resumiendo.... Yo lo haría así...

    quest pocion20 begin
    	state start begin
    		when login or enter begin
    			pc.setqf("tiempo1",0) 
    			set_state(estado2)
    		end
    	end
    	state estado2 begin
    		when 27118.use begin
    			if get_time() < pc.getqf("tiempo1") then
    				syschat("Aun no puedes, tienes que esperar ".. pc.getqf("tiempo1")-get_time() .." segundos")
    				return
    			else
    				pc.setqf("tiempo1",get_time()+4)
    				affect.add_collect(apply.HP_REGEN, 20000, 3)
    				item.remove()
    			end
    		end
    	end
    end
    
  7. Sabes que eso es un bonus no? Y eso no te regenera vida sino te aumenta la que tienes, si tienes  123/5000hp, en vez de regenerar te sube la de 5000 a mas vida, asi que tu vida baja se queda igual.

     

    La puse por que en mi servidor me funciona de esa manera..... y lo que realmente hace es que te pone a que se regenere la vida en 100k durante un corto espacio de tiempo lo cual sirve para solucionar lo que pide el dueño del post...

     

     

    Buenas, pues eso que busco una función que restaure el hp.

     

    Me vale que restaure un porcentaje de hp o que restaure uno fijo, la restauración del hp tiene que ser inmediata.

     

    Gracias de antemano.

     

    Restaurar la HP inmediatamente....

     

     

    E incluso si buscas un poco en este mismo foro.... veras que keko, noa la usan (Te dejo el link... 

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    )

     

     

  8.  

    Para poder enterarme de la caida de un core tendría que haber algo en el servidor que me avisase, porque no sería eficiente tener que estar leyendo los syserr del servidor cada minuto para saber si se ha caido o sigue normal. A no ser que haciendo un "ping" al puerto del core se pierda cuando esta caido, la verdad es que no se como funcionan exactamente, pero si pasase esto no sería dificil añadir la funcion que pides.

     

     

    Esto lo puedes hacer que cada cierto tiempo verifique el estado de un core. Puede ser la idea inicial. Si lo manejas como un hilo aparte no carga la memoria del celular. Se crea el hilo cuando se configura los core, se elimina el hilo cuando se desconfigure. Para evitar que varias app cierren el hilo podrías colocar que cada que se habra la app verifique que el hilo esté corriendo.

     

     

     

    Lo de los personjes y gms funciona con la tabla log, con el campo "how" y los valores LOGIN y LOGOUT, es la forma mas fiable que se me ocurrio para hacerlo, con mis files funciona perfectamente y al instante. Al principio lo hice como creo que hacen las webs, usando el last_play de player.player, pero era muy lento y poco fiable. Despues se me ocurrio lanzar una sentencia por ssh para ver el numero de conexiones al servidor, pero no tengo ni idea de freebsd. Asique si alguien conoce una manera mejor para contar los jugadores del servidor soy todo oidos xD.

     

    Ahora entiendo por que no funciona en mi servidor. Para la APP le tengo un user que está totalmente bloqueado en permisos  :P 

     

    Para la conexión de los pj también lo tienes de esta manera? Con la tabla log?

  9. Hola a todos, para los que no confian, e descompilado la APK y es totalmente correcta nada de terceros que mande nada a ningun sitio, podeis estar tranquilos :D

     

    Ademas como bien dice el googleplay es bastante tajante en esas cosas :P

     

    Saludos

     

    Esto lo hice yo desde hace rato xD! llevo desde q salió usándola y me anda bien  :)  bueno como siempre tiene errores pero va progresando.

     

    2 cosas Yori.

     

    1. Debes hacerla más genérica no todos usamos las tablas originales del Metin2... En lo personal uso otra base de datos y otras tablas para hacer asignación de coins... Para hacer esto puedes poner que cada persona ingrese el nombre de la base de datos y pueda ingresar una consulta SQL que si está ingresada se use esta y no la genérica. Así que esta sección no la he podido testear.

     

    2. Los jugadores online no me anda aún.... sigue saliendo en 0. Al igual que la lista del staff no muestra si está o no conectado. 

     

    Como sugerencia adicional podrías agregar que la app informe si hay algún error de caida de los Core  :P que sería algo en lo personal fundamental a pesar de que el servidor tenga la posibilidad de levantar el core por si mismo. 

×
×
  • Crear nuevo...