Jump to content
caanmasu

¿Qué tal mi quest más ambiciosa?

Recommended Posts

Hola a todos

Quiero mostrarles algo pero tampoco quiero ilusionarlos; no voy a compartir lo que he hecho, solo lo voy a mostrar y que den su opinión.

 

Lo llamé Instant Bonus.

La necesidad surge de lo demorado que es dopar un objeto. Más o menos sacar una media de 50 puede durar días completos, inventarios llenos de cambios e ir llenando a medida que se van acabando, y arrastrando uno a uno los cambios. Incluso para hacer los 5 bonus perfectos dura bastante, dependiendo de los niveles del bonus (5 niveles, por ejemplo en STR, 2, 4, 6, 8, 12); si los bonus tienen 5 niveles y quieres tenerlos todos al máximo solo te digo que es probablemente imposible. Aunque en los servidores privados esos niveles los "reducen" (por ejemplo en STR: 8, 10, 12) y será más fácil tener los bonus al máximo.

Bien pues, luego de la idea del Switchbot, aunque redujo muchísimo el tiempo, todavía sigue quedado. Más o menos el Switchbot al máximo de velocidad hace como 3 cambios por segundo (si la estadística no me falla). Pues serían en un minuto 180 cambios, más o menos un pack por minuto. En una hora 10800 cambios, son 54 packs de 200 bonus y en el inventario (4 inventarios clásicos) caben 5x8 = 40, 40x4 = 160, 160 - 3 (3 es el tamaño del ítem), daría más o menos que en 3 horas se acaban los 4 inventarios llenos de cambios para un solo objeto en el Switchbot.

Es decir que aproximadamente en 3 horas, en un solo objeto, se gasta 32400 cambios.

En mi idea, ya puesta en práctica y funcional (ya lo verán en el vídeo), hará 1 millón de cambios en 1 a 5 segundos. Lean bien, un millón de cambios en un segundo. Mi InstantBonus en sacar los bonus en un arma con media y habilidad es de 100 mil a 300 mil veces más rápido que el Switchbot. ¿Impresionante, no?

Es diferente para los objetos normales (sin media y habilidad) porque usan métodos diferentes. Esos sí hacen 10 mil cambios en unos 5 segundos. Aún así es muy bueno aunque no tanto como los de media.

Lo que verán en el vídeo no es fake. Es algo ya creado, es real. Aún le falta agregarle el ítem.set_value y restringir la cantidad en los input pero eso no será tarea difícil. También me falta agregarle la probabilidad (player.item_attr columna prob) que aún no sé cómo se usa. Si alguno sabe cómo se usa esa prob me deja un mensajito por favor  🙂

 

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

 

Share this post


Link to post
Share on other sites

Esta bueno, aunque yo me sentiria inseguro con eso jajaj al no saber que valores van pasando, como que no hay transparencia jajaj, pero bueno, es una buena opcion de todas maneras (obviamente depende de la economia de cada metin por el valor del precio), me gusta 👍

Share this post


Link to post
Share on other sites
hace 22 horas, Lord Ahriman - 3D Modeler dijo:

Esta bueno, aunque yo me sentiria inseguro con eso jajaj al no saber que valores van pasando, como que no hay transparencia jajaj, pero bueno, es una buena opcion de todas maneras (obviamente depende de la economia de cada metin por el valor del precio), me gusta 👍

Hola amigo

jajaja es verdad lo de la transparencia, te explicaré cómo funciona para que no te sientas inseguro xD

En sí es un simulador, funciona de esta manera:

Al arrastrar el objeto al alquimista determina el id del objeto, según el id va a tomar el addon_type.

Primero revisa si el objeto tiene addon_type igual a -1 (o sea, que tiene bonus de media y habilidad). Si es así, entonces sale el menú de cuál media quieres sacar, habilidad y cuántos cambios quieres poner.

Luego hay una función donde saco media y habilidad.

Ver:

 

Hará tantos ciclos hasta que llegue al número de cambios que pusiste o se cumpla la condición de que la habilidad o media que sacó el simulador es mayor o igual que la media o habilidad que pusiste. Después de encontrar la media o habilidad, habrá una función donde genera 5 cambios aleatorios (ahora explico cómo funciona) y de esos 5 tomo los tres primeros en caso de que haya salido bonus regular (media > 0 y hab > 0). Si salió media = 0 y hab != 0 entonces tomo 4 de los cambios generados, y lo mismo para la hab = 0, y así se obtienen los 5 bonus.

 

