Mensajes: 12
Temas: 3
Registro en: Mar 2018
Reputación:
0
Hola a todos, estoy necesitando de su ayuda con un problema que tengo, como todos saben al decompilar un archivo .mdl nos arroja un archivo .qc en el cual esta la informacion para compilar de nuevo el archivo .mdl... en este archivo hay unas lineas para agregar las animaciones y los eventos relacionados con dichas animaciones...
Bueno yo tengo este modelo de M4A1 que estoy modificando agregando algunas animaciones el cual hasta ahora esta al 98% de lo que quiero, le he agregado sonidos a las animaciones y sinconizandolos pero hay uno que no me funciona como quiero...
$sequence "fire1" "fire1" fps 30 { event 5001 0 "weapons/m4a1/m4a1-1.wav" }
$sequence "fire2" "fire2" fps 30 { event 5001 0 "weapons/m4a1/m4a1-1.wav" }
Cada evento (reloading, mag_out, Bolt_pull) esta tomando los sonidos desde la carpeta que le asigne excepto por las secuencias de disparo...
para cada arma cree una carpeta diferente.
Podria alguien ayudarme a entender que es lo que tengo que hacer para que el evento de disparar tome el sonido desde la carpeta que le asigne y no la carpeta de sonidos por defecto?
Gracias de antemano.
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
29/03/2018, 01:37 AM
(Última modificación: 29/03/2018, 01:49 AM por Chamo..)
Las armas en el Half-Life (incluyendo CS 1.6) reproducen el sonido de disparo, y algunas armas quizá otros sonidos, en el lado cliente (es decir, esta escrito en el mismo).
La razón es que las armas están relacionadas con ciertos "eventos", que son registrados tanto por el servidor como por el cliente. Específicamente el servidor es el encargado de registrar el evento y enviarlo al cliente, y este (previamente habiendo hookeado al mismo), se encarga de recibir la información enviada por aquel. Sin embargo, algunas armas tienen distintos sonidos de, por ejemplo, recarga. ¿"Como es posible entonces"?, te preguntaras.
Sencillo, el evento asignado al modelo. En el engine existen ciertos eventos que se le asignan a los modelos, y que permiten ejecutar o detectar acciones.
Específicamente existe el evento 5004 que permite ejecutar un sonido en el cliente (evento mismo, que presumiblemente usas en los sonidos de reloagind, mag_out, bolt_pull, etc):
Código PHP: /* /// -> COMENTARIO MIO */ /* ========================= HUD_StudioEvent
The entity's studio model description indicated an event was fired during this frame, handle the event by it's tag ( e.g., muzzleflash, sound ) ========================= */ void DLLEXPORT HUD_StudioEvent( const struct mstudioevent_s *event, const struct cl_entity_s *entity ) { switch( event->event ) { case 5001: gEngfuncs.pEfxAPI->R_MuzzleFlash( (float *)&entity->attachment[0], atoi( event->options) ); break; case 5011: gEngfuncs.pEfxAPI->R_MuzzleFlash( (float *)&entity->attachment[1], atoi( event->options) ); break; case 5021: gEngfuncs.pEfxAPI->R_MuzzleFlash( (float *)&entity->attachment[2], atoi( event->options) ); break; case 5031: gEngfuncs.pEfxAPI->R_MuzzleFlash( (float *)&entity->attachment[3], atoi( event->options) ); break; case 5002: gEngfuncs.pEfxAPI->R_SparkEffect( (float *)&entity->attachment[0], atoi( event->options), -100, 100 ); break; /// ESTE DE AQUÍ /// // Client side sound case 5004: gEngfuncs.pfnPlaySoundByNameAtLocation( (char *)event->options, 1.0, (float *)&entity->attachment[0] ); break; default: break;
Mensajes: 12
Temas: 3
Registro en: Mar 2018
Reputación:
0
(29/03/2018, 01:37 AM)Chamo. escribió:
Las armas en el Half-Life (incluyendo CS 1.6) reproducen el sonido de disparo, y algunas armas quizá otros sonidos, en el lado cliente (es decir, esta escrito en el mismo).
La razón es que las armas están relacionadas con ciertos "eventos", que son registrados tanto por el servidor como por el cliente. Específicamente el servidor es el encargado de registrar el evento y enviarlo al cliente, y este (previamente habiendo hookeado al mismo), se encarga de recibir la información enviada por aquel. Sin embargo, algunas armas tienen distintos sonidos de, por ejemplo, recarga. ¿"Como es posible entonces"?, te preguntaras.
Sencillo, el evento asignado al modelo. En el engine existen ciertos eventos que se le asignan a los modelos, y que permiten ejecutar o detectar acciones.
Específicamente existe el evento 5004 que permite ejecutar un sonido en el cliente (evento mismo, que presumiblemente usas en los sonidos de reloagind, mag_out, bolt_pull, etc):
Código PHP: /* /// -> COMENTARIO MIO */ /* ========================= HUD_StudioEvent
The entity's studio model description indicated an event was fired during this frame, handle the event by it's tag ( e.g., muzzleflash, sound ) ========================= */ void DLLEXPORT HUD_StudioEvent( const struct mstudioevent_s *event, const struct cl_entity_s *entity ) { switch( event->event ) { case 5001: gEngfuncs.pEfxAPI->R_MuzzleFlash( (float *)&entity->attachment[0], atoi( event->options) ); break; case 5011: gEngfuncs.pEfxAPI->R_MuzzleFlash( (float *)&entity->attachment[1], atoi( event->options) ); break; case 5021: gEngfuncs.pEfxAPI->R_MuzzleFlash( (float *)&entity->attachment[2], atoi( event->options) ); break; case 5031: gEngfuncs.pEfxAPI->R_MuzzleFlash( (float *)&entity->attachment[3], atoi( event->options) ); break; case 5002: gEngfuncs.pEfxAPI->R_SparkEffect( (float *)&entity->attachment[0], atoi( event->options), -100, 100 ); break; /// ESTE DE AQUÍ /// // Client side sound case 5004: gEngfuncs.pfnPlaySoundByNameAtLocation( (char *)event->options, 1.0, (float *)&entity->attachment[0] ); break; default: break;
Gracias por tu respuesta, me aclaro bastante la duda, efectivamente el evento 5004 es para los eventos de recarga, clipout, clipin, seleccionar armas, he estado haciendo pruebas, lo que hice fue cambiar el numero de evento del disparo de 5001 a 5004 y pude hacer lo que necesitaba, que reproduzca el sonido desde la carpeta que cree, el problema es que suena un poco extraño, suena como con un eco... a mi parecer suena como que se ejecutara dos veces el sonido casi al mismo tiempo, eso me tiene matando neuronas... no entiendo porque reproduce el sonido asi, cuando el resto de los sonidos lo hace bien.
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
29/03/2018, 08:19 PM
(Última modificación: 29/03/2018, 08:21 PM por Chamo..)
Eso es por la predicción del cliente. Cuando disparas un arma, el juego "dispara" o envia un evento al jugador, y cuando este lo recibe, ejecuta casi todo lo relacionado al efecto del disparo de un arma: decals, sonido de disparo, humo, modelo de las balas (en algunas armas, como la escopeta, aparece un modelo de casquillo, quizá para darle realismo), etc.
Para resolver eso, tienes que recurrir a lo que llaman "remover la predicción", lo que causaría que todo lo anterior no ocurriera, y necesitaría ser emulado si se quisiera mantener. Es decisión tuya.
Se ha discutido mucho sobre esto, y encontraras fácilmente información al respecto.
Mensajes: 12
Temas: 3
Registro en: Mar 2018
Reputación:
0
(29/03/2018, 08:19 PM)Chamo. escribió:
Eso es por la predicción del cliente. Cuando disparas un arma, el juego "dispara" o envia un evento al jugador, y cuando este lo recibe, ejecuta casi todo lo relacionado al efecto del disparo de un arma: decals, sonido de disparo, humo, modelo de las balas (en algunas armas, como la escopeta, aparece un modelo de casquillo, quizá para darle realismo), etc.
Para resolver eso, tienes que recurrir a lo que llaman "remover la predicción", lo que causaría que todo lo anterior no ocurriera, y necesitaría ser emulado si se quisiera mantener. Es decisión tuya.
Se ha discutido mucho sobre esto, y encontraras fácilmente información al respecto.
Excelente, muchisimas gracias Chamo, de pana me ha sido de muchisima ayuda tus comentarios...
Saludos.
|