Desarrolladores en transición, documentando y probando 2.13 para las correcciones finales para su lanzamiento.
Repositorio de complementos de VSH2
AVISO: Este archivo Léame se actualizará pronto. ¡Gracias por tu paciencia!
VSH2 es una reescritura de VSH1. VSH1 y FF2 tenían un marco de modo de juego muy malo y utilizaban una codificación de mala calidad y pirateada. Incluso podría ir tan lejos como para decir que probablemente no tenían ningún marco ni ninguna estructura real en su código.
VSH2 en realidad tiene un marco estructurado basado en eventos que combina las mejores características de FF2 y VSH1, no solo al tener soporte para jefes multijugador, sino también para facilitar la adición de nuevos jefes y brindarles habilidades y mecánicas verdaderamente únicas al brindarle al desarrollador pleno control. , control desinhibido mediante código en lugar de archivos estrictamente de configuración.
El propósito de FF2 era que fuera muy fácil agregar jefes de una manera genérica y sencilla. Por supuesto, hay una compensación: FF2 es mucho más difícil, si no imposible, personalizar verdaderamente las mecánicas y habilidades del jefe sin tener que recodificar partes del propio FF2. VSH2, dado que requiere al menos algo de experiencia con SourcePawn, es algo más difícil para un novato crear nuevos jefes que si usara FF2, pero elegir las recompensas de VSH2 toma la ruta más difícil al permitirle controlar casi el comportamiento de cada jefe individual y lógica.
Si necesita ayuda para configurar los jefes o al menos necesita información sobre la API para la creación de jefes, aproveche la amplia API de VSH2 echando un vistazo a la wiki de VSH2.
NB: VSH2 funcionará perfectamente bien tal como está de fábrica como reemplazo de VSH1, pero fue diseñado teniendo en mente a los desarrolladores capaces de SourcePawn para aprovechar al máximo el marco codificado desde cero.
addons/sourcemod/configs
. Asegúrese de mantener la estructura de carpetas que está en las configuraciones.Utilice la nueva sintaxis de sourcepawn (sourcemod 1.7+).
Las declaraciones que requieren paréntesis (como las declaraciones 'if') deben tener cada lado del paréntesis espaciado con los paréntesis iniciales tocando la palabra clave constructo, por ejemplo, construct( code/expression )
.
Los comentarios de una sola línea que transmiten un mensaje deben tener 3 barras: ///
.
Los comentarios de varias líneas que transmiten un mensaje deben tener una estrella inicial adicional: /**
.
Las propiedades, funciones y métodos de menos de 30 líneas de código deben tener el comienzo {
llave en estilo K&R C, por ejemplo: ret func() {
.
Los nombres de las variables locales deben estar en Snake_case.
Los nombres de propiedades deben tener un prefijo de una sola letra de su tipo.
Las funciones, métodos, mapas de métodos, enumeraciones y valores de enumeración deben nombrarse en PascalCase. Pascal_Case también es aceptable.
Los valores de enumeración utilizados como indicadores pueden estar en mayúsculas.
Reglas de constantes nombradas:
1.0
) deben ser constantes de enumeración que se agregan con 0.0
en su(s) ubicación(es) de uso.3.14
) deben ser definidas por el preprocesador. Las declaraciones if
encadenadas no son malas, pero si los datos solo son una cosa a la vez, use declaraciones if-else if
.
if-else if
en un solo dato, use una declaración switch
.Los campos/banderas de bits le permiten usar un solo int como 32 bools. Útil si un elemento puede tener varios aspectos a la vez.
1 << n
donde n
es de 0 a 31.IntLog2
en int_log.inc
: n == IntLog2(1 << n)
Sin incrementos previos ++i, i--
, solo incrementos posteriores i++, i--