Ir a contenido

Foto

Capitulo VII - El uso del pc.setqf y pc.getqf


  • Please log in to reply
21 Respuesta(s) a este Tema
Metin2

#1
KeKo

KeKo

    Forero Experto

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.475 Mensaje(s)
Buenas zoneros y zoneras, aqui estoi de nuevo con una nueva leccion del curso de creacion de quests dedicada a mi colega akroma y a sema que tenen problemillas con los qfs

Pc.setqf, pc.getqf... pc.set... pc.geee.... De que estabamos hablando?

Uno de los comandos que mas utilizareis cuando os esteis haciendo/revisando quests serán los famosos:

Please Login or Register to see this Hidden Content


Para explicaros como funcionan estos tan problematicos comandos recurrire de nuevo al bonito simil que utilice cuando mi buen amigo Jordan me pidio una explicacion sencilla para entender de una vez estos comandos. Antes de hacerlo, quiero recordaros un dato muy importante: estos dos comandos llevan pc.algo así que tened muy en mente que afectan siempre a un jugador, que es el que active el qf en la quest y NO ningun otro.

Bien, ahora pensad en un posit (esas notitas de colores que puedes pegar donde quieras) y pensad en una pared en la que podemos pegar nuestro posit. Ahora convirtamos esto a lua, nuestro posit es el pc.setqf y el pc.getqf y nuestra pared es el jugador que activara el qf.

Que narices tiene que ver un posit en todo esto keko?

Esta claro que en lua no hay posits, pero lo que busco con esta comparacion es que pilleis el concepto del qf. Bueno volvamos a donde lo dejamos: tenemos nuestro pj al que le queremos pegar un posit (es decir ponerle un qf) así que cojemos un boli y pensamos algo que poner en nuestro posit, es decir, pensamos que valor le vamos a dar al qf si pensamos en lua.

Una vez ya lo hemos pensando, escribimos lo que queriamos y lo pegamos en la pared, lo que en lua corresponderia con darle un valor al qf y asignarselo al personaje.

Pero esto no se para aquí, para que sirve un posit? Para acordarnos de algo!! Por lo tanto si seguimos con la comparacion al lua, habra veces que necesitemos comprobar que valor tiene nuestro qf para hacer condiciones con el. Además, si queremos cambiar lo que pone el posit, simplemente lo tachamos y ponemos otra cosa; en lua también podemos modificar el valor que tiene el qf de nuestro personaje.

No me he enterao de una mierda , que hago con el posit?

Aver, eso fue una comparación, para los que aun esteis buscando un boli pa escribir algo en el posit os haré un resumen de todo lo que os he estado intentando explicar hasta ahora:

El comando 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.

Bueno, ahoara que ya lo he explicado en plan posit y en plan redactado vamos a profundizar un poquito en el uso de estos dos comandos.

Ummm, como decias que le asignaba el valor a eso?

Pues es muy sencillo, lo primero es distinguir entre:

Please Login or Register to see this Hidden Content


Please Login or Register to see this Hidden Content


El pc.setqf siempre se usará para ASIGNAR un valor, mientras que el pc.getqf se encargará de CHEQUEAR cuál es el valor que tiene el qf que hemos puesto con el setqf.

Bien, una vez sabemos esto procederé a explicaros cual es la sintaxis de un pc.setqf:

Please Login or Register to see this Hidden Content


Del que seria un ejemplo este:

Please Login or Register to see this Hidden Content


En este caso el jugador tendra asignado el valor "kekomola" con una cantidad igual a 5. El nombre que tenga el qf es el que vosotros querais!

Me gustaria discernir entre dos tipos de setqfs:

Please Login or Register to see this Hidden Content


El primero de ellos es un setqf que se utiliza cuando la cantidad que le vamos a dar al valor es fija, mientras que el segundo se utliza cuando la cantidad va a ir aumentando cada vez que utilicemos el setqf.

Por lo tanto, en el primer caso siempre que activemos esa parte de la quest el valor kekomola sera igual a 2. Sin embargo, cada vez que activemos el segundo caso el valor kekomola irá aumentando en 1 (es decir la primera vez que lo usemos la cantidad sera 1, lo volveremos a usar y sera 2, luego 3, etc).

Y por no faltar ahora os explicaré la sintaxis del pc.getqf: como este comando solo se utiliza en condiciones (ya que su funcion es la de chequear) no tiene la misma sintaxis que el setqf:

