Jump to content
Sign in to follow this  
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

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.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...