Jump to content

El proyecto más avanzado de base limpia que existe


caanmasu

Recommended Posts


Proyecto avanzado de base limpia


Hola
Este es un proyecto que llevo un mes desarrollando y quiero mostrarles los cambios realizados.
Mi objetivo ahora es mostrar estos cambios. Aún no he pensado en negociarlos. Quiero que me den su punto de vista por privado para ver qué se le puede seguir mejorando, teniendo en cuenta que estos files son Marty 5.7 y el objetivo es mejorarlo aún más, conservando su esencia de limpio, sin meter sistemas.
Quiero decir, esta base es para empezar a "meter sistemas", tal como hace Marty. No es una base para abrir en poco tiempo. Por lo tanto, no encontrarás sistemas como tienda offline, ItemShop, cube renewal, won, gaya, wikipedia, switchbot, aura, quest category, inventario especial, buscador de objetos, render target, etc. Tampoco modelos de skins sacados de alguna parte. Esto lo puedo llamar una "versión mejorada" de Marty Sama.
Quiero que el proyecto tenga muchas comodidades que deberían estar en cualquier base limpia.

Hasta el momento la versión actual es la 1.8, y tengo pensado sacar más versiones.
Este proyecto puede ser la base de los servidores de ahora en adelante.

También se está trabajando en una base derivada de esta, para meter sistemas y dejarla lista al público.

Escríbeme al Discord, soy caanmasu.



Notas del parche:

V1.0:
- motor de base de datos actualizado a MariaDB
- eliminado ENABLE_LOCALE_EX. Este define sirve para extender algunos archivos de textos pero había desorden en el cliente. Se han eliminado y se ha puesto su contenido en sus respectivos archivos.
- eliminado ENABLE_LOAD_ITEM_LIST_FROM_ROOT. item_list.txt ahora se carga en locale/common
- eliminados los archivos txt del locale (en cada idioma) que no se usan.
- todos los archivos que son comunes se han puesto en un nuevo .eix llamado locale_common. Se han movido allí archivos idénticos en cada idioma, logrando así optimizar mucho más el cliente. Todos los locales comprimidos pesan ahora 11 MB. Antes pesaban 140 MB.
- añadida la directiva LTCG en el proyecto UserInterface para optimizar la generación del binario en la fase de compilación.
- el locale fue dividido en tres archivos: locale, locale_common y locale_proto
- los parches como special_patch_ex, special_patch_animation, special_patch_common fueron movidos de nuevo a su carpeta padre
- agregada una carpeta en la raíz de repositorio llamada "locale multilanguage"
- se ha actualizado el proto a la nueva estructura oficial v.23.1.4
- añadidos los protos txt del oficial en share/conf/proto multilang
- extensión de sockets de 3 a 6