Please Login or Register to see this Hidden Content


Este comando lo usareis combinado con el estructurador if, por lo que ira escrito el pc.getqf("nombre") y luego el doble simbolo de igualdad (tipico de las comparaciones) y la cantidad del valor.

Vale ya se asignar valores, ahora de que me sirve esto?

Pues los setqf son unos de los comandos mas utilizados en las quests ya que permiten crear condiciones que van cambiando segun lo que va haciendo el personaje. Veamos un ejemplo:

Please Login or Register to see this Hidden Content


En esta cada vez que usas el item te auemnta en 1 el qf:

Please Login or Register to see this Hidden Content


Por lo tanto ponemos una condicion para diferentes del mismo:

Please Login or Register to see this Hidden Content


De ese modo, dependiendo de cuantas veces hayamos usado el item dira algo diferente cada vez.

Subamos la dificultad, convirtamos funciones en qfs:

Bien, ahora que habeis visto un ejemplo de los qfs me toca enseñaros un paso mas, que seria utilizar funciones que recojen un dato del personaje y asignar el valor de ese dato a un qf. Para ello haremos lo siguiente:

Please Login or Register to see this Hidden Content


Puede que a alguno le suene eso, ya que es la base del sistema de mascotas que cuando le das a control+h se sube al caballo en vez de subirse a la mascota. Pero lo importante para nuestra explicacion es el hecho de que si creamos un local que recoja un dato mediante una funcion:

Please Login or Register to see this Hidden Content


Luego podemos asingar ese valor al qf:

Please Login or Register to see this Hidden Content


Entonces vamos a seguir desarrolando esa mini quest de sistema de mascotas, metiendo mas qfs:

Please Login or Register to see this Hidden Content


Bien, que ha pasado aqui? Pues varias cosas la verdad, vayamos de una en una:

Please Login or Register to see this Hidden Content


Aqui ponemos una condicion de que este qf sea igual y a 0, es decir, que aun no hayas usado nunca el item ya que cuando lo uses pondras cantidad 1 a ese valor:

Please Login or Register to see this Hidden Content


Ahora como ya has usado el item el qf se ha vuelto 1, por lo que si vuelves a usar el item ya no estaras cumpliendo la condicion de que sea igual a 0, y la otra parte de la condicion (lo que va despues del return+end) se activa. Una vez se activo eso volvemos a poner cantidad 0 al qf:

Please Login or Register to see this Hidden Content


Por lo tanto os habreis dado cuenta de que este objeto va alternando dos cosas: lo usas una vez y hace la primera, lo usas otra vez y hace la segunda, lo usas una tercera y vuelve a la primera y así constantemente.

Además, aqui tambien hemos jugado con el nivel del caballo:

Please Login or Register to see this Hidden Content


Primero miramos cual es con el local, y luego se lo asignamos al qf. Una vez asignado lo cambiamos con el comando horse.set_level e invocamos la mascota. Pero que pasa cuando guardamos la mascota? Queremos que el caballo vuelva a estar a su nivel, asi que hacemos lo siguiente: como ya tenemos nuestro qf con el nivel del caballo antes de cambiarlo, cogemos el valor de ese qf y lo convertimos en un local que luego damos de valor al horse.set_level

Please Login or Register to see this Hidden Content


Vale, pues a otra cosa no?

Ahora que ya entendeis como mezclar una funcion que recoje datos con un qf ya solo me quedaria explicaros como podeis hacer para mostrar la cantidad de un qf en una quest:

Please Login or Register to see this Hidden Content


Esta sencilla quest lo que hace es que cada vez que matas un mob suma un punto al qf mobs, y ademas por el chat te muestra cuantos puntos lleva ese qf:

Please Login or Register to see this Hidden Content


Para ello lo mete entre ".. .." como cuando os enseñé a mostrar el valor de un local en una quest.

Por supuesto no tenemos xq mostrar el valor del qf en el mismo when ni en la misma quest que en la que le damos un valor, ya que el juego almacena para siempre el valor que tiene un qf.

Please Login or Register to see this Hidden Content


Y bueno eso es todo, espero que os haya sido útil este capítulo para todos aquellos que teniais dudas utilizando los pc.setqf y pc.getqf
  • A fuuton97, Santy!., Rinnegan y a 5 más les gusta esto

#2
fuuton97