Luego para el caso de los otros objetos de addon_type != -1,

Simplemente generará 5 bonus de la siguiente manera:

Creé una función que se llama verificar() donde toma los applytype# de ese ítem (del item_proto) y se guardan en un arreglo. Luego esos serán los bonus "prohibidos" o bloqueados. Para que cuando se haga la selección de bonus, no tome esos. O sea, si es una Tritón, no tomará velocidad de ataque (igual esa no saldrá porque no está en item_attr para armas), fuerza contra humanos ni fuerza contra demonios.

Luego de tomar todos los bonus menos los prohibidos, el siguiente paso es tomar todos los bonus disponibles para ese ítem. Y ahí necesito sacar el type y sub_type.

Si el type es 1, entonces es un arma y no importa el sub_type porque todas las armas tienen los mismos bonus disponibles.

Si el type es 2 entonces no es un arma y hay que clasificarlo entre collar, brazalete, armadura, etc. con el sub_type.

Sabiendo ya el subtype podemos sacar los bonus disponibles junto con los niveles de los bonus. 

Y la función retornará los bonus disponibles sin los prohibidos, para el objeto puesto encima del NPC.

Luego creé una función llamada agregar_bonus donde saco 5 types aleatorios diferentes y 5 niveles diferentes de esos types. La variable aleatoria es uniforme porque no agregué la parte de la prob del item_attr, eso está en revisión.

Esa función retorna 5 tipos de bonus cada uno con su nivel (aleatorio uniforme entre 1 y 5 cada uno de los bonus)

Luego sí viene la parte interesante que es cuando se comparan.

Se hace un ciclo hasta la cantidad de cambios o hasta que los bonus retornados de agregar_bonus sean iguales o mayores a cada uno de los bonus elegidos por el jugador. Obviamente validé de que no sean en orden aunque eso implica 5 veces menos rendimiento.

Y cuando pase lo segundo, se agregará el bonus al objeto con item.set_value

 

En resumen

 

Validaciones:

1. Bonus prohibidos o bloqueados. Los bonus que ya vienen en el proto en applytype no saldrán como bonus disponibles o en otras palabras, los bonus que vienen fijos en el objeto no saldrán.

2. Bonus válidos. Se seleccionan los bonus del item_attr del sub_type del objeto y excluye los prohibidos.

3. Bonus sin repetir. El bonus elegido aleatoriamente no vuelve a salir.

4. Select con bonus válidos. Aparecerá en el seleccionador los bonus que tienen la posibilidad de salir en el objeto junto con los posibles valores que pueden salir.

 

Optimizaciones:

Para mejorar el rendimiento del simulador hice lo siguiente para la comparación de los 5 bonus generados con los elegidos:

1. En el primer type generado, si el primer type del bonus generado es igual a algún type del bonus elegido, entonces se hará la siguiente condición:

Si el valor del bonus generado es mayor o igual al bonus elegido, entonces guardar y continuar con el siguiente type bonus.

En el segundo type generado, si sucede lo mismo que en la primera pero para el segundo bonus generado, entonces guardará y continuará con el tercer type.

Y así hasta el 5. Qué ocurre si no sucede lo mismo? pues continuará con el siguiente cambio o iteración.

Algo más práctico:

1     -En este caso el primer bonus elegido por ti, salió en los bonus generados y el valor >= al que elegiste.

2     -Acá salió otro bonus válido

3     -Acá salió otro bonus válido. Ya van 3 en la misma iteración o cambio.

1     -Acá perdió la racha. O sea, el cuarto bonus tuyo no apareció dentro de la lista de los bonus generados. Y se cambiaron los bonus otra vez y apareció uno que sí coincide

1     -El siguiente bonus tampoco estaba, así que volvió a generar nuevos bonus y apareció uno que sí hace parte de los tuyos.

0    -El siguiente bonus no estuvo, así que se generaron nuevos bonus y... tu primer bonus no estuvo en la lista de bonus generados 😞

0    -Aquí sucedió lo mismo.

1     -Y así xD

2

1     -Aquí empieza a tomar el primer bonus tuyo y lo compara con los generados. El primer bonus estuvo, bien.

2     -El segundo bonus también estuvo

3     -El tercer bonus también estuvo

4     -El cuarto bonus también estuvo

5     -El quinto bonus también estuvo. Aquí se terminan las iteraciones.

De esta forma evito hacer iteraciones innecesarias.

Aunque hace 5 ciclos en cada comparación, eso está en revisión.

 