V1.1:
- removido ENABLE_LIMIT_TIME (código muerto de source server)
- removido login sim (código muerto de source server)
- removido FileMonitor (código muerto de source server)
- removido china intoxication event (código muerto de source server)
- removido roulette (código muerto de source server)
- removido __FISHING_MAIN__ (código muerto de source server)
- removido USE_STACKTRACE (código muerto de source server)
- fix core crash en questlua_npc.cpp, se valida puntero de npc
- removido empire_text_convert del source server. Se utilizaba para convertir los textos entre personajes de diferente reino según el nivel de habilidad de las lingüísticas.
- removido PythonNetworkDatagram (código muerto del source client)
- removido GAIDEN (código muerto del source client)
- removido CHECK_LOD (código muerto del source client)
- removido _TEST (código muerto del source client)
- removido DYNAMIC_POOL_STRICT (código muerto del source client)
- removido CHECKSUM_CHECK_MD5 (código muerto del source client)
- removido __RENDER_SLOT_AREA__ (código muerto del source client)
- removido __UNITTEST__ (código muerto del source client)
- removido CHECK_LATEST_DATA_FILES (código muerto del source client)
- removido ATTACK_TIME_LOG (código muerto del source client)
- removido ENABLE_DAEMONPROTECTION (código muerto del source client)
- removido g_create_position_canada (código muerto del source server)
- fix: ENABLE_MOUNT_COSTUME_EX_SYSTEM, las monturas ya no retroceden
- fix: en una guerra de gremios ya no se puede eliminar el gremio si hay una guerra en curso
- FREEZE_WHEN_DRAGGING_SCREEN_FIX: al arrastrar la ventana del juego ya no se congela la pantalla
- __BL_SAVE_CAMERA_MODE__: el estado de cámara cercana/lejana ya se guarda
- eliminadas las tablas de la base de datos log: GameTimeLog, dragon_slay_log, hack_crc_log, hackshield_log, invalid_server_log, pcbang_loginlog, vcard_log.
- eliminadas las tablas de la base de datos account: block_exception, iptocountry, string
- eliminadas las tablas de la base de datos player: pcbang_ip, sms_pool
- "Cannot find item by 0" fix. Esto ocurría cuando se eliminaba un ítem de item_proto.txt y existe ese ítem en la tabla player.item
- fix: cuando se elimina dinámicamente instancias character, no tenía en cuenta los metines.
- fix leak: en CSpeedTreeForest::GetMainTree. Si no se carga el tree, asigna nulo el puntero
- fix: el cursor de la rotación de la cámara ya no se queda en la ventaja del juego cuando se cambia de ventana
- fix: __ENABLE_SHAMAN_ATTACK_FIX__, la chamana no sincronizaba bien los ataques cuando golpea, es decir, de cada dos golpes, solo uno hace daño
- fix: ahora valida la monta a caballo cuando se va a minar
- fix: aura de espada y hoja encantada no se ejecutan cuando no hay arma puesta
- fix: cuando se hace kill en libre, la duración del nombre café pasa de 30 a 60
- fix: si un personaje transformado de alguna manera utiliza una habilidad, no hará daño
- fix: cambiada la errada fórmula de críticos
- eliminada la reducción de daño por invasión de reino
- fix: cuando muere un personaje con estola equipada se ve la estola en una posición extraña
- fix: cuando muere un personaje, ahora se le quitan los efectos negativos
- fix: cuando un personaje mata a otro en la guerra de reinos, no cuenta el punto si tiene la misma IP
- fix: validaciones con algunos punteros para evitar core crash
- mejorada la forma como se ordena el ranking de gremios en el Guardián
- cuando el líder vaya a entrar a guerra, ya no le pide confirmación
- fix: en cube, si uno de los objetos necesarios lo tiene equipado el personaje, lo omite
- fix: para prevenir errores, ahora el servidor no encenderá si hay un vnum inexistente en cube.txt
- fix leak: buf.reset() en SECTREE_MANAGER::SendNPCPosition
- fix: al desmontar, ahora actualiza los puntos de exp, yang, estamina, etc. y se repara el bug de HP y SP.
- removido __20040725_CAMERA_WORK__ (código muerto del source client)
- @fixme1000 (src server): cuando una quest termina de ejecutarse, deselecciona el ítem que haya tenido seleccionado
- @fixme1001 (src server): agregado la omisión de puertas (ya había metines) en CHARACTER::SetPosition. Los objetos estáticos no tienen position como "quedarse de pie", "montar", "en pelea", "pescando", etc.
- @fixme1002 (src server): para cambiar de reino ahora automáticamente el personaje se sale del grupo para evitar errores
- @fixme1003 (src server): no se podrá usar emociones mientras el personaje se mueve o ataca
- @fixme1004 (src server): agregadas algunas habilidades pasivas que hacía falta en CHARACTER::CanUseSkill
- @fixme1005 (src server): espíritu de la llama en el caballo ya hace daño
- @fixme1006 (src server): cuando el ninja se hace invisible, los monstruos agresivos lo ignoran
- @fixme1007 (src server): cuando no hay bonus en la tabla item_attr_rare, el servidor no iniciaba
- @fixme1008 (src server): cuando un GM daba rango con set align, se le cambiaba a sí mismo
- @fixme1009 (src server): cuando se cambia de habilidades no se le quitaban los efectos buenos
- @fixme1010 (src server): los personajes en modo espectador ya no recibirán daño
- @fixme1011 (src server): cuando un personaje se monta en una montura o caballo, se activa el AFFECT_MOUNT; si se baja de ella o se desconecta, se elimina el AFFECT_MOUNT. Al eliminarse el AFFECT_MOUNT, solo actualizará el packet y no calculará de nuevo los puntos, esto previene el retroceso de la montura.
- @fixme1012 (src server): pc.select_vid con validación de puntero en ch para evitar core crash
- @fixme1013 (src server): no había validación de longitud del nombre del lado del servidor
- @fixme1014 (src server): cabo de valor aumenta de 50% a 100% probabilidades de atracción y el rango pasa de 50 a 100 de distancia.
- @fixme1015 (src server): tipo de guerra -1 corregido
- @fixme1016 (src server): puntero no eliminado (fuga de memoria) en el almacén
- @fixme1017 (src server): los monstruos no se volverán agresivos cuando tengan veneno o sangrado
- @fixme1018 (src server): puntero no eliminado (fuga de memoria) en las tiendas de NPC
- @fixme1019 (src server): al obtener el vid del líder del grupo desde lua, ahora se valida si existe el grupo para evitar core crash
- @fixme1020 (src server): al usar la función de buscar un personaje por su nombre, ya no distingue entre mayúsculas y minúsculas
- @fixme1021 (src server): espíritu de la llama agregado dentro de RemoveGoodAffect
- @fixme1022 (src server): validación de name y arg en clear_server_timer
- @fixme1023 (src server): un objeto de object_proto si está ubicado en un mapa que no existe lo ignorará
- ENABLE_CPP_PSM: la carga de modelos y efectos pasa del pack del cliente al binario. Como resultado, la velocidad del cliente es mucho mayor
- CPP_PSM_LOADING (constInfo): si está activo, utilizará la imagen de carga especial sin fondo. Si está inactivo, utilizará la misma imagen de carga habitual, aquella que ocupa toda la pantalla
- CPP_PSM_LOADING_GAGE (constInfo): si está activo, utilizará la barra de carga en la pantalla de carga, si no, se eliminará completamente. Esto solo funciona cuando CPP_PSM_LOADING está inactivo, haciendo que la pantalla de carga sea una imagen completa y se aprecie mejor.
- @fixme1000 (src client): eliminada la bandera de reino en NPCs y pets que se muestra cuando el personaje es GM
- ENABLE_FIX_MOBS_LAG: disminuye el lag (fps) drásticamente cuando hay muchos monstruos
- eliminadas las pociones que recibe el personaje cuando sube un step (25% de su nivel)
- fix: StripColor: cuando se hacía un anuncio en el juego con color, se mostraba el código del color
- un avance de la herramienta Py Tools. Se agregaron archivos con valores de los protos que no quedan guardados cuando se descompila el proto oficial.
- fix: la velocidad de la ninja al lanzar flechas era mucho mayor que la del ninja (hombre). Ahora el ninja hombre tiene la misma velocidad que la ninja al lanzar flechas.
- @fixme1024 (src server): curación y disipar hace mucho lag cuando dos o más personajes lanzan la habilidad al mismo tiempo
- @fixme1002 (src client): no había sonido luego de teletransportarse
- @fixme1025 (src server): no había música en mazmorras
- @fixme1026 (src server): los objetos con tiempo de expiración ahora seguirán corriendo el tiempo cuando se guarden en el almacén
- @fixme1027 (src server): los monstruos agresivos no podrán quedarse en una zona de paz como las plazas
- @fixme1028 (src server): al recibir veneno o sangrado y se cambia de personaje, el efecto se quitaba
- BL_SORT_LASTPLAYTIME: ordena los personajes en modo descendente de tiempo de juego en la ventana de seleccionar personaje
- agregada la quest function pc.go(x, y)
- BL_OFFLINE_MESSAGE: cuando un personaje recibe mensajes y está desconectado, se guardarán en caché del servidor hasta que el personaje vuelva a conectarse. Al guardarse el mensaje el caché, si el servidor se reinicia, estos mensajes se eliminarán.