fuuton97

    Forero Profesional

  • Miembro
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 610 Mensaje(s)
Excelente, capítulos para aprender cada día más.

#3
Akroma

Akroma

    Forero Profesional

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 719 Mensaje(s)
bien, echo keko, aunque a base de palos acabe viendo como se hacian. xD!

#4
SeMa™

SeMa™

    Forero Experto

  • Developer
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.795 Mensaje(s)
  • Sexo:Indefinido
Biennnnn!!!!!!!!!!!!!!!!!! xDDDDDDDDDDD aver si me entero con esto de una vez por que vamos... xd

#5
KeKo

KeKo

    Forero Experto

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.475 Mensaje(s)

bien, echo keko, aunque a base de palos acabe viendo como se hacian. xD!


Aun así mal no te viene leerte el capi :trolldad:

#6
PACI

PACI

    Forero Experto

  • Developer
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.599 Mensaje(s)
  • Sexo:Indefinido

Please Login or Register to see this Hidden Content


Aqui no te falta un " ?
  • KeKo likes this

"Wash the poison from of my skin, show me how to be whole again."

"I wanna heal, I wanna feel like I'm close to something real."

"I don't know how I got this way, I'll never be alright."

_________________________________________________________________________________________________________

"I guess words are a mothafucka, they can be great. Or they can degrade, or even worse they can teach hate."

"Now you shut up bitch, I am talkin', thought I was full of horseshit, and now you fuckin' worship the ground in which I am walkin'."


#7
KeKo

KeKo

    Forero Experto

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.475 Mensaje(s)

Please Login or Register to see this Hidden Content


Aqui no te falta un " ?


Cierto, la verdad esque a las dos de la mañana ya ni se que escribo xd

#8
PACI

PACI

    Forero Experto

  • Developer
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.599 Mensaje(s)
  • Sexo:Indefinido

Cierto, la verdad esque a las dos de la mañana ya ni se que escribo xd

xD Le pasa a cualquiera, de todas formas, Gracias por este capitulo, en serio no entendia nada de los qf xD

"Wash the poison from of my skin, show me how to be whole again."

"I wanna heal, I wanna feel like I'm close to something real."

"I don't know how I got this way, I'll never be alright."

_________________________________________________________________________________________________________

"I guess words are a mothafucka, they can be great. Or they can degrade, or even worse they can teach hate."

"Now you shut up bitch, I am talkin', thought I was full of horseshit, and now you fuckin' worship the ground in which I am walkin'."


#9
Croqueta

Croqueta

    Experimentado

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 309 Mensaje(s)
bien echo

#10
Rinnegan

Rinnegan

    Experimentado

  • Editor de Clientes
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 385 Mensaje(s)
Keko estuve revisando y al poner if pc.getqf("demonio2") == 10 then en un timer o que se active al loguearse no funciona solo funciona si se pone 0 if pc.getqf("demonio2") == 0 then si se pone otro numero que no sea 0 no arranca la quest, alguna solucion?

#11
KeKo

KeKo

    Forero Experto

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.475 Mensaje(s)

Keko estuve revisando y al poner if pc.getqf("demonio2") == 10 then en un timer o que se active al loguearse no funciona solo funciona si se pone 0
if pc.getqf("demonio2") == 0 then si se pone otro numero que no sea 0 no arranca la quest, alguna solucion?


No hay ningun motivo para que un qf deje de funcionar si deja de ser 0 u.u, es decir un qf no es una funcion de unico valor (1 o 0) si no que puede ser cualquiera así que debe ser que no le das el qf 10 al personaje antes de que se active.

#12
♧ BaKo ♧

♧ BaKo ♧

    Experimentado

  • Miembro
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 217 Mensaje(s)
Excelente, cada dia con algo nuevo !

#13
Rinnegan

Rinnegan

    Experimentado

  • Editor de Clientes
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 385 Mensaje(s)
pues la verdad es que a mi no me funciona, lo tengo en 10 pongo el if en 10 en el login y al loguearse no lo reconose, cojo la misma quest pero la pongo en un item y ahi si lo coje estando todavia en 10 osea que error mio no es, keko no podrias hacer un test y poner el qf al logearte pero que no sea 0 y ver si te funca? por que realmente a mi no me funciona y lo estoy haciendo bien.

#14
PACI

PACI

    Forero Experto

  • Developer
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.599 Mensaje(s)
  • Sexo:Indefinido