Y bueno, en la generación de bonus de media y habilidad no hay problema, está óptimo.

 

 

 

Share this post


Link to post
Share on other sites

No se como esta escrito, por lo que no puedo opinar de ello, pero bastantes ciclos simultaneos pueden tirar el servidor, y más siendo una quest.

Share this post


Link to post
Share on other sites
hace 20 horas, PACI dijo:

No se como esta escrito, por lo que no puedo opinar de ello, pero bastantes ciclos simultaneos pueden tirar el servidor, y más siendo una quest.

Hay que testearla en un sv ya con jugadores porque en verdad no sé si afecte al servidor

Share this post


Link to post
Share on other sites

Me ha gustado bastante. Sin embargo...

Estoy a favor de esto debido que ya se ha fomentado la pereza del jugador, así que no afecta en casi nada la economía, aunque sí se vería un cambio en el tema de la media y habilidad que era lo único en bonus que enorgullecía al jugador obstentar, no obstante no tiene importancia.

Por otro lado, sí se está metiendo con esto, ¿por qué no agregarle también lo que siempre se le pide a los autodopadores de la actualidad y nadie ha hecho?

El que se puedan elegir dos opciones de bonus en los ítems addon_type != -1, después de todo, aunque sea mucho más rápido, sigue gastando Yang para los Objetos Encantados.

Aunque, igualmente estoy de acuerdo que se debe de testear para que no genere problemas en ningún servidor, y la idea anterior antes puede empeorar esa situación. 😅

En fin, la idea está buena, así que espero ver que se siga mejorando, estaré al pendiente de las actualizaciones que suba.

 

🖤

Share this post


Link to post
Share on other sites
En 28/7/2019 a las 10:15, Alejandra dijo:

Me ha gustado bastante. Sin embargo...

Estoy a favor de esto debido que ya se ha fomentado la pereza del jugador, así que no afecta en casi nada la economía, aunque sí se vería un cambio en el tema de la media y habilidad que era lo único en bonus que enorgullecía al jugador obstentar, no obstante no tiene importancia.

Por otro lado, sí se está metiendo con esto, ¿por qué no agregarle también lo que siempre se le pide a los autodopadores de la actualidad y nadie ha hecho?

El que se puedan elegir dos opciones de bonus en los ítems addon_type != -1, después de todo, aunque sea mucho más rápido, sigue gastando Yang para los Objetos Encantados.

Aunque, igualmente estoy de acuerdo que se debe de testear para que no genere problemas en ningún servidor, y la idea anterior antes puede empeorar esa situación. 😅

En fin, la idea está buena, así que espero ver que se siga mejorando, estaré al pendiente de las actualizaciones que suba.

 

🖤

Hola

Debes iniciar sesión para ver el contenido del enlace en esta publicación.
, gracias por participar

Creo que te refieres a que en el switchbot haya una opción donde se pueda elegir la media y habilidad y que cuando caiga alguno de los dos valores lo tome como bonus. O sea:

Pongo una Luna y elijo 50 de media y habilidad 25. Obviamente nunca parará porque es imposible que salgan esos valores pero la idea es hacer una condición de que cuando caiga 50+ de media o 25+ de habilidad pare de cambiar los bonus.

Algo así como un "or"

Si valor_media > 50 ó valor_habilidad > 25 entonces

detener

Yo sé que si vamos por media de 50 y de pronto cambiando los bonus cae habilidad 27, lógicamente dejaríamos el bonus de habilidad y buscamos otra arma para sacarle la media otra vez.

 

Share this post


Link to post
Share on other sites
En 2/8/2019 a las 15:17, caanmasu dijo:

Hola

Debes iniciar sesión para ver el contenido del enlace en esta publicación.
, gracias por participar

Creo que te refieres a que en el switchbot haya una opción donde se pueda elegir la media y habilidad y que cuando caiga alguno de los dos valores lo tome como bonus. O sea:

Pongo una Luna y elijo 50 de media y habilidad 25. Obviamente nunca parará porque es imposible que salgan esos valores pero la idea es hacer una condición de que cuando caiga 50+ de media o 25+ de habilidad pare de cambiar los bonus.

Algo así como un "or"

Si valor_media > 50 ó valor_habilidad > 25 entonces

detener

Yo sé que si vamos por media de 50 y de pronto cambiando los bonus cae habilidad 27, lógicamente dejaríamos el bonus de habilidad y buscamos otra arma para sacarle la media otra vez.

 

Sí, esa sería la idea.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...