V1.2:
- SKILL_COOLTIME_UPDATE: cuando un personaje muere, la carga de habilidades se reinicia
- LINK_IN_CHAT: se podrá copiar y pegar un link, y a su vez abrir el link desde el juego
- un personaje cuando escriba por Llamar, aparecerá [MP] donde al hacer clic, se abrirá la ventana de chat con ese personaje
- removido el código de billing (src server). Es un código que fue usado para el login.
- removido el código del sistema de monarca (src server)
- removido el código de threeway_war (guerra de reinos, src server) o también conocido como forked road
- el tiempo de espera mientras cargan las letras en la ventana de película (quest) pasa de 10 a 0.
- @fixme1002 (src client): las texturas se difuminaban cuando se abría el cliente en modo administrador (todos los clientes abren con administrador)
- @fixme1003 (src client): al golpear a un metin no hace motion de daño
- NORMAL_ROTATION_SPEED 2400.0f: la velocidad de rotación por defecto pasa de 1200 a 2400
- MOUNT_ROTATION_SPEED 1200.0f: la velocidad de rotación del caballo pasa de 300 a 1200
- MULTIPLE_DAMAGES: agregados los daños múltiles para jugadores, es decir, si un personaje ataca a otros dos o más al mismo tiempo, se mostrará el daño causado en cada uno. No fue puesto en montruos para evitar lag y es innecesario.
- BLOCK_AUTO_ATTACK_PLAYER: no se podrá usar ataque automático en jugadores
- ENABLE_EMOTION_HIDE_WEAPON: cuando se ejecuta una emoción mutua, se esconderá el arma
- eliminado de la base de datos account las tablas: GameTime, GameTimeIP, GameTimeLog
- ENABLE_MESSENGER_TEAM: se mostrará la lista de GMs en el panel de amigos
- CROSS_CHANNEL_FRIEND_REQUEST: se habilita agregar amigos en diferentes canales y cores
- ENABLE_IGNORE_LOWER_BUFFS: las auras dadas en un personaje que ya tiene auras, se omitirán si sus valores son menores. Resuelto el bug con la habilidad Remolinos, solo tomaba el primer bonus.
- __IMPROVED_LOGOUT_POINTS__: cuando un personaje se desconecta, se actualiza el tiempo de juego y stats
- removido el código de candidate (monarca) del cliente
- @fixme1029 (src server): resuelto el bug "SYSERR: operator(): CFuncShoot: I don't know this type [107] of range attack.". La Llamada del relámpago hace un ataque tipo shoot desde skill_proto pero en server no lo reconoce
- @fixme1030 (src server): resuelto el error "DragonLair: Dragon killed by nobody". Siempre aparece si el personaje que mató al dragón no tiene gremio. Esto no tiene sentido.
- @fixme1031 (src server): cuando el daño recibido es menor a 0, ya no lo muestra en el syserr.
- YANG_CHAT: agregada una ventana de yang recibido que se puede mostrar y ocultar.
- @fixme1033 (src server): se envían 3 parámetros en el string pero se esperan 4
- @fixme1034 (src server): marca como error cuando un personaje llega a tener 50 puntos en robo de HP o SP. Hay un límite que es 50 y ese límite se mantiene
- @fixme1035 (src server): no es un error, avisa exceso de límite de los bonus MALL_ATTBONUS y MALL_DEFBONUS cuando excede los 50 puntos.
- @fixme1036 (src server): no es un error, avisa exceso del límite de los bonus premium (MALL) o ataque físico mágico % cuando excede de 100 puntos
- @fixme1037 (src server): no es un error, avisa exceso del límite del bonus POTION cuando supera los 100 puntos
- __BL_PARTY_POSITION__: en un grupo se podrán ver las posiciones de los integrantes en el mapa grande
- ENABLE_INVISIBLE_WITHOUT_COLLISIONS: cuando el personaje es invisible (GM) o tiene Stealth activado, podrá atravesar monstruos y jugadores
- ENABLE_PLUS_ICON_ITEM: los equipamientos de refinamiento (+0, +1, +2, ..., +9) mostrarán el nivel de refinamiento en el ícono
- TOOLTIP_IMAGE_RACES: en la ventana de los ítems al pasar el cursor, ya no aparecerá en texto las razas que puede ser equipado sino se usarán emojis
- __BL_CLEAR_CHAT__: un botón en el chat general para vaciar la conversación
- flag block_hp_potion en dungeon para bloquear recuperación de HP
- ENABLE_GUILD_LEADER_GRADE_NAME: muestra arriba de la cabeza del personaje si es el líder del gremio o la mano derecha (comandante)
- ENABLE_DATETIME_UNDER_MINIMAP: muestra la hora del servidor debajo del minimapa
- __BL_SAFEBOX_MONEY__: sistema que almacena el yang en el almacén
- ENABLE_REFINE_PCT = True: habilito que se muestre la probabilidad de éxito en el refinamiento
- SHOW_REFINE_ITEM_DESC: muestra el tooltip con la descripción del objeto que se necesita en el refinamiento
- ITEM_CHECKINOUT_UPDATE: sistema que permite mover un objeto de un inventario a otro con un solo click, por ejemplo, del inventario al almacén y viceversa. Esta es la alternativa a arrastrar los objetos.
- ENABLE_AUTO_REFINE: da la opción de cerrar o no, la ventana de refinamiento para evitar arrastrar cada vez el objeto que se quiere mejorar