Bueno, perdon por mi ignorancia, pero, no me he enterado de nada del pc.setqf("nombre", valor) :pokerface:

"Wash the poison from of my skin, show me how to be whole again."

"I wanna heal, I wanna feel like I'm close to something real."

"I don't know how I got this way, I'll never be alright."

_________________________________________________________________________________________________________

"I guess words are a mothafucka, they can be great. Or they can degrade, or even worse they can teach hate."

"Now you shut up bitch, I am talkin', thought I was full of horseshit, and now you fuckin' worship the ground in which I am walkin'."


#15
KeKo

KeKo

    Forero Experto

  • Quest Master
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.475 Mensaje(s)

Bueno, perdon por mi ignorancia, pero, no me he enterado de nada del pc.setqf("nombre", valor) :pokerface:


Pues veamos, cada qf debe tener un nombre que es lo que se pone en el pc.setqf("nombre") y ademas debe tener un valor, que es lo que se pone despues del nombre. Hay dos casos: cuando el valor es fijo y cuando el valor va cambiando cada vez que se activa el qf.

1 - Si es fijo:

Please Login or Register to see this Hidden Content


2 - Si va cambiando:

Please Login or Register to see this Hidden Content


Espero que te resuelva la duda :D
  • PACI likes this

#16
PACI

PACI

    Forero Experto

  • Developer
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.599 Mensaje(s)
  • Sexo:Indefinido

Pues veamos, cada qf debe tener un nombre que es lo que se pone en el pc.setqf("nombre") y ademas debe tener un valor, que es lo que se pone despues del nombre. Hay dos casos: cuando el valor es fijo y cuando el valor va cambiando cada vez que se activa el qf.

1 - Si es fijo:

Please Login or Register to see this Hidden Content

Gracias, el que tenia duda era ese pero ya me la has esclarecido :)

"Wash the poison from of my skin, show me how to be whole again."

"I wanna heal, I wanna feel like I'm close to something real."

"I don't know how I got this way, I'll never be alright."

_________________________________________________________________________________________________________

"I guess words are a mothafucka, they can be great. Or they can degrade, or even worse they can teach hate."

"Now you shut up bitch, I am talkin', thought I was full of horseshit, and now you fuckin' worship the ground in which I am walkin'."


#17
RafaVK

RafaVK

    Experimentado

  • Miembro
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 208 Mensaje(s)

Excelente perfecto para hacer un contador para sacar algunas estadísticas del juego de los user  (L)

Me sale una pregunta a la luz....

 

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 ?



#18
PACI

PACI

    Forero Experto

  • Developer
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 1.599 Mensaje(s)
  • Sexo:Indefinido

Excelente perfecto para hacer un contador para sacar algunas estadísticas del juego de los user  (L) Me sale una pregunta a la luz....   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 Todas las funciones cuya inicial sea pc se refiere a los pj. En el caso de los flags, cualquier pj que ejecute una quest donde se le es atribuido un flag.
  • RafaVK likes this

"Wash the poison from of my skin, show me how to be whole again."

"I wanna heal, I wanna feel like I'm close to something real."

"I don't know how I got this way, I'll never be alright."

_________________________________________________________________________________________________________

"I guess words are a mothafucka, they can be great. Or they can degrade, or even worse they can teach hate."

"Now you shut up bitch, I am talkin', thought I was full of horseshit, and now you fuckin' worship the ground in which I am walkin'."


#19
Hawk Server's

Hawk Server's

    Gran forero

  • Miembro
  • MarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcarMarcar
  • 516 Mensaje(s)

Y si digamos que al llegar a 10 el qf quiero que se reinicie y comience otra vez desde 0 como se hace?



#20
Kurosaki

Kurosaki

    Forero

  • Miembro
  • MarcarMarcarMarcarMarcarMarcar
  • 88 Mensaje(s)

y en donde se guarda ese QF? en la base de datos.

Ejemplo:
Si en una quest al PJ el doy el
setqf("drink_drug",0)

En donde se guarda ese valor?
Ya que, debe de estar guardado, si no seria imposible reconocer ese valor cuando se vuelva a loguear.

 

NO ENCUENTRO DONDE SE GUARDA >.<






0 Usuario(s) están leyendo este Tema

0 miembro(s), 0 invitado(s), 0 usuario(s) anónimo(s)