V1.3:
- REMOVE_SAFEZONE_COLLISION: elimina la colisión con npcs y jugadores en zonas seguras como plazas
- ENABLE_NO_CLEAR_BUFF_WHEN_MONSTER_KILL: cuando un personaje muere, volverá a tener sus efectos positivos. Por ejemplo, aura de espada, bendición, etc.
- ENABLE_TAB_NEXT_TARGET: característica del servidor oficial que permite seleccionar un siguiente monstruo al presionar la tecla TAB
- ENABLE_EMPIRE_FLAG: las banderas de reino aparecen en el chat de Llamar
- removido el código de monarca (src client)
- ENABLE_FOG_FIX: guarda el estado de la niebla y se puede elegir entre encendido y apagado
- ENABLE_TEAM_GAMEMASTER: aparecerá en color rojo [Team] en vez del nivel, en los personajes GM
- "Yang infinito", se ha cambiado el tipo de dato del yang de DWORD a int64_t
- eliminado de la base de datos player las tablas: monarch, monarch_candidacy, monarch_election
- ENABLE_SWAP_SYSTEM: al poner un objeto sobre otro, intercambiarán su posición
- @fixme1039 (src server): game_drop_item y game_drop_item_with_ownership, el objeto cae debajo del personaje y no del monstruo
- ENABLE_AUTOSTACK_EXCHANGE: al hacer un intercambio, se acumularán los ítems con FLAG_STACK automáticamente
- @fixme1040 (src server): no permitía comprar un ítem en tienda que cuesta 0 yang
- ENABLE_QUICK_SELL: al abrir una tienda de NPC, permitirá vender rápido presionando la tecla shift + click en los objetos. No aparecerá diálogo de confirmación de la venta
- WJ_ENABLE_TRADABLE_ICON: al abrir una ventana de intercambio (almacén, shop, comercio, etc) mostrará un fondo con transparencia blanca en el ícono que no se puede intercambiar, y mostrará en rojo el ítem que ya se está intercambiando
- ENABLE_ANTIFLAG_TOOLTIP: muestra en tooltip con emojis si el ítem es comerciable, se puede almacenar, se puede tirar, etc.
- agregada la función say_color en questlib.lua
- ENABLE_MESSENGER_BLOCK: permite bloquear a un personaje y aparecerá en la lista de messenger. El bloqueo es de susurros, comercio, emociones, etc.
- __VIEW_TARGET_DECIMAL_HP__: muestra el valor de la vida en el target. Antes aparecía solo la barra de vida.

V1.4:
- actualizado gen_settings: PROTO_FROM_DB = false, MIRROR2DB = true
- @fixme1041 (src server): antihack de cabos de valor
- @fixme1042 (src server): en el nivel máximo, el personaje podrá llegar al 50% de la exp. Esto es necesario para pasar de Hidra a Conqueror
- @fixme1043 (src server): se asegura que no se pueda recoger objetos estando muerto
- @fixme1044 (src server): en la función FN_is_battle_zone había un error en un map index
- @fixme1045 (src server): cuando se abría el almacén y se arrastraba un objeto equipado, iba al almacén directamente
- @fixme1046 (src server): en grupo, cuando un compañero recoja ítems de otro, se acumularán en el inventario
- @fixme1047 (src server): un GM en modo invisible se podrá en modo observador (no test server)
- @fixme1048 (src server): en la función IS_MONKEY_DUNGEON hacía falta metin2_map_monkey_dungeon
- @fixme1049 (src server): en la función CHARACTER::SetParty se valida que si el personaje no tiene grupo, elimine el puntero de la mazmorra que tenga
- @fixme1050 (src server): ahora permite rocíos en el cinturón
- @fixme1051 (src server): si el personaje se puede mover y está muerto, se valida
- @fixme1052 (src server): evita el bot de minería no permitiendo picar a cierta distancia en adelante
- @fixme1053 (src server): al cambiar de reino actualiza el packet y de esta manera se evita que tengan que cambiar de personaje para que surjan los cambios
- @fixme1054 (src server): no se permitirá stackear objetos que se están intercambiando
- @fixme1055 (src server): si el personaje está montado y se intenta montar de nuevo, retornará
- @fixme1056 (src server): no se podrá usar el ramo de flores mientras está montado
- @fixme1057 (src server): validación de ataque en modo observador
- @fixme1058 (src server): otra validación de ataque en modo observador
- @fixme1059 (src server): evita un tipo común de inyecciones SQL
- @fixme1060 (src server): evita que un boss empuje y bugee en las paredes
- @fixme1061 (src server): valida del lado del servidor la restricción de nivel al crear un gremio
- @fixme1062 (src server): cuando se recogen ítems, el trigger (when) pick reconoce los ítems tipo ITEM_QUEST pero no los que tienen el flag ITEM_FLAG_QUEST_USE y ITEM_FLAG_QUEST_USE_MULTIPLE
- @fixme1063 (src server): fuga de memoria, un objeto se crea pero no se destruye. Cuando se recibe un ítem tipo BLEND (rocío), se crea un ítem en el lado del servidor para validar si el objeto se puede unir con los que tienen sus mismos sockets. En dado caso de que suceda, el stack aumenta en uno y así el personaje recibe el objeto, pero el puntero del ítem no se borra.
- @fixme1064 (src server): DBManager.Quit(); no es necesario
- @fixme1065 (src server): float CDungeon::GetUniqueHpPerc retorna bool pero debe retornar float
- @fixme1066 (src server): si en una receta de cube no hay ítems necesarios, simplemente retornará y evitará un core crash
- @fixme1067 (src server): cuando se usa el comando /state [nombre] y se quiere ver el estado de otro personaje, muestra si está en tienda NPC o en intercambio el personaje que usa el comando y no el objetivo.
- @fixme1068 (src server): evita core crash en ITEM_MANAGER::CreateItem
- @fixme1070 (src server): al construir en tierra de gremio, solo quitaba el yang y materiales cuando es test server o el personaje es GM
- @fixme1071 (src server): en ALUA(pc_reset_status), hay un número erróneo
- @fixme1072 (src server): no se podía refinar el pico si tenía la máxima cantidad de puntos
- eliminada la tabla lotto_list de la base de datos player
- flag de bloqueo de PvP en mapas. /e pvp_block_%d 1 (%d = map index)
- SHOW_ITEM_COUNT_REFINE (constInfo): muestra en la ventana de refinamiento la cantidad de ítems disponibles del material, en color rojo si no tienes suficientes, en color amarillo si tiene la misma cantidad, y en color verde si tiene mayor cantidad
- activados los bonus premium (bonus azules) en todos los personajes
- reparado el nombre de las columnas de silver_expire (exp_expire) y gold_expire (item_drop_expire)
- descomentado ENABLE_MAGIC_REDUCTION_SYSTEM
- @warme1000 (src client): comentado "cannot find accumulation data in file '%s'"
- agregado en README.md algunos vnum de mob_proto que deben cambiar o remover folder para que no aparezcan syserr en server
- @fixme1074 (src server): el rango de ataque cuerpo a cuerpo era muy reducido. Por ejemplo, si un guerrero con lanza ataca desde cierta distancia y alcanza a pegarle al objetivo pero éste no recibe daño, es causa de esta distancia máxima. Se cambia de 300 a 420.
- ENABLE_HWID_BAN: sistema de baneo por hardware, IP, ban a todas las cuentas asociadas y logs del comando.

V1.5:
- fix: escudo se intercambia con los objetos unique
- ENABLE_AGGREGATE_MONSTER_EFFECT: efecto al usar cabo de valor para identificar bots y usos de cabo reales
- BRAVE_CAPE_OFFICIAL: cabo de valor con la nueva estructura del servidor oficial
- ENABLE_DISABLE_SOFTWARE_TILING: deshabilita la opción del sistema de modo CPU y GPU
- ENABLE_IMPROVED_LOGOUT_POINTS: cuando se conecta o desconecta un personaje, los puntos se refrescan y se podrá ver correctamente la barra de stats
- ENABLE_EFFECT_DAMAGE: muestra el tipo de daño en distintos colores. Verde para veneno, rosado para críticos, etc.
- PAST_HEALTH_ON_TARGET (constInfo): muestra el daño causado al oponente en la barra de HP, se torna amarillo
- ENABLE_EXTENDED_ALIGNMENT_SYSTEM: se distingue el rango entre personaje masculino y femenino
- ENABLE_BADGE_NOTIFICATION_MANAGER: ícono de notificaciones. Cuando recibes un MP en el juego y tienes el cliente minimizado, se tornará anaranjado el ícono y mostrará la cantidad de mensajes sin leer.
- ENABLE_FOV_OPTION: en opciones del sistema puedes elegir FoV 30 a 60. Campo de vista.
- ENABLE_SHADOW_RENDER_QUALITY_OPTION: opciones del sistema sobre sombras como el servidor oficial. La calidad de sombras ha variado.
- STATS_EACH_10: se podrá aumentar o disminuir los stats de 10 puntos en 10 puntos si se mantiene presionada la tecla Ctrl.
- ENABLE_TELEPORT_TO_A_FRIEND: sistema que permite teletransportarse a un personaje desde la ventana de mensaje privado
- ENABLE_P2P_WARP: permite teletransportar sin importar el canal y core
- fix: la Llamada del relámpago del chamán de luz ahora no se corta la animación cuando realiza la habilidad

V1.6:
- removido el código basura de DragonLair (src server)
- removido el código de danceevent (src server)
- removido el código de HIGHSCORE (src server)
- removido el código de Lock (src server)
- removido el código de Castle/Siege (src server)
- removido el archivo malloc_allocator.h (src server)
- removido el código de over9refine (src server)
- removido el código de profiler (src server)
- removido el código de HEADER_GD_FLUSH_CACHE (src server)
- agregado un define para elegir entre MySQL y MariaDB (RDBMS)
- en spawn_mob0 se agrega el parámetro dir (opcional)
- agregada una función para activar y desactivar el sistema táctico en ciertos mapas o en la mazmorra (solo la función, no el sistema completo)
- agregada la función de lua pc_set_observer_mode 
- ENABLE_EXTENDED_ITEMNAME_ON_GROUND: mejora la visibilidad de los objetos dropeados
- ENABLE_MULTI_TEXTLINE: permite hacer saltos de línea en archivos de locale
- ENABLE_SET_OUTLINE_COLOR: permite poner bordes resaltados a textos
- __CHANNEL_STATUS_UPDATE__: muestra la cantidad de jugadores conectados por cada CH en el login
- ENABLE_WHISPER_IN_CHAT: feature donde se puede enviar un MP por chat general, su uso es: @Nombre Texto
- @fixme1004 (src client): aparece un error cuando se golpea en el caballo
- USE_KMB_MONEY_FORMAT: una característica que permite escribir más fácil las cifras grandes de Yang en el input de comercio. Por ejemplo, al escribir "50kk", se ingresarán 50.000.000 de Yang.
- ENABLE_DELETE_FRIEND_REFRESH_FIX: al eliminar a un jugador de la lista de amigos, se eliminará en ambos personajes al mismo tiempo.
- @fixme1005 (src client): si no se encuentra el puntero de una textura, retornar
- @fixme1006 (src client): al cambiar de personaje se actualizará los part (armadura, peinado y estola)
- agregada la función de LUA pc_is_observer_mode
- agregadas las funciones GetTextLength y GetTextWidth para usar en ui

V1.7:
- ENABLE_AFFECT_BUFF_REMOVE: característica que permite eliminar un affect shower (bonus de la izquierda superior) al hacer clic
- ENABLE_AFFECT_POLYMORPH_REMOVE: característica que permite eliminar la transformación desde el affect shower
- LIMIT_WINDOWS_RECT: las ventanas del juego no se saldrán de la pantalla
- ENABLE_WHISPER_RENEWAL: en la ventana de mensaje privado aparecerá "Escribiendo..." como en las aplicaciones de mensajería instantánea
- ENABLE_ITEM_COMMAND_STACK_UPDATE: al crear ítems con comando no se limitará al stack sino creará los necesarios hasta cumplir con la cantidad pedida
- subida la calidad de las screenshot de 85% a 100%
- @fixme1007: el valor del cooltime en el tooltip de las habilidades ahora se actualiza con la velocidad de hechizo
- en el conteo de ítems en stack se cambió el tipo de dato de BYTE a uint16_t (WORD estandarizado), permitiendo así almacenar más ítems en un solo stack. Se establece en la configuración en 10 mil.
- ENABLE_SKILL_FLAG_KNOCKBACK: flag de retroceso para el skill_proto
- actualizado el skill_proto a la versión GF v26.0.6
- rework del archivo costumewindow.py
- ENABLE_ANTI_EXP: permite activar o desactivar modificar la experiencia. Creada una variable en constInfo para mostrar o no el ícono en la barra de tareas.
- ENABLE_LIMIT_BONUS: limita un bonus a cierto valor definido en la macro. Usado para evitar abusos en PvP, por ejemplo, resistencia mágica, resistencia de media y habilidad, probabilidad de apagón y evasión sobre 100%.
- ENABLE_PROTECT_TIME: sirve para que el jugador vuelva a realizar una tarea pasado ciertos segundos para evitar inundaciones de comandos al servidor. Utilizado en el anillo anti-exp, se debe esperar 3 segundos para volver a activar/desactivar.
- warme1000: (desactivado) si un personaje mata a otro en una guerra de gremios y tienen la misma IP, no contará el punto. Esto se hizo para evitar el farmeo de puntos. Llevan varios personajes al gremio enemigo a dejarse matar por sus otros personajes. La razón por la que se ha deshabilitado es porque las direcciones IPv4 son escasas y muchas veces pueden encontrarse personajes con la misma IP que no tienen ninguna relación entre ellos.
- fix: data truncated setAffectFlag para skill_proto.
- ENABLE_LIMIT_MAX_HIT_SKILL_COUNT: personaliza la cantidad de objetivos a hacer daño con un golpe normal o habilidad. El valor para cada tipo se asignó 50.

V1.8:
- Py Tools: nuevo conjunto de herramientas útiles para automatizar edición de archivos
- Py Tools: FolderToMobProto: programa que sirve para solucionar el bug de las monturas cuando son rápidas y no alcanza a cargar las entidades del mapa (mobs, npcs, jugadores, etc). La solución es agregar los folder a mob_proto.txt. Con este programa se realiza esta tarea en un segundo.
- fix: organización y sincronización de item flags. Flags desde ITEM_FLAG_UNIQUE no funcionaban.
- @fixme313 from Marty 5.9: char.cpp; fix for sync dc
- fix: al atacar con giro de espada, deseo de vivir o pulso, empuja al enemigo y todos ven el empuje, menos el lanzador; el movimiento del enemigo se sincroniza dos segundos después. Se aplicó el flag KNOCKBACK a estas habilidades. Nota sobre el bug: estas habilidades empujan al enemigo, aunque algunas veces no lo hace. Cuando se realiza la habilidad, el lanzador no ve el empuje pero el enemigo sí. Al poner estas habilidades con knockback siempre empujarán y lo verán todos los personajes, aunque algunas veces (muy pocas) el empuje se dirige a otra dirección. Esta solución del knockback es mejor que dejar como estaba. Esto no es una solución absoluta.
- compilación de qc. Este qc viene con un fix para que funcione en un when los retornos de textos que vienen de una tabla. Útil para multilenguaje. Ejemplo: when 20095.chat.locale_en[120] begin
- fix qc: las quest no compilan cuando hay un apóstrofe o tildes y/o caracteres especiales en el último caracter de un texto en bruto (say y derivados) pero el compilador no anuncia sobre el error. Ahora anunciará el error.
- fix: Disipar se vuelve ataque tipo MAGIC. Esta habilidad en el skill_proto es tipo NORMAL (no ataque). Una habilidad de ataque es uno de tres tipos, MELEE (físico en cuerpo a cuerpo), RANGE (físico a distancia) y MAGIC (mágico, sea a distancia o cuerpo a cuerpo). El bug que ocasiona el disipar en el juego es el abuso de daño al ser inmune a la resistencia mágica. Una vez se convierte en tipo mágico, la resistencia mágica disminuye su daño.
- fix: el golpe de espada tiene un daño muy bajo respecto a las demás habilidades de su grupo. Esto es debido al tipo de ataque registrado en skill_proto. Se ha cambiado de MELEE a RANGE como debe ser.
- fix: Syserr: Not a valid .WAV file: sound/pc2/assassin/bow/attack1.wav. Se ha renombrado del archivo de attack.wav a attack1.wav.
- fix: texturas blancas en NPCs. Se han eliminado las carpetas monster y npc de season. Se ha actualizado el npclist.txt quitando las rutas de season.
- @fixme1075: error de sincronización con habilidades de personajes con flag CRUSH. La habilidad afectada es Golpe de espada, muchas veces falla.
- en skill.h se ordenó ESkillIndexes agregando comentarios para tener una referencia de las habilidades. Los nombres de variables son coreanos y no se entiende a qué habilidad pertenecen.
- ENABLE_STACKABLES_STONES: fix de las piedras, ahora no elimina el stack cuando se pone una piedra (o varias en el mismo stack) para incrustar en un equipamento.
- fix: no funcionaba bien el ordenamiento por nombre en shop table ex.
- Py Tools: TransferValueProto: programa que sirve para agregar valores en los protos que no son guardados en el dump del oficial. Por ejemplo, las columnas de las skills en los monstruos no se pueden obtener del mob_proto.txt oficial. Se han extraído de un proto por db y el programa añade de nuevo estos datos en nuestro mob_proto.txt
- mod1001 (binario): fuente de texto de susurro en GM cambiada de Italic a la fuente por defecto. La fuente itálica dificulta mucho la lectura en este caso.
- update @fixme196 Item Move Exploit (Marty Sama)
- update @fixme198 ITEM_QUEST not consumed with karma exploit (Marty Sama)
- fix: un arma o armadura al utilizar piedras las guarda en socket0, 1 y 2. Si el objeto tiene limit de tiempo, el tiempo restante se guardará en un socket que ya está en uso para piedras. ENABLE_NO_MOUNT_CHECK server atk damage fix (Marty Sama)
- @fixme1076: al matar monstruos, algunos salen corriendo hasta que desaparecen
- max_hp y max_sp cambiado el tipo de dato a int64_t. El bug más conocido es el de la barra de HP en monstruos que se pone negra cuando el monstruo tiene más de 28 millones de vida.
- ENABLE_APPLY_DAM_MAX_PERC: nuevo bonus. x% probabilidad de daño máximo. Funciona en básicos y en habilidad.

V1.9:
- DROP_ITEM_DESTROY_QUESTION: nuevo botón al intentar lanzar un objeto al suelo. Ahora se podrá tirar, destruir o cancelar.
- eliminado el código de ignoreButton y reportViolentWhisperButton del root. Estos scripts no se usaron nunca.
- __BL_MOUSE_WHEEL_TOP_WINDOW__: permite utilizar la rueda del ratón para poder desplazarse en una ventana que tiene scroll
- ENABLE_NO_MALUS_JEONGWIHON: deshabilita los daños sufridos del berserk.
- ENABLE_REVIVE_WITH_HALF_HP_IF_MONSTER_KILLED_YOU: cuando eres matado por un monstruo, revivirás con el 50% de la vida.
- RENEWAL_DEAD_PACKET: al morir, aparecerá el tiempo restante para poder presionar el botón de revivir aquí o en la ciudad.
- do_dgetf: comando que muestra los flags de una mazmorra
- la cantidad de bonus permitida se ha expandido. El tipo de dato BYTE permitía hasta 127 bonus. Ahora se ha cambiado el tipo de dato a uint16_t (WORD), permitiendo así hasta 32768.
- Py Tools: resurrection_vnum. Nuevo archivo que agregará los datos de la columna resurrection_vnum al mob_proto.txt automáticamente.
- ENABLE_DETAILS_UI: tabla de bonus del servidor oficial.

V1.10:
- todas las quest se han eliminado
- se ha hecho un rework de questlib. Todas las funciones se han optimizado, se ha eliminado código basura e inutilizable. Se ha extendido los índices de funciones.
- se ha agregado constants.lua en quest. Este archivo contiene muchas variables útiles provenientes de enumeraciones en el código fuente del servidor
- se ha agregado data.lua en quest. Este archivo contiene estructuras genéricas.
- se ha incluido la 6° habilidad en guerrero y ninja para uso en quest.
- se ha agregado utils.lua. Este archivo contiene funciones útiles genéricas.
- se ha conservado GFquestlib.lua
- mob_spawn_map: función en LUA que hace lo mismo que do_mob_map
- PRIV_EMPIRE_MAX_VALUE: se ha establecido esta macro para limitar el valor de los rates. Había una inconsistencia en el código. Se estableció en 200 y puede aumentar hasta 1000.
- los tanakas 5001 y 5004 se han comentado de los regen tipo 's' en los mapas.
- se han separado los rows de las estructuras de las tablas en la carpeta sql.
- quest basic: block_map.quest: devuelve al personaje a la ciudad si no cumple con cierto nivel al llegar a un mapa
- quest basic: boss_notice.quest: al matar ciertos jefes se mostrará un anuncio del vencedor
- quest basic: levelup_notice.quest: al subir ciertos niveles se mostrará un anuncio del personaje
- quest: guild: alter_of_power.quest: los guardianes del altar permiten aumentar la capacidad del gremio
- quest: guild: change_guild_master.quest: permite cambiar el líder de gremio
- quest: guild: guild_building.quest: el agente de tierras que da el permiso de compra de la tierra
- quest: guild: guild_building_melt.quest: alquimista del gremio
- quest: guild: guild_building_npc.quest: herrero del gremio
- quest: guild: guild_make.quest: fundar un gremio
- quest: guild: guild_manage.quest: disolver y retirarse del gremio
- quest: guild: guild_war_join.quest: unirse a una guerra de gremios
- quest: guild: guild_war_observer.quest: unirse a una guerra de gremios en modo espectador
- quest item: change_empire.quest: cambio de reino
- quest item: change_name.quest: cambio de nombre
- quest item: item_change_sex.quest: cambio de sexo
- quest item: training_grandmaster_skill.quest: piedra alma sin diálogos para subir rápido las habilidades
- quest npc: oldwoman: fortune_telling.quest: adivinar tu suerte
- quest npc: oldwoman: marriage_manage.quest: casarse
- quest npc: oldwoman: skill_reset2.quest: asigna el skill group a 0 (permite elegir de nuevo el grupo de habilidades)
- quest npc: fisher.quest: tienda del pescador y mejora de la caña
- quest npc: mining.quest: minería y abrir tienda del pico
- quest npc: npc_talk.quest: diálogos casuales con NPCs
- quest npc: shops.quest: NPCs de tienda con on_click = 2 (tipo quest)
- quest system: acce.quest: combinación y absorción de estolas
- quest system: cube.quest: crafteo
- quest system: gameoption.quest: muestra en cada login las opciones bloqueadas de Opciones del juego
- quest special: mastermind_game_LIB.lua: librería del juego de Mente maestra
- quest mission: hunting: new_levelup.quest: misión de caza oficial
- quest event: se ha creado un framework para administrar los eventos. Todos los eventos aparecerán en pergamino. Habrá un pergamino para GMs y otro para usuarios.
- quest event: events: heroemedal: evento olímpico lanzado en 2012.
- quest event: events: mapforbiddenempire: bloquea el acceso a los mapas a personajes de otros reinos. Si el personaje ya se encuentra en el mapa, al matar a un jugador se enviará a la ciudad.
- quest event: events: mastermind: juego de Mente maestra
- quest event: events: moonbox: evento de cajas Luz de Luna
- quest event: events: rates: administración de los rates de forma muy amigable
- quest event: events: specialboss: evento de jefes especial
- quest event: events: tanaka: evento de tanakas


Nota: Durante toda la fase de desarrollo se corrigieron todos los warnings en source server

 

Bugs encontrados:

- al sacar un libro con /book idx, salen nombres de otros libros pero sí se recibe el libro correcto
- Camino pluma no funciona correctamente. Al actualizar el skill_proto, necesita un flag nuevo para implementar en el servidor.
- en la fase de selección del reino no aparecen las descripción del reino seleccionado
- ENABLE_TELEPORT_TO_A_FRIEND: 1. no se puede teletransportar hacia un jugador que se encuentra en otro core. 2. el botón de Teletransporte necesita volverse ícono, ocupa mucho espacio horizontal.
- RENEWAL_DEAD_PACKET: los botones de revivir aquí y en la ciudad se les ha eliminado la opción de deshabilitar y habilitar debido a que no funcionaba Enable.
- ENABLE_DETAILS_UI: 1. al teletransportarse por medio de pergamino teniendo la ventana de carácter abierta y la ventana de los bonus, al hacer login aparecerá la ventana de carácter pero internamente no es funcional. Se puede abrir otra ventana pero la anterior queda flotante e inútil. 2. Los tooltips de las descripciones de los bonus no se muestran. 3. Algunas veces la ventana no se enlaza con el botón vertical

 

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

Edited by caanmasu
Nuevas versiones
Link to comment
Share on other sites

  • 1 month later...

estos críos siempre la misma historia.. si quieres de verdad una base limpia... compra MARTY! si buscas ya algo para abrir.. a la vista está filtración AVA2... "cambias algunos iconos, agregas algunas skins... y a correr" puedo decir que actualmente el 70% de los servers que abren a diario son base AVA2... y lo que es peor... a los mismos usuarios no le desagrada que sigan abriendo y cerrando media de 10-15 servers por mes de la misma base xddd

Link to comment
Share on other sites

hace 11 horas, SzC dijo:

estos críos siempre la misma historia.. si quieres de verdad una base limpia... compra MARTY! si buscas ya algo para abrir.. a la vista está filtración AVA2... "cambias algunos iconos, agregas algunas skins... y a correr" puedo decir que actualmente el 70% de los servers que abren a diario son base AVA2... y lo que es peor... a los mismos usuarios no le desagrada que sigan abriendo y cerrando media de 10-15 servers por mes de la misma base xddd

Me retiro y empiezan a comentar mis posts... me han llamado por este comentario xD

¿Crees que ofrecería algo que ya ofrece el que más vende bases limpias del juego?
He tomado la base Marty Sama 5.7 (última lanzada) y he reparado muchas cosas y organizado. Se vende como base limpia porque "no tiene sistemas" pero hay muchas cosas que él no ha hecho y que yo sí.

La mayoría de cosas que he hecho en el changelog son cosas que Marty no ha hecho y que debería hacer desde hace mucho tiempo. Simplemente ahorro las molestias de quebrarse la cabeza haciendo todo eso.

Las personas que le compran a Marty Sama quedaron inconclusas cuando no había un proto compatible, no podían entrar al juego con la nueva versión. Luego un turco logró adaptar un proto y ya la gente pudo volver a entrar. Después vi que Marty Sama dijo que iba a actualizar el proto, eso fue hace como un mes. En su Trello tiene la tarea anotada y todavía no la ha resuelto.

Me tomé esa tarea como la más urgente para esa base, así que después de tanto código hice la adaptación del proto como el oficial. Puedes tomar el proto de la versión GF 23.3 y funciona perfectamente sin cambiar nada.

Así hice muchas cosas que puedes ver en el changelog.

También ofrezco soporte. Marty no responde ya que tiene mucho trabajo y muchos clientes.

Mientras no tenga tantos clientes como Marty, mi soporte existe.

 

Aparte del soporte trabajo con GitHub Desktop y doy un tutorial para trabajar en el repositorio. Esto le conviene tanto a mi cliente como a mí. Esto va incluido en la compra.

 

Apoyo a Marty Sama, no soy hater, uso su base y sus herramientas como el PML y muchas otras.

 

Base limpia: Marty

Base limpia, organizada, mejorada, con features importantes y cómodos, optimización, muchos más fixes: Camilo


Es muy cierto lo de la base Ava2, la verdad que todavía siguen saliendo servidores con esa base. Aunque no estoy tan en contra de eso, después de todo, no hay casi servidores ahora, y si no hubiese ningún servidor en la comunidad hispana durante un buen tiempo, podría ser el fin de los jugadores hispanos y eso no nos conviene a ninguno.

Link to comment
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...