ayuda zombi escape
#1
el problema que al entrar al sv com modo zombi escape puesto a los segundos los jugadores mueres de la nada ... ayudaaaaa
tengo vercion
zombie_escape_v2.3.amxx
errores en consola
L 05/16/2018 - 11:33:40: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
L 05/16/2018 - 11:33:40: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
L 05/16/2018 - 11:33:40: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
L 05/16/2018 - 11:33:40: HudSyncObject -1 is invalid
L 05/16/2018 - 11:33:40: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
L 05/16/2018 - 11:33:40: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
L 05/16/2018 - 11:33:40: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
L 05/16/2018 - 11:33:40: HudSyncObject -1 is invalid
L 05/16/2018 - 11:33:40: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
L 05/16/2018 - 11:33:40: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
L 05/16/2018 - 11:33:40: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
Responder
#2
[Imagen: tema-589-2.jpg]
dame un segundo y con los chicos del foro adivinaremos el code
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#3
[ 1] AMX Mod X RUN- amxmodx_mm_i386. v1.8.2 iniStart ANY
[ 2] dproto_EF RUN- dproto_i386.so v0.9.581 iniStart Never
[ 3] VoiceTranscoder RUN- VoiceTranscoder. v2017RC3 iniANYANY
[ 4] WHBlocker RUN- whblocker_mm_i38 v1.5.692 iniChlvl ANY
[ 5] MySQRUN- mysql_amxx_i386. v1.8.2 pl1ANYANY
[ 6] Fun RUN- fun_amxx_i386.so v1.8.2 pl1ANYANY
[ 7] Engine RUN- engine_amxx_i386 v1.8.2 pl1ANYANY
[ 8] FakeMetaRUN- fakemeta_amxx_i3 v1.8.2 pl1ANYANY
[ 9] GeoIPRUN- geoip_amxx_i386. v1.2.0-m pl1ANYANY
[10] CStrike RUN- cstrike_amxx_i38 v1.8.2 pl1ANYANY
[11] CSX RUN- csx_amxx_i386.so v1.8.2 pl1ANYANY
[12] Ham Sandwich RUN- hamsandwich_amxx v1.8.2 pl1ANYANY
[13] Orpheu RUN- orpheu_amxx_i386 v2.6.3 pl1ANYANY
[14] CSDM2RUN- csdm_amxx_i386.s v2.1.3b- pl1ANYANY
Responder
#4
(16/05/2018, 12:48 PM)Jota escribió: [ 1] AMX Mod X RUN- amxmodx_mm_i386. v1.8.2 iniStart ANY
[ 2] dproto_EF RUN- dproto_i386.so v0.9.581 iniStart Never
[ 3] VoiceTranscoder RUN- VoiceTranscoder. v2017RC3 iniANYANY
[ 4] WHBlocker RUN- whblocker_mm_i38 v1.5.692 iniChlvl ANY
[ 5] MySQRUN- mysql_amxx_i386. v1.8.2 pl1ANYANY
[ 6] Fun RUN- fun_amxx_i386.so v1.8.2 pl1ANYANY
[ 7] Engine RUN- engine_amxx_i386 v1.8.2 pl1ANYANY
[ 8] FakeMetaRUN- fakemeta_amxx_i3 v1.8.2 pl1ANYANY
[ 9] GeoIPRUN- geoip_amxx_i386. v1.2.0-m pl1ANYANY
[10] CStrike RUN- cstrike_amxx_i38 v1.8.2 pl1ANYANY
[11] CSX RUN- csx_amxx_i386.so v1.8.2 pl1ANYANY
[12] Ham Sandwich RUN- hamsandwich_amxx v1.8.2 pl1ANYANY
[13] Orpheu RUN- orpheu_amxx_i386 v2.6.3 pl1ANYANY
[14] CSDM2RUN- csdm_amxx_i386.s v2.1.3b- pl1ANYANY

No se le da soporte a servidores con dproto Trolleyes

https://amxmodx-es.com/Thread-Reglas
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#5
toy pidiendo ayuda con modo zombi escape no con doble protocolo

el problema que modo funciona pero esta matando a todo los jugadores de la nada al empezar la ronda . ayudaaa

zombie_escape_v2.3.amxx
zombie_escape_v2.3.sma
errores en consola
L 05/16/2018 - 11:33:40: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
L 05/16/2018 - 11:33:40: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
L 05/16/2018 - 11:33:40: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
L 05/16/2018 - 11:33:40: HudSyncObject -1 is invalid
L 05/16/2018 - 11:33:40: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
L 05/16/2018 - 11:33:40: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
L 05/16/2018 - 11:33:40: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
L 05/16/2018 - 11:33:40: HudSyncObject -1 is invalid
L 05/16/2018 - 11:33:40: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
L 05/16/2018 - 11:33:40: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
L 05/16/2018 - 11:33:40: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
Responder
#6
No podemos ayudarte con tu "zombi" por que usas dproto y porqué nadie es adivino.

Ah sisi yo lo soy, dame un minuto y adivino el código
[Imagen: a-bola-de-cristal-dos-economistas2.png]

Hablando en Sergio, nadie te va a ayudar
Responder
#7
(16/05/2018, 01:11 PM)Exertency escribió: No podemos ayudarte con tu "zombi" por que usas dproto y porqué nadie es adivino.

Ah sisi yo lo soy, dame un minuto y adivino el código
[Imagen: a-bola-de-cristal-dos-economistas2.png]

Hablando en Sergio, nadie te va a ayudar

Así no hablo yo Oh god why
Responder
#8
--------
Responder
#9
Que parte de que no se da soporte a DOBLE PROTOCOLO no entiendes? REGLAS

Hacela fácil, elimina el DOBLE PROTOCOLO de tu servidor y pasa el código completo del ze que te da error.
Hace 3 o 4 mensajes arriba te dijeron que pases el código, los pibes no son adivinos.
Steam
Responder
#10
sace el DOBLE PROTOCOLO

sale la misma wea en consola

05/16/2018 - 22:27:29: HudSyncObject -1 is invalid
05/16/2018 - 22:27:29: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:29: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:29: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:29: HudSyncObject -1 is invalid
05/16/2018 - 22:27:29: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:29: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:29: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:30: HudSyncObject -1 is invalid
05/16/2018 - 22:27:30: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:30: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:30: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:31: HudSyncObject -1 is invalid
05/16/2018 - 22:27:31: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:31: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:31: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:31: HudSyncObject -1 is invalid
05/16/2018 - 22:27:31: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:31: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:31: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:31: HudSyncObject -1 is invalid
05/16/2018 - 22:27:31: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:31: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:31: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:31: HudSyncObject -1 is invalid
05/16/2018 - 22:27:31: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:31: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:31: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:31: HudSyncObject -1 is invalid
05/16/2018 - 22:27:31: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:31: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:31: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:31: HudSyncObject -1 is invalid
05/16/2018 - 22:27:31: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:31: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:31: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:31: HudSyncObject -1 is invalid
05/16/2018 - 22:27:31: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:31: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:31: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:31: HudSyncObject -1 is invalid
05/16/2018 - 22:27:31: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:31: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:31: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:31: HudSyncObject -1 is invalid
05/16/2018 - 22:27:31: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:27:31: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
05/16/2018 - 22:27:31: [AMXX] [0] zombie_escape_v2.3.sma::client_PostThink (line 1710)
05/16/2018 - 22:27:31: HudSyncObject -1 is invalid

mata todo el rato en la partida

empezamos y mata a los jugadores al empezar la ronda

Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <orpheu>
#include <orpheu_stocks>
#include <orpheu_memory>

#define PLUGIN "Zombie Escape"
#define VERSION "2.3 Fix"
#define AUTHOR "Dias"

// Main Config 
#define CONFIG_FILE "zombie_escape.ini"
#define OFFICIAL_LANG LANG_PLAYER
const DMG_GRENADE = (1<<24)

//#define SET_MODELINDEX_OFFSET
new allow_map_prefix[1][] = 
{
    
"ze_"
}

// Config Vars
new cfg_min_playercfg_default_light[2], cfg_zom_release_timecfg_hum_freeze_timecfg_round_time
new cfg_use_fogcfg_fog_density[16], cfg_fog_color[32]
new 
cfg_human_healthcfg_human_armorFloat:cfg_human_gravityFloat:cfg_human_speed    
new cfg_zombie_healthcfg_zombie_armorFloat:cfg_zombie_gravityFloat:cfg_zombie_speedFloat:cfg_zombie_kbpower
new cfg_skyname[10]
new Array:
human_model, Array:human_modelindex, Array:host_zombie_model, Array:host_zombie_modelindex, Array:origin_zombie_model, Array:origin_zombie_modelindex, Array:zombie_claws_model
new Array:ready_sound, Array:ambience_sound, Array:zombieappear_sound, Array:zombieinfect_sound
new Array:zombiepain_sound, Array:zombieattack_sound, Array:zombieswing_sound, Array:zombiewall_sound
new count_sound[64], Array:escape_suc_sound, Array:escape_fail_sound

new const sound_nvg[2][] = {"items/nvg_off.wav""items/nvg_on.wav"}

// Game Vars
new g_endroundg_countbot_registerg_gamestartscore_hudFloat:delay_hud[33], stat_hud
new notice_hudg_startedg_zombie[33], g_zombie_type[33], g_nvg[33], g_team_score[6]
new 
Float:g_spawn_origin[33][3], g_escape_point[33], g_escape_rank[4]

enum
{
    
RANK_NONE 0,
    
RANK_FIRST,
    
RANK_SECOND,
    
RANK_THIRD
}

// Hardcode
new g_primaryweapons[][][] = 

    { 
"M4A1",     "weapon_m4a1"    },
    { 
"AK47",     "weapon_ak47"    },
    { 
"AUG",      "weapon_aug"     },
    { 
"SG552",    "weapon_sg552"   },
    { 
"Galil",    "weapon_galil"   },
    { 
"Famas",    "weapon_famas"   },
    { 
"MP5 Navy""weapon_mp5navy" },
    { 
"XM1014",   "weapon_xm1014"  },
    { 
"M3",       "weapon_m3"      },
    { 
"P90",      "weapon_p90"     },
    { 
"M249",     "weapon_m249"    },
    { 
"SG550",    "weapon_sg550"   },
    { 
"G3SG1",    "weapon_g3sg1"   }            
}

// secondary weapons (menu|game)
new g_secondaryweapons[][][] = 

    { 
"USP",      "weapon_usp"     },
    { 
"Deagle",   "weapon_deagle"  },
    { 
"Elite",    "weapon_elite"   
}

// grenade loadout (game)
new g_grenades[][] = 

    
"weapon_hegrenade",
    
"weapon_smokegrenade"
}

new 
g_szObjectiveClassNames[][] =
{
    
"func_bomb_target",
    
"info_bomb_target",
    
"info_vip_start",
    
"func_vip_safetyzone",
    
"func_escapezone",
    
"hostage_entity",
    
"monster_scientist",
    
"func_hostage_rescue",
    
"info_hostage_rescue",
    
"item_longjump"
}
enum
{
    
TASK_COUNTDOWN 52000,
    
TASK_COUNTDOWN2,
    
TASK_AMBIENCE,
    
TASK_ROUNDTIME
}
enum
{
    
TEAM_T 1,
    
TEAM_CT 2,
    
TEAM_ALL 5,
    
TEAM_START 6
}
enum
{
    
AL_NOT 0,
    
AL_ALIVE 1,
    
AL_BOTH 2
}
enum
{
    
ZOMBIE_TYPE_HOST 0,
    
ZOMBIE_TYPE_ORIGIN
}

// Orpheu Vars
new OrpheuHook:handleHookCheckMapConditions;
new 
OrpheuHook:handleHookCheckWinConditions;
new 
OrpheuHook:handleHookHasRoundTimeExpired;

// Orpheu Def
new g_WinText[7][64], g_pGameRules
#define set_mp_pdata(%1,%2)  (OrpheuMemorySetAtAddress( g_pGameRules, %1, 1, %2 ) )
#define get_mp_pdata(%1)     (OrpheuMemoryGetAtAddress( g_pGameRules, %1 ) )

// Menu Weapon Code (Thank to Cheap_Suit)
new bool:g_showmenu[33], bool:g_menufailsafe[33], g_player_weapons[33][2], g_menuposition[33]
#define TASKID_WEAPONSMENU 564
#define EQUIP_PRI (1<<0)
#define EQUIP_SEC (1<<1)
#define EQUIP_GREN (1<<2)
#define EQUIP_ALL (1<<0 | 1<<1 | 1<<2)

#define OFFSET_LASTPRIM 368
#define OFFSET_LASTSEC 369
#define OFFSET_LASTKNI 370

#define OFFSET_DEATH 444
#define OFFSET_TEAM 114
#define OFFSET_ARMOR 112
#define OFFSET_NVG 129
#define OFFSET_CSMONEY 115
#define OFFSET_PRIMARYWEAPON 116
#define OFFSET_WEAPONTYPE 43
#define OFFSET_CLIPAMMO    51
#define EXTRAOFFSET_WEAPONS 4

#define OFFSET_AMMO_338MAGNUM 377
#define OFFSET_AMMO_762NATO 378
#define OFFSET_AMMO_556NATOBOX 379
#define OFFSET_AMMO_556NATO 380
#define OFFSET_AMMO_BUCKSHOT 381
#define OFFSET_AMMO_45ACP 382
#define OFFSET_AMMO_57MM 383
#define OFFSET_AMMO_50AE 384
#define OFFSET_AMMO_357SIG 385
#define OFFSET_AMMO_9MM 386

#define fm_lastprimary(%1) get_pdata_cbase(id, OFFSET_LASTPRIM)
#define fm_lastsecondry(%1) get_pdata_cbase(id, OFFSET_LASTSEC)
#define fm_lastknife(%1) get_pdata_cbase(id, OFFSET_LASTKNI)
#define fm_get_weapon_id(%1) get_pdata_int(%1, OFFSET_WEAPONTYPE, EXTRAOFFSET_WEAPONS)

new const g_weapon_ammo[][] =
{
    { -
1, -},
    { 
13200 },
    { -
1, -},
    { 
10200 },
    { -
1, -},
    { 
7200 },
    { -
1, -},
    { 
30200 },
    { 
30200 },
    { -
1, -},
    { 
30200 },
    { 
20200 },
    { 
25000 },
    { 
30200 },
    { 
35200 },
    { 
25200 },
    { 
12200 },
    { 
20200 },
    { 
10200 },
    { 
30200 },
    { 
100200 },
    { 
8200 },
    { 
30200 },
    { 
30200 },
    { 
20200 },
    { -
1, -},
    { 
7200 },
    { 
30200 },
    { 
30200 },
    { -
1, -},
    { 
50200 }
}

// Team API (Thank to WiLS)
#define TEAMCHANGE_DELAY 0.1

#define TASK_TEAMMSG 200
#define ID_TEAMMSG (taskid - TASK_TEAMMSG)

// CS Player PData Offsets (win32)
#define PDATA_SAFE 2
#define OFFSET_CSTEAMS 114

new const CS_TEAM_NAMES[][] = { "UNASSIGNED""TERRORIST""CT""SPECTATOR" }

new 
Float:g_TeamMsgTargetTime
new g_MsgTeamInfog_MsgScoreInfo
new g_MaxPlayers



new Trie:TrieMemoryPatches;
new 
Trie:TrieSigsNotFound;
const 
MaxIdentLength 64;
const 
MaxBytes 100;

enum PatchFunction
{
    
RoundTime,
};

enum PatchError
{
    
bool:Active,
    
bool:SigFound,
    
bool:BrokenFlow,
    
CurrIdentMaxIdentLength ],
    
Attempts,
    
FuncIndex
};

enum _:Patch
{
    
OldBytesMaxBytes ],
    
NewBytesMaxBytes ],
    
NumBytes,
    
Address
};

new 
ErrorFilterPatchError ];
new 
bool:SignatureFoundPatchFunction ];
new 
PatchesDatasPatch ];


// Set Model
#define OFFSET_MODELINDEX 491
new g_model_locked[33]

// Ham:Speed
new Ham:Ham_Player_ResetMaxSpeed Ham_Item_PreFrame;

// Fowards
#define MAX_FORWARD 5
enum
{
    
FORWARD_NONE 0,
    
FORWARD_INFECTED,
    
FORWARD_HUMANIZED,
    
FORWARD_GAMESTART,
    
FORWARD_ROUNDEND
}

new 
g_forwards[MAX_FORWARD], g_fwDummyResult

// Custom GamePlay
enum
{
    
START_TYPE_NEW 0,
    
START_ZOMBIE_APPEAR,
    
START_ZOMBIE_RELEASE
}

new 
g_gamestop[3]

// Player Config
new g_ena_ready_sound[33], g_ena_background_sound[33]

// Plugin & Precache & Config Zone
public plugin_init()
{
    new 
map_name[32], check_index
    get_mapname
(map_namesizeof(map_name))
    
    for(
check_index 0check_index sizeof(allow_map_prefix); check_index++)
    {
        if(
equali(map_nameallow_map_prefix[check_index], strlen(allow_map_prefix[check_index])))
            break
    }
    
    if(
check_index == sizeof(allow_map_prefix))
    {
        
set_fail_state("[ZE] Wrong Map")
        return
    }  
    
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_cvar("ze_version"VERSIONFCVAR_SERVER|FCVAR_SPONLY)
    
set_cvar_string("ze_version"VERSION)    
    
    
// Lang
    
register_dictionary("zombie_escape.txt")
    
    
format(g_WinText[TEAM_T], 63"Escape Fail")
    
format(g_WinText[TEAM_CT], 63"Escape Success")        
    
format(g_WinText[TEAM_ALL], 63"#Round_Draw")
    
format(g_WinText[TEAM_START], 63"#Game_Commencing")    
    
    
register_menu("Equipment"1023"action_equip")
    
register_menu("Primary"1023"action_prim")
    
register_menu("Secondary"1023"action_sec")
    
    
// Event
    
register_event("HLTV""event_newround""a""1=0""2=0")
    
register_logevent("event_roundend"2"1=Round_End")
    
register_event("TextMsg","event_roundend","a","2=#Game_Commencing","2=#Game_will_restart_in")    
    
register_event("CurWeapon""event_CurWeapon""be""1=1")
    
    
// Message
    
register_message(get_user_msgid("Health"), "message_health")
    
register_message(get_user_msgid("StatusIcon"), "message_StatusIcon")
    
    
// Forward & Ham
    
register_forward(FM_EmitSound"fw_EmitSound")
    
register_forward(FM_GetGameDescription"fw_GetGameDesc")
    
register_forward(FM_SetClientKeyValue"fw_SetClientKeyValue")
    
RegisterHam(Ham_Spawn"player""fw_Spawn_Post"1)
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
RegisterHam(Ham_Killed"player""fw_Killed_Post"1)
    
RegisterHam(Ham_Touch"weaponbox""fw_TouchWeapon")
    
RegisterHam(Ham_Touch"armoury_entity""fw_TouchWeapon")
    
RegisterHam(Ham_Touch"weapon_shield""fw_TouchWeapon")
    
RegisterHam(Ham_Player_ResetMaxSpeed"player""fw_PlayerResetMaxSpeed"0)
    
    
PatchRoundInfinity()
    
    
set_cvar_string("sv_skyname"cfg_skyname)
    
    
// Hud
    
notice_hud CreateHudSyncObj(1)
    
score_hud CreateHudSyncObj(2)
    
stat_hud CreateHudSyncObj(3)
    
    
// Cache
    
g_MsgTeamInfo get_user_msgid("TeamInfo")
    
g_MsgScoreInfo get_user_msgid("ScoreInfo")
    
g_MaxPlayers get_maxplayers()    
    
    
// Create Forwards
    
g_forwards[FORWARD_INFECTED] = CreateMultiForward("ze_user_infected"ET_IGNOREFP_CELLFP_CELL)
    
g_forwards[FORWARD_HUMANIZED] = CreateMultiForward("ze_user_humanized"ET_IGNOREFP_CELL)
    
g_forwards[FORWARD_GAMESTART] = CreateMultiForward("ze_gamestart"ET_IGNOREFP_CELL)
    
g_forwards[FORWARD_ROUNDEND] = CreateMultiForward("ze_roundend"ET_IGNOREFP_CELL)

    
// Some Commands
    
register_clcmd("nightvision""cmd_nightvision")
    
register_clcmd("jointeam""cmd_jointeam")
    
register_clcmd("joinclass""cmd_joinclass")
    
register_clcmd("chooseteam""cmd_jointeam")        
    
    
set_task(60.0"server_check"___"b")
    
    
// Reset GamePlay
    
native_reset_gameplay(0)
}

public 
plugin_cfg()
{
    new 
map_name[32], check_index
    get_mapname
(map_namesizeof(map_name))
    
    for(
check_index 0check_index sizeof(allow_map_prefix); check_index++)
    {
        if(
equali(map_nameallow_map_prefix[check_index], strlen(allow_map_prefix[check_index])))
            break
    }
    
    if(
check_index == sizeof(allow_map_prefix))
        return
    
    
set_cvar_float("mp_freezetime"float(cfg_hum_freeze_time) + 1.0)
    
set_cvar_float("mp_roundtime"float(cfg_round_time))
}
    
public 
plugin_precache()
{
    new 
map_name[32], check_index
    get_mapname
(map_namesizeof(map_name))
    
    for(
check_index 0check_index sizeof(allow_map_prefix); check_index++)
    {
        if(
equali(map_nameallow_map_prefix[check_index], strlen(allow_map_prefix[check_index])))
            break
    }
    
    if(
check_index == sizeof(allow_map_prefix))
        return
    
    
OrpheuRegisterHook(OrpheuGetFunction("InstallGameRules"),"OnInstallGameRules",OrpheuHookPost)
    
    
// Create Array
    
human_model ArrayCreate(641)
    
human_modelindex ArrayCreate(11)
    
host_zombie_model ArrayCreate(641)
    
host_zombie_modelindex ArrayCreate(11)
    
origin_zombie_model ArrayCreate(641)
    
origin_zombie_modelindex ArrayCreate(11)
    
zombie_claws_model ArrayCreate(641)
    
    
ready_sound ArrayCreate(641)
    
ambience_sound ArrayCreate(641)
    
zombieappear_sound ArrayCreate(641)
    
zombieinfect_sound ArrayCreate(641)
    
    
zombiepain_sound ArrayCreate(641)
    
zombieattack_sound ArrayCreate(641)
    
zombieswing_sound ArrayCreate(641)
    
zombiewall_sound ArrayCreate(641)
    
    
escape_suc_sound ArrayCreate(641)
    
escape_fail_sound ArrayCreate(641)
    
    
// Load Custom Config
    
load_config_file()
    
    new 
ibuffer[128], temp_string[256]
    
    
// Model
    
for(0ArraySize(human_model); i++)
    {
        
ArrayGetString(human_modelitemp_stringsizeof(temp_string))
        
formatex(buffersizeof(buffer), "models/player/%s/%s.mdl"temp_stringtemp_string)
        
        
ArrayPushCell(human_modelindexprecache_model(buffer))
    }
    for(
0ArraySize(origin_zombie_model); i++)
    {
        
ArrayGetString(origin_zombie_modelitemp_stringsizeof(temp_string))
        
formatex(buffersizeof(buffer), "models/player/%s/%s.mdl"temp_stringtemp_string)
        
        
ArrayPushCell(origin_zombie_modelindexprecache_model(buffer))
    }
    for(
0ArraySize(host_zombie_model); i++)
    {
        
ArrayGetString(host_zombie_modelitemp_stringsizeof(temp_string))
        
formatex(buffersizeof(buffer), "models/player/%s/%s.mdl"temp_stringtemp_string)
        
        
ArrayPushCell(host_zombie_modelindexprecache_model(buffer))
    }
    
    for(
0ArraySize(zombie_claws_model); i++)
    {
        
ArrayGetString(zombie_claws_modelitemp_stringsizeof(temp_string))
        
precache_model(temp_string)
    }
    
    
// Sound
    
for(0ArraySize(ready_sound); i++)
    {
        
ArrayGetString(ready_sounditemp_stringsizeof(temp_string))
    
        if(
equal(temp_string[strlen(temp_string) - 4], ".mp3"))
        {
            
format(buffercharsmax(buffer), "sound/%s"temp_string)
            
precache_generic(buffer)
        } else {
            
precache_sound(temp_string)
        }
    }
    for(
0ArraySize(ambience_sound); i++)
    {
        
ArrayGetString(ambience_sounditemp_stringsizeof(temp_string))
    
        if(
equal(temp_string[strlen(temp_string) - 4], ".mp3"))
        {
            
format(buffercharsmax(buffer), "sound/%s"temp_string)
            
precache_generic(buffer)
        } else {
            
precache_sound(temp_string)
        }
    }
    for(
0ArraySize(zombieappear_sound); i++)
    {
        
ArrayGetString(zombieappear_sounditemp_stringsizeof(temp_string))
        
precache_sound(temp_string)
    }
    for(
0ArraySize(zombieinfect_sound); i++)
    {
        
ArrayGetString(zombieinfect_sounditemp_stringsizeof(temp_string))
        
precache_sound(temp_string)
    }
    for(
0ArraySize(zombiepain_sound); i++)
    {
        
ArrayGetString(zombiepain_sounditemp_stringsizeof(temp_string))
        
precache_sound(temp_string)
    }
    for(
0ArraySize(zombieattack_sound); i++)
    {
        
ArrayGetString(zombieattack_sounditemp_stringsizeof(temp_string))
        
precache_sound(temp_string)
    }
    for(
0ArraySize(zombieswing_sound); i++)
    {
        
ArrayGetString(zombieswing_sounditemp_stringsizeof(temp_string))
        
precache_sound(temp_string)
    }
    for(
0ArraySize(zombiewall_sound); i++)
    {
        
ArrayGetString(zombiewall_sounditemp_stringsizeof(temp_string))
        
precache_sound(temp_string)
    }
    for (
1<= 10i++)
    {
        new 
sound_count[64]
        
format(sound_countsizeof sound_count 1count_soundi)
        
engfunc(EngFunc_PrecacheSoundsound_count)
    }
    for(
0ArraySize(escape_suc_sound); i++)
    {
        
ArrayGetString(escape_suc_sounditemp_stringsizeof(temp_string))
        
precache_sound(temp_string)
    }
    for(
0ArraySize(escape_fail_sound); i++)
    {
        
ArrayGetString(escape_fail_sounditemp_stringsizeof(temp_string))
        
precache_sound(temp_string)
    }        
    
    
formatex(buffersizeof(buffer), "gfx/env/%sbk.tga"cfg_skyname)
    
precache_generic(buffer)
    
formatex(buffersizeof(buffer), "gfx/env/%sdn.tga"cfg_skyname)
    
precache_generic(buffer)
    
formatex(buffersizeof(buffer), "gfx/env/%sft.tga"cfg_skyname)
    
precache_generic(buffer)
    
formatex(buffersizeof(buffer), "gfx/env/%slf.tga"cfg_skyname)
    
precache_generic(buffer)
    
formatex(buffersizeof(buffer), "gfx/env/%srt.tga"cfg_skyname)
    
precache_generic(buffer)
    
formatex(buffersizeof(buffer), "gfx/env/%sup.tga"cfg_skyname)
    
precache_generic(buffer)    
    
    if(
cfg_use_fog == 1)
    {
        static 
ent
        ent 
engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"env_fog"))
        if(
pev_valid(ent))
        {
            
DispatchKeyValue(ent"density"cfg_fog_density)
            
DispatchKeyValue(ent"rendercolor"cfg_fog_color)
            
DispatchSpawn(ent)
        }
    }
    
    
register_forward(FM_Spawn"fw_Spawn")    
}

public 
plugin_end()
{
    
UnPatchRoundInfinity()
}

public 
server_check()
{
    
// Check this every 60 second(s)
    
check_win_con()
}
    
public 
fw_Spawn(iEnt)
{
    if (!
pev_valid(iEnt))
        return 
FMRES_IGNORED;
    
    static 
s_szClassName[32], s_iNum
    pev
(iEntpev_classnames_szClassName31)
    
    for (
s_iNum 0s_iNum sizeof g_szObjectiveClassNamess_iNum++)
    {
        if (
equal(s_szClassNameg_szObjectiveClassNames[s_iNum]))
        {
            
engfunc(EngFunc_RemoveEntityiEnt)
            return 
FMRES_SUPERCEDE;
        }
    }

    return 
FMRES_IGNORED
}

public 
client_putinserver(id)
{
    if(!
bot_register && is_user_bot(id))
    {
        
bot_register 1
        set_task
(1.0"do_register"id)
    }
    
    
g_showmenu[id] = true
    g_escape_point
[id] = 0
    g_ena_ready_sound
[id] = g_ena_background_sound[id] = 1
}

public 
client_disconnect(id)
{
    
remove_task(id+TASK_TEAMMSG)
    
check_win_con()
}

public 
do_register(id)
{
    
RegisterHamFromEntity(Ham_Spawnid"fw_Spawn_Post"1)
    
RegisterHamFromEntity(Ham_TakeDamageid"fw_TakeDamage")    
    
RegisterHamFromEntity(Ham_Killedid"fw_Killed_Post"1)
    
RegisterHamFromEntity(Ham_Player_ResetMaxSpeedid"fw_PlayerResetMaxSpeed"0)
}

public 
PatchRoundInfinity()
{
    
handleHookCheckMapConditions OrpheuRegisterHookOrpheuGetFunction"CheckMapConditions" "CHalfLifeMultiplay" ), "CheckConditions" );
    
handleHookCheckWinConditions OrpheuRegisterHookOrpheuGetFunction"CheckWinConditions" "CHalfLifeMultiplay" ), "CheckConditions" );
    
    if (
is_linux_server())
    {
        
handleHookHasRoundTimeExpired OrpheuRegisterHookOrpheuGetFunction"HasRoundTimeExpired" "CHalfLifeMultiplay" ), "CheckConditions" );
    } else 
    {
        
patchRoundTime .undo false;
        
//BytesToReplace("roundTimeCheck", { 0x90, 0x90, 0x90 } );
    
}
}

public 
UnPatchRoundInfinity()
{
    
OrpheuUnregisterHookhandleHookCheckMapConditions );
    
OrpheuUnregisterHookhandleHookCheckWinConditions );
    
    if(
is_linux_server())
    {
        
OrpheuUnregisterHookhandleHookHasRoundTimeExpired );
    } else 
    {
        
patchRoundTime .undo true
        
//BytesToReplace("roundTimeCheck", { 0xF6, 0xC4, 0x41 } );
    
}
}

public 
OrpheuHookReturn:CheckConditions ()
{
    
OrpheuSetReturn(false)
    return 
OrpheuSupercede
}

public 
OnInstallGameRules()
{
    
g_pGameRules OrpheuGetReturn() 
}
 public 
patchRoundTime( const bool:undo )
{
    static const 
keyName[] = "RoundTime";
    static 
funcIndexfuncIndex || ( funcIndex funcidx"patchRoundTime" ) );

    static 
bool:hasBackup;
    static 
bool:patched;

    if( !
undo )
    {
        if( !
hasBackup )
        {
            if( 
SignatureFoundRoundTime ] )
            {
                return;
            }

            const 
numBytes 5;

            new const 
bytesToPathnumBytes ] =
            {
                
0x900x900x900x90,  /* nop ...  */
                
0xE9                     /* call ... */
            
};

            
setErrorFilter( .active true, .attempts 2, .functionIndex funcIndex );

            
prepareDataRoundTimekeyName"RoundTimeCheck_#1"bytesToPathsizeof bytesToPath );
            
prepareDataRoundTimekeyName"RoundTimeCheck_#2"bytesToPathsizeof bytesToPath );

            
hasBackup true;
        }

        if( !
patched && getPatchDataskeyName ) )
        {
            
replaceBytesPatchesDatasAddress ], PatchesDatasNewBytes ], PatchesDatasNumBytes ] );
            
patched true;

            if( 
ErrorFilterBrokenFlow ] )
            {
                
ErrorFilterBrokenFlow ] = false;
                if (
is_linux_server())
                {
                    
handleHookHasRoundTimeExpired OrpheuRegisterHookOrpheuGetFunction"HasRoundTimeExpired" "CHalfLifeMultiplay" ), "CheckConditions" );
                } else 
                {
                    
patchRoundTime .undo false;
                    
//BytesToReplace("roundTimeCheck", { 0x90, 0x90, 0x90 } );
                
}
            }
        }
    }
    else if( 
hasBackup && patched && getPatchDataskeyName ) )
    {
        
replaceBytesPatchesDatasAddress ], PatchesDatasOldBytes ], PatchesDatasNumBytes ] );
        
patched false;
    }
}

bool:getPatchDatas( const keyName[] )
{
    return 
TrieGetArrayTrieMemoryPatcheskeyNamePatchesDatassizeof PatchesDatas );
}

prepareData( const PatchFunction:function, const keyName[], const memoryIdent[], const bytesList[], const bytesCount )
{
    if( 
ErrorFilterSigFound ] )
    {
        return;
    }

    
TrieMemoryPatches || ( TrieMemoryPatches TrieCreate() );
    
TrieSigsNotFound  || ( TrieSigsNotFound  TrieCreate() );

    if( 
TrieKeyExistsTrieSigsNotFoundmemoryIdent ) )
    {
        return;
    }

    
copyErrorFilterCurrIdent ], charsmaxErrorFilterCurrIdent ] ), memoryIdent );

    new 
address getStartAddressmemoryIdent );

    if( 
address )
    {
        
setErrorFilter( .active false, .sigFound SignatureFound[ function ] = true );

        
getBytesaddressPatchesDatasOldBytes ], bytesCount );
        
arrayCopy( .into PatchesDatasNewBytes ], .from bytesList, .len bytesCount, .ignoreTags false, .intoSize sizeof PatchesDatasNewBytes ], .fromSize bytesCount );

        
PatchesDatasNumBytes ] = bytesCount;
        
PatchesDatasAddress  ] = address;

        
TrieSetArrayTrieMemoryPatcheskeyNamePatchesDatassizeof PatchesDatas );
    }
}
arrayCopyany:into[], const any:from[], lenbool:ignoreTags false,
                
intoTag tagof intointoSize sizeof intointoPos 0,
                
fromTag tagof fromfromSize sizeof fromfromPos )
{
    if( !
ignoreTags && intoTag != fromTag )
    {
        return 
0;
    }

    new 
i;

    while( 
len )
    {
        if( 
intoPos >= intoSize || fromPos >= fromSize )
        {
            break;
        }

        
intointoPos++ ] = fromfromPos++ ];
        
i++;
    }

    return 
i;
}

setErrorFilter( const bool:active false, const attempts 0, const bool:sigFound false, const functionIndex )
{
    if( 
active && ErrorFilterActive ] )
    {
        return;
    }

    
ErrorFilterActive    ] = active;
    
ErrorFilterAttempts  ] = attempts;
    
ErrorFilterFuncIndex ] = functionIndex;
    
ErrorFilterSigFound  ] = sigFound;
}
 
getStartAddress( const identifier[] )
{
    new 
address;
    
OrpheuMemoryGetidentifieraddress );

    return 
address;
}
getBytes( const startAddressbytesList[], const numBytes )
{
    new const 
dataType[] = "byte";
    new 
address startAddress;

    for( new 
0numBytesi++ )
    {
        
bytesList] = OrpheuMemoryGetAtAddressaddressdataTypeaddress );
        
address++;
    }
}

replaceBytes( const startAddress, const bytes[], const numBytes )
{
    static const 
dataType[] = "byte";

    new 
address startAddress;

    for( new 
0numBytesi++)
    {
        
OrpheuMemorySetAtAddressaddressdataType1bytes], address );
        
address++;
    }
}




public 
load_config_file()
{
    
// Build customization file path
    
new path[64]
    
get_configsdir(pathcharsmax(path))
    
format(pathcharsmax(path), "%s/%s"pathCONFIG_FILE)
    
    
// File not present
    
if (!file_exists(path))
    {
        new 
error[100]
        
formatex(errorcharsmax(error), "[ZE] Can't Load Config File: %s!"path)
        
set_fail_state(error)
        return;
    }
    
    
// Set up some vars to hold parsing info
    
new linedata[1024], key[64], value[960], section
    
    
// Open customization file for reading
    
new file fopen(path"rt")
    
    while (
file && !feof(file))
    {
        
// Read one line at a time
        
fgets(filelinedatacharsmax(linedata))
        
        
// Replace newlines with a null character to prevent headaches
        
replace(linedatacharsmax(linedata), "^n""")
        
        
// Blank line or comment
        
if (!linedata[0] || linedata[0] == ';') continue;
        
        
// New section starting
        
if (linedata[0] == '[')
        {
            
section++
            continue;
        }
    
        
// Get key and value(s)
        
strtok(linedatakeycharsmax(key), valuecharsmax(value), '=')

        
// Trim spaces
        
trim(key)
        
trim(value)

        switch (
section)
        {
            case 
1// Main Config
            
{    
                if (
equal(key"MIN_PLAYER"))
                    
cfg_min_player str_to_num(value)
                else if (
equal(key"DEFAULT_LIGHT"))
                    
copy(cfg_default_lightsizeof(cfg_default_light), value)
                else if (
equal(key"ZOMBIE_RELEASE_TIME"))
                    
cfg_zom_release_time str_to_num(value)
                else if (
equal(key"HUMAN_FREEZE_TIME"))
                    
cfg_hum_freeze_time str_to_num(value)
                else if (
equal(key"ROUND_TIME"))
                    
cfg_round_time str_to_num(value)                    
                    
            }
            case 
2// Fog
            
{
                if (
equal(key"FOG_ENABLE"))
                    
cfg_use_fog str_to_num(value)
                else if (
equal(key"FOG_DENSITY"))
                    
copy(cfg_fog_densitysizeof(cfg_fog_density), value)
                else if (
equal(key"FOG_COLOR"))
                    
copy(cfg_fog_colorsizeof(cfg_fog_color), value)        
            }
            case 
3// Human Config
            
{
                if (
equal(key"HUMAN_HEALTH"))
                    
cfg_human_health str_to_num(value)
                else if (
equal(key"HUMAN_ARMOR"))
                    
cfg_human_armor str_to_num(value)
                else if (
equal(key"HUMAN_GRAVITY"))
                    
cfg_human_gravity str_to_float(value)
                else if (
equal(key"HUMAN_SPEED"))
                    
cfg_human_speed str_to_float(value)                
            }
            case 
4// Zombie Config
            
{
                if (
equal(key"ZOMBIE_HEALTH"))
                    
cfg_zombie_health str_to_num(value)
                else if (
equal(key"ZOMBIE_ARMOR"))
                    
cfg_zombie_armor str_to_num(value)
                else if (
equal(key"ZOMBIE_GRAVITY"))
                    
cfg_zombie_gravity str_to_float(value)
                else if (
equal(key"ZOMBIE_SPEED"))
                    
cfg_zombie_speed str_to_float(value)    
                else if (
equal(key"ZOMBIE_KNOCKBACK_POWER"))
                    
cfg_zombie_kbpower str_to_float(value)                        
            }
            case 
5// Sky
            
{
                if(
equal(key"SKY_NAME"))
                    
copy(cfg_skynamesizeof(cfg_skyname), value)
            }
            case 
6// Model
            
{
                if (
equal(key"HUMAN_MODEL"))
                {
                    
// Parse sounds
                    
while(value[0] != && strtok(valuekeycharsmax(key), valuecharsmax(value), ','))
                    {
                        
// Trim spaces
                        
trim(key)
                        
trim(value)
                        
                        
// Add to sounds array
                        
ArrayPushString(human_modelkey)
                    }
                }
                else if(
equal(key"ZOMBIE_ORIGIN_MODEL"))
                {
                    
// Parse sounds
                    
while (value[0] != && strtok(valuekeycharsmax(key), valuecharsmax(value), ','))
                    {
                        
// Trim spaces
                        
trim(key)
                        
trim(value)
                        
                        
// Add to sounds array
                        
ArrayPushString(origin_zombie_modelkey)
                    }
                }
                else if(
equal(key"ZOMBIE_HOST_MODEL"))
                {
                    
// Parse sounds
                    
while (value[0] != && strtok(valuekeycharsmax(key), valuecharsmax(value), ','))
                    {
                        
// Trim spaces
                        
trim(key)
                        
trim(value)
                        
                        
// Add to sounds array
                        
ArrayPushString(host_zombie_modelkey)
                    }
                }
                else if(
equal(key"ZOMBIE_CLAW_MODEL"))
                {
                    
// Parse sounds
                    
while (value[0] != && strtok(valuekeycharsmax(key), valuecharsmax(value), ','))
                    {
                        
// Trim spaces
                        
trim(key)
                        
trim(value)
                        
                        
// Add to sounds array
                        
ArrayPushString(zombie_claws_modelkey)
                    }
                }                
            }
            case 
7// Sound
            
{
                if (
equal(key"READY"))
                {
                    
// Parse weapons
                    
while (value[0] != && strtok(valuekeycharsmax(key), valuecharsmax(value), ','))
                    {
                        
// Trim spaces
                        
trim(key)
                        
trim(value)
                        
                        
// Add to weapons array
                        
ArrayPushString(ready_soundkey)
                    }
                }
                else if (
equal(key"AMBIENCE"))
                {
                    
// Parse weapons
                    
while (value[0] != && strtok(valuekeycharsmax(key), valuecharsmax(value), ','))
                    {
                        
// Trim spaces
                        
trim(key)
                        
trim(value)
                        
                        
// Add to weapons array
                        
ArrayPushString(ambience_soundkey)
                    }
                }
                if (
equal(key"ZOMBIE_APPEAR"))
                {
                    
// Parse weapons
                    
while (value[0] != && strtok(valuekeycharsmax(key), valuecharsmax(value), ','))
                    {
                        
// Trim spaces
                        
trim(key)
                        
trim(value)
                        
                        
// Add to weapons array
                        
ArrayPushString(zombieappear_soundkey)
                    }
                }
                else if (
equal(key"PLAYER_INFECT"))
                {
                    
// Parse weapons
                    
while (value[0] != && strtok(valuekeycharsmax(key), valuecharsmax(value), ','))
                    {
                        
// Trim spaces
                        
trim(key)
                        
trim(value)
                        
                        
// Add to weapons array
                        
ArrayPushString(zombieinfect_soundkey)
                    }
                }
                else if (
equal(key"ZOMBIE_PAIN"))
                {
                    
// Parse weapons
                    
while (value[0] != && strtok(valuekeycharsmax(key), valuecharsmax(value), ','))
                    {
                        
// Trim spaces
                        
trim(key)
                        
trim(value)
                        
                        
// Add to weapons array
                        
ArrayPushString(zombiepain_soundkey)
                    }
                }
                else if (
equal(key"COUNTDOWN"))
                {
                    
copy(count_soundsizeof(count_sound), value)
                }
                else if (
equal(key"ESCAPE_SUCCESS"))
                {
                    
// Parse weapons
                    
while (value[0] != && strtok(valuekeycharsmax(key), valuecharsmax(value), ','))
                    {
                        
// Trim spaces
                        
trim(key)
                        
trim(value)
                        
                        
// Add to weapons array
                        
ArrayPushString(escape_suc_soundkey)
                    }
                }
                else if (
equal(key"ESCAPE_FAIL"))
                {
                    
// Parse weapons
                    
while (value[0] != && strtok(valuekeycharsmax(key), valuecharsmax(value), ','))
                    {
                        
// Trim spaces
                        
trim(key)
                        
trim(value)
                        
                        
// Add to weapons array
                        
ArrayPushString(escape_fail_soundkey)
                    }
                }
                else if (
equal(key"ATTACK_HIT"))
                {
                    
// Parse weapons
                    
while (value[0] != && strtok(valuekeycharsmax(key), valuecharsmax(value), ','))
                    {
                        
// Trim spaces
                        
trim(key)
                        
trim(value)
                        
                        
// Add to weapons array
                        
ArrayPushString(zombieattack_soundkey)
                    }
                }
                else if (
equal(key"ATTACK_MISS"))
                {
                    
// Parse weapons
                    
while (value[0] != && strtok(valuekeycharsmax(key), valuecharsmax(value), ','))
                    {
                        
// Trim spaces
                        
trim(key)
                        
trim(value)
                        
                        
// Add to weapons array
                        
ArrayPushString(zombieswing_soundkey)
                    }
                }            
                else if (
equal(key"ATTACK_WALL"))
                {
                    
// Parse weapons
                    
while (value[0] != && strtok(valuekeycharsmax(key), valuecharsmax(value), ','))
                    {
                        
// Trim spaces
                        
trim(key)
                        
trim(value)
                        
                        
// Add to weapons array
                        
ArrayPushString(zombiewall_soundkey)
                    }
                }    
            }
        }
    }
    if (
filefclose(file)    


la otra parte del sma

Código PHP:
public plugin_natives()
{
    new 
map_name[32], check_index
    get_mapname
(map_namesizeof(map_name))
    
    for(
check_index 0check_index sizeof(allow_map_prefix); check_index++)
    {
        if(
equali(map_nameallow_map_prefix[check_index], strlen(allow_map_prefix[check_index])))
            break
    }
    
    if(
check_index == sizeof(allow_map_prefix))
        return
        
    
// Check
    
register_native("ze_is_user_zombie""native_get_zombie"1)
    
register_native("ze_get_zombie_type""native_get_zombie_type"1)
    
    
// Set
    
register_native("ze_set_user_zombie""native_set_zombie"1)
    
register_native("ze_set_user_human""native_set_human"1)
    
    
// GamePlays
    
register_native("ze_set_stopgame""native_set_stopgame"1)
    
register_native("ze_reset_gameplay""native_reset_gameplay"1)
}
// End of Plugin & Precache & Config Zone

// Native
public native_get_zombie(id)
{
    if(!
is_user_connected(id))
        return 

    
if(!is_user_alive(id))
        return 
0
        
    
return g_zombie[id]
}

public 
native_get_zombie_type(id)
{
    if(!
is_user_connected(id))
        return -
1
    
if(!is_user_alive(id))
        return -
1
        
    
return g_zombie_type[id]
}

public 
native_set_zombie(idzombie_type)
{
    if(!
is_user_connected(id))
        return 

    
if(!is_user_alive(id))
        return 
0
    
if(g_zombie[id])
        return 
0
        
    set_user_zombie
(idzombie_type1)
    return 
1
}

public 
native_set_human(id)
{
    if(!
is_user_connected(id))
        return 

    
if(!is_user_alive(id))
        return 
0    
        
    set_human_stuff
(id)
    return 
0
}

public 
native_set_stopgame(stop_typestop)
{
    
g_gamestop[stop_type] = stop
    
return 1
}

public 
native_reset_gameplay(restart)
{
    
g_gamestop[START_TYPE_NEW] = 0
    g_gamestop
[START_ZOMBIE_APPEAR] = 0
    g_gamestop
[START_ZOMBIE_RELEASE] = 0
    
    
if(restartTerminateRound(TEAM_START)
}
// End Of Native

// Event: New Round
public event_newround()
{
    
ExecuteForward(g_forwards[FORWARD_GAMESTART], g_fwDummyResultg_gamestart)
    
    
// Reset Vars
    
g_endround 0
    g_gamestart 
0
    g_count 
cfg_hum_freeze_time
    
    
// Remove Task
    
remove_task(TASK_COUNTDOWN)
    
remove_task(TASK_COUNTDOWN2)
    
remove_task(TASK_ROUNDTIME)
    
    
ambience_sound_stop(0)
    
// Team
    
for(new player 1player <= g_MaxPlayersplayer++)
    {
        
remove_task(player+TASK_TEAMMSG)
        
remove_task(player+TASK_AMBIENCE)
    }
        
    if(
g_gamestop[START_TYPE_NEW])
        return
    
    
set_task(0.1"event_newround2")    
}

public 
event_newround2()
{
    if(
get_player_num(TEAM_ALLAL_ALIVE) < cfg_min_player)
    {
        
client_printc(0"!g[SUPER NOVA]!n %L"OFFICIAL_LANG"NOT_ENOUGH_PLAYER"cfg_min_player)
        
g_started 0
        
        
return
    }
    
    
client_printc(0"!g[SUPER NOVA]!n %L"OFFICIAL_LANG"GOOD_LUCK")
    
    static 
temp_string[128]
    
ArrayGetString(ready_soundrandom_num(0ArraySize(ready_sound) - 1), temp_stringsizeof(temp_string))
    for(new 
0g_MaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue
        if(!
g_ena_ready_sound[i])
            continue

        
PlaySound(itemp_string)
    }
    
    
set_task(1.0"do_countdown"TASK_COUNTDOWN__"b")
    
set_task(get_cvar_float("mp_roundtime") * 60.0 43.0"do_zombie_win"TASK_ROUNDTIME)    
}

public 
do_countdown(taskid)
{
    if(
g_endround)
    {
        
remove_task(taskid)
        return
    }
    
    if (!
g_count)
    {
        
start_game_now()
        
remove_task(taskid)
        return
    }
    
    if (
g_count <= cfg_hum_freeze_time)
    {
        static 
sound[64]
        
format(soundsizeof sound 1count_soundg_count)
        
PlaySound(0sound)
    }
    
    new 
message[64]
    
format(messagecharsmax(message), "%L"OFFICIAL_LANG"RUN_READY_COUNTDOWN"g_count)
    
client_print(0print_centermessage)
    
    
g_count--
}
// End of Event: New Round

// Event: Round End
public event_roundend()
{
    
g_endround 1
    
    remove_task
(TASK_COUNTDOWN)
    
remove_task(TASK_COUNTDOWN2)
    for(new 
0g_MaxPlayersi++)
        
remove_task(i+TASK_AMBIENCE)
    
remove_task(TASK_ROUNDTIME)
    
    
ambience_sound_stop(0)
}

// End of Event: Round End

public cmd_jointeam(id)
{    
    if(!
is_user_connected(id))
        return 
1
    
    
if(cs_get_user_team(id) == CS_TEAM_CT || cs_get_user_team(id) == CS_TEAM_T)
    {
        
open_game_menu(id)
        return 
1
    
}
    
    return 
PLUGIN_CONTINUE
}

public 
cmd_joinclass(id)
{
    if(!
is_user_connected(id))
        return 
1
    
if(cs_get_user_team(id) != CS_TEAM_CT || cs_get_user_team(id) != CS_TEAM_T)
        return 
0
    
if(g_gamestart == || g_gamestart == 2)
    {
        
fm_cs_set_user_team(idCS_TEAM_CT1)
        
        
g_zombie[id] = 0
        g_zombie_type
[id] = 0
        g_nvg
[id] = 0
        g_menufailsafe
[id] = false
        
        
if(TASKID_WEAPONSMENU idremove_task(TASKID_WEAPONSMENU id)
    }
    
    return 
0
}

public 
open_game_menu(id)
{
    static 
menustring[128]
    
    
formatex(stringsizeof(string), "%L"OFFICIAL_LANG"GAME_MENU_NAME")
    
menu menu_create(string"gamem_handle")
    
    
// Enable Equipment Menu
    
formatex(stringsizeof(string), "%L"OFFICIAL_LANG"EQUIPMENT_NAME")
    
menu_additem(menustring"1"0)
    
    
// Game Infomation
    
formatex(stringsizeof(string), "%L"OFFICIAL_LANG"GAMEINFO_NAME")
    
menu_additem(menustring"2"0)
    
    
// Game Infomation
    
formatex(stringsizeof(string), "%L"OFFICIAL_LANG"PCONFIG_NAME")
    
menu_additem(menustring"3"0)    
    
    
menu_setprop(menuMPROP_EXITMEXIT_ALL)
    
menu_display(idmenu0)
}

public 
gamem_handle(idmenuitem)
{
    if(!
is_user_connected(id))
        return
    
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return
    }
    
    new 
data[6], szName[64];
    new 
accesscallback;
    
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), szName,charsmax(szName), callback);
    
    new 
key str_to_num(data);
    
    switch(
key)
    {
        case 
1// Equipment
        
{
            
g_showmenu[id] = true
            client_printc
(id"!g[SUPER NOVA]!n %L"OFFICIAL_LANG"EQUIP_ENABLE")
        }
        case 
2// Game Info
        
{
            static 
string_name[128], string_data[1028]
            
            
// Game Infomation
            
formatex(string_namesizeof(string_name), "%L"OFFICIAL_LANG"GAMEINFO_NAME")
            
formatex(string_datasizeof(string_data), "%L"OFFICIAL_LANG"GAME_INFORMATION")
            
            
show_motd(idstring_datastring_name)
        }    
        case 
3// Player Config
        
{
            
player_config(id)
        }            
    }
    
    return
}

// Player Config
public player_config(id)
{
    static 
menustring[128], on_off[10]
    
    
formatex(stringsizeof(string), "%L"OFFICIAL_LANG"PCONFIG_NAME")
    
menu menu_create(string"pconfig_handle")
    
    
// Ready Sound
    
if(g_ena_ready_sound[id])
    {
        
formatex(on_offsizeof(on_off), "%L"OFFICIAL_LANG"PCONFIG_ON")
        
formatex(stringsizeof(string), "%L    \y%s"OFFICIAL_LANG"PCONFIG_READY_SOUND"on_off)
    } else {
        
formatex(on_offsizeof(on_off), "%L"OFFICIAL_LANG"PCONFIG_OFF")
        
formatex(stringsizeof(string), "%L    \r%s"OFFICIAL_LANG"PCONFIG_READY_SOUND"on_off)    
    }
    
menu_additem(menustring"1"0)
    
    
// Background Sound
    
if(g_ena_background_sound[id])
    {
        
formatex(on_offsizeof(on_off), "%L"OFFICIAL_LANG"PCONFIG_ON")
        
formatex(stringsizeof(string), "%L    \y%s"OFFICIAL_LANG"PCONFIG_BACKGROUND_SOUND"on_off)
    } else {
        
formatex(on_offsizeof(on_off), "%L"OFFICIAL_LANG"PCONFIG_OFF")
        
formatex(stringsizeof(string), "%L    \r%s"OFFICIAL_LANG"PCONFIG_BACKGROUND_SOUND"on_off)    
    }
    
menu_additem(menustring"2"0)
    
    
menu_setprop(menuMPROP_EXITMEXIT_ALL)
    
menu_display(idmenu0)    
}

public 
pconfig_handle(idmenuitem)
{
    if(!
is_user_connected(id))
        return
    
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return
    }
    
    new 
data[6], szName[64];
    new 
accesscallback;
    
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), szName,charsmax(szName), callback);
    
    new 
key str_to_num(data);
    
    switch(
key)
    {
        case 
1// Ready Sound
        
{
            if(
g_ena_ready_sound[id])
            {
                
g_ena_ready_sound[id] = 0
                
if(g_gamestart == 0ambience_sound_stop(id)
            } else {
                
g_ena_ready_sound[id] = 1
                
if(g_gamestart == 0)
                {
                    static 
temp_string[128]
                    
ArrayGetString(ready_soundrandom_num(0ArraySize(ready_sound) - 1), temp_stringsizeof(temp_string))
                    
                    
PlaySound(idtemp_string)
                }
            }
            
player_config(id)
        }
        case 
2// Background Sound
        
{
            if(
g_ena_background_sound[id])
            {
                
g_ena_background_sound[id] = 0
                
if(g_gamestart 0ambience_sound_stop(id)
            } else {
                
g_ena_background_sound[id] = 1
                
if(g_gamestart 0)
                {
                    static 
temp_string[128]
                    
ArrayGetString(ambience_soundrandom_num(0ArraySize(ambience_sound) - 1), temp_stringsizeof(temp_string))
    
                    
PlaySound(idtemp_string)    
                    
set_task(105.0"check_ambience_sound"id+TASK_AMBIENCE__"b")    
                }
            }
            
player_config(id)            
        }
    }
}

// NightVision
public cmd_nightvision(id)
{
    if (!
is_user_alive(id) || !g_zombie[id]) return PLUGIN_HANDLED;
    
    if (!
g_nvg[id])
    {
        
SwitchNvg(id1)
        
PlaySound(idsound_nvg[1])
    }
    else
    {
        
SwitchNvg(id0)
        
PlaySound(idsound_nvg[0])
    }    
    
    return 
PLUGIN_CONTINUE
}

public 
SwitchNvg(idmode)
{
    if (!
is_user_connected(id)) return;
    
    
g_nvg[id] = mode
    set_user_nvision
(id)
}

public 
set_user_nvision(id)
{    
    if (!
is_user_connected(id)) return;
    
    new 
alpha
    
if (g_nvg[id]) alpha 70
    
else alpha 0
    
    message_begin
(MSG_ONE_UNRELIABLEget_user_msgid("ScreenFade"), _id)
    
write_short(0// duration
    
write_short(0// hold time
    
write_short(0x0004// fade type
    
write_byte(253// r
    
write_byte(110// g
    
write_byte(110// b
    
write_byte(alpha// alpha
    
message_end()
    
    if(
g_nvg[id])
    {
        
set_player_light(id"z")
        } else {
        
set_player_light(idcfg_default_light)
    }
}

public 
set_player_light(id, const LightStyle[])
{
    
message_begin(MSG_ONE_UNRELIABLESVC_LIGHTSTYLE, .player id)
    
write_byte(0)
    
write_string(LightStyle)
    
message_end()
}
// End of NightVision

// Start Game
public start_game_now()
{
    
g_gamestart 1
    
    
static temp_string[128]
    
ArrayGetString(ambience_soundrandom_num(0ArraySize(ambience_sound) - 1), temp_stringsizeof(temp_string))
    
    for(new 
0g_MaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue
        if(!
g_ena_background_sound[i])
            continue
        
        
PlaySound(itemp_string)    
        
set_task(105.0"check_ambience_sound"i+TASK_AMBIENCE__"b")
    }
    
    if(
g_gamestop[START_ZOMBIE_APPEAR])
    {
        
ExecuteForward(g_forwards[FORWARD_GAMESTART], g_fwDummyResultg_gamestart)
        return
    }
        
    
// Make Zombies
    
for(new 0require_zombie(); i++)
    {
        
ExecuteForward(g_forwards[FORWARD_INFECTED], g_fwDummyResulti0)
        
set_user_zombie(get_random_player(TEAM_CTAL_ALIVE), ZOMBIE_TYPE_ORIGIN0)
    }
    
    
g_count cfg_zom_release_time
    set_task
(1.0"do_count_rezombie"TASK_COUNTDOWN2__"b")
    
    for(new 
0g_MaxPlayersi++)
    {
        if(
is_user_connected(i) && is_user_alive(i) && !g_zombie[i])
        {
            
fm_reset_user_speed(i)
            
fm_set_user_speed(icfg_human_speed)
            
set_user_gravity(icfg_human_gravity)
        }
    }
    
    
ExecuteForward(g_forwards[FORWARD_GAMESTART], g_fwDummyResultg_gamestart)
}

public 
check_ambience_sound(id)
{
    
id -= TASK_AMBIENCE
    
    
if(g_endround)
    {
        
remove_task(id+TASK_AMBIENCE)
        return
    }
    if(!
g_ena_background_sound[id])
    {
        
remove_task(id+TASK_AMBIENCE)
        return        
    }
    
    static 
temp_string[128]
    
ArrayGetString(ambience_soundrandom_num(0ArraySize(ambience_sound) - 1), temp_stringsizeof(temp_string))
    
    
PlaySound(idtemp_string)    
}

public 
do_count_rezombie(taskid)
{
    if(
g_endround)
    {
        
remove_task(taskid)
        return
    }
    
    if (!
g_count)
    {
        
release_zombie()
        
remove_task(taskid)
        return
    }
    
    
set_hudmessage(2552550, -1.00.2112.02.0)
    
ShowSyncHudMsg(0notice_hud"%L"OFFICIAL_LANG"ZOMBIE_RELEASE_COUNTDOWN"g_count)
    
    
g_count--
}
// End of Start Game

// Game Main
public release_zombie()
{
    
g_gamestart 2
    
    
if(g_gamestop[START_ZOMBIE_RELEASE])
    {
        
ExecuteForward(g_forwards[FORWARD_GAMESTART], g_fwDummyResultg_gamestart)
        return
    }
    
    for(new 
0g_MaxPlayersi++)
    {
        if(!
is_user_connected(i) || !is_user_alive(i))
            continue
        if(!
g_zombie[i])
            continue
        
        
fm_set_user_speed(icfg_zombie_speed)
        
set_user_gravity(i,  cfg_zombie_gravity)        
    }
    
    
ExecuteForward(g_forwards[FORWARD_GAMESTART], g_fwDummyResultg_gamestart)    
}

public 
client_PostThink(id)
{
    if(!
is_user_connected(id))
        return
    if(
get_gametime() - 1.0 delay_hud[id])
    {
        
// Show Score
        
set_hudmessage(255255255, -1.00.002.02.0)
        
ShowSyncHudMsg(idscore_hud"%L"OFFICIAL_LANG"HUD_SCORE"g_team_score[TEAM_T], g_team_score[TEAM_CT])
        
        
// Add Point for Who is Running Fast
        
if(!g_zombie[id])
        {
            static 
Float:Velocity[3], Speed
            
            pev
(idpev_velocityVelocity)
            
Speed floatround(vector_length(Velocity))
            
            switch(
Speed)
            {
                case 
210..229g_escape_point[id] += 1
                
case 230..249g_escape_point[id] += 2
                
case 250..300g_escape_point[id] += 3
            
}
        }
        
        
// Show Stat
        
show_stat(id)
        
delay_hud[id] = get_gametime()
    }
    
/*if(!g_gamestart)
    {
        if(!is_user_alive(id))
            return
        
        if(cs_get_user_team(id) != CS_TEAM_CT) 
        {
            set_human_stuff(id)
        }
    } else {
        if(cs_get_user_team(id) == CS_TEAM_T && !g_zombie[id]) 
        {
            set_human_stuff(id)
        }
    }*/
}

public 
show_stat(id)
{
    
get_stat()
    new 
temp_string_first[64], temp_string_second[64], temp_string_third[64], curidPlayer_Name[64], none[32]
    
    
formatex(nonesizeof(none), "%L"OFFICIAL_LANG"RANK_NONE")
    
    
// Rank First
    
curid g_escape_rank[RANK_FIRST]
    if(
is_user_alive(curid) && !g_zombie[curid] && g_escape_point[curid] != 0)
    {
        
get_user_name(curidPlayer_Namesizeof(Player_Name))
        
formatex(temp_string_firstsizeof(temp_string_first), "%L"OFFICIAL_LANG"RANK_FIRST"Player_Name)
    } else {
        
get_user_name(curidPlayer_Namesizeof(Player_Name))
        
formatex(temp_string_firstsizeof(temp_string_first), "%L"OFFICIAL_LANG"RANK_FIRST"none)    
    }
    
    
// Rank Second
    
curid g_escape_rank[RANK_SECOND]
    if(
is_user_alive(curid) && !g_zombie[curid] && g_escape_point[curid] != 0)
    {
        
get_user_name(curidPlayer_Namesizeof(Player_Name))
        
formatex(temp_string_secondsizeof(temp_string_second), "%L"OFFICIAL_LANG"RANK_SECOND"Player_Name)
    } else {
        
get_user_name(curidPlayer_Namesizeof(Player_Name))
        
formatex(temp_string_secondsizeof(temp_string_second), "%L"OFFICIAL_LANG"RANK_SECOND"none)    
    }
    
    
// Rank Third
    
curid g_escape_rank[RANK_THIRD]
    if(
is_user_alive(curid) && !g_zombie[curid] && g_escape_point[curid] != 0)
    {
        
get_user_name(curidPlayer_Namesizeof(Player_Name))
        
formatex(temp_string_thirdsizeof(temp_string_third), "%L"OFFICIAL_LANG"RANK_THIRD"Player_Name)
    } else {
        
get_user_name(curidPlayer_Namesizeof(Player_Name))
        
formatex(temp_string_thirdsizeof(temp_string_third), "%L"OFFICIAL_LANG"RANK_THIRD"none)    
    }    

    
set_hudmessage(025500.050.3002.02.0)
    
ShowSyncHudMsg(idstat_hud"%L^n%s^n%s^n%s"OFFICIAL_LANG"RANK_INFO"temp_string_firsttemp_string_secondtemp_string_third)    
}

public 
get_stat()
{
    static 
highestcurrent
    highest 
current 0
    
    
// Rank First
    
for(new 0g_MaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue
        if(!
is_user_alive(i))
            continue
        if(
g_zombie[i])
            continue
            
        if(
g_escape_point[i] > highest)
        {
            
current i
            highest 
g_escape_point[i]
        }
    }
    
g_escape_rank[RANK_FIRST] = current
    
    
// Rank Second
    
highest current 0    
    
for(new 0g_MaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue
        if(!
is_user_alive(i))
            continue
        if(
g_zombie[i])
            continue            
        if(
g_escape_rank[RANK_FIRST] == i)
            continue
            
        if(
g_escape_point[i] > highest)
        {
            
current i
            highest 
g_escape_point[i]
        }
    }
    
g_escape_rank[RANK_SECOND] = current        
    
    
// Rank Third
    
highest current 0    
    
for(new 0g_MaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue
        if(!
is_user_alive(i))
            continue
        if(
g_zombie[i])
            continue            
        if(
g_escape_rank[RANK_FIRST] == || g_escape_rank[RANK_SECOND] == i)
            continue
            
        if(
g_escape_point[i] > highest)
        {
            
current i
            highest 
g_escape_point[i]
        }
    }
    
g_escape_rank[RANK_THIRD] = current    
}

public 
set_user_zombie(idzombie_typeforward_exec)
{
    
fm_cs_set_user_team(idCS_TEAM_T1)
    
    
g_zombie[id] = 1
    g_zombie_type
[id] = zombie_type
    
    set_user_health
(idzombie_type == floatround(float(cfg_zombie_health) / 2.0) : cfg_zombie_health)
    
set_user_armor(idcfg_zombie_armor)
    
    if(
zombie_type == ZOMBIE_TYPE_HOST)
        
fm_set_user_speed(idcfg_zombie_speed)
    else 
    {
        if(!
forward_exec || task_exists(TASK_COUNTDOWN2))
            
fm_set_user_speed(id0.1)
        else 
fm_set_user_speed(idcfg_zombie_speed)
    }
    
set_user_gravity(idcfg_zombie_gravity)    
    
    static 
temp_string[128], temp_string2[128], random1
    
if(!zombie_type// Host
    
{
        
random1 random_num(0ArraySize(origin_zombie_model) - 1)
        
        
ArrayGetString(host_zombie_modelrandom1temp_stringsizeof(temp_string))
        
fm_cs_set_user_model(idtemp_string)
        
        
#if defined SET_MODELINDEX_OFFSET    
        
static modelindex
        
        modelindex 
ArrayGetCell(host_zombie_modelindexrandom1)
        
fm_cs_set_user_model_index(idmodelindex)
        
        
#endif    
    

    else 
    { 
// Origin
        
random1 random_num(0ArraySize(origin_zombie_model) - 1)
        
        
ArrayGetString(origin_zombie_modelrandom1temp_stringsizeof(temp_string))
        
fm_cs_set_user_model(idtemp_string)    
        
        
#if defined SET_MODELINDEX_OFFSET    
        
static modelindex
        
        modelindex 
ArrayGetCell(origin_zombie_modelindexrandom1)
        
fm_cs_set_user_model_index(idmodelindex)
        
#endif            
    
}
    
    
set_default_zombie(idzombie_type)
    
    
//ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
    
    
ArrayGetString(zombieinfect_soundrandom_num(0ArraySize(zombieinfect_sound) - 1), temp_stringsizeof(temp_string))
    
ArrayGetString(zombieappear_soundrandom_num(0ArraySize(zombieappear_sound) - 1), temp_string2sizeof(temp_string2))
    
    
emit_sound(idCHAN_BODYtemp_string1.0ATTN_NORM0PITCH_NORM)
    
PlaySound(0temp_string2)
    
    
SwitchNvg(id1)
    
PlaySound(idsound_nvg[1])    
    
    
check_win_con()
    
    
set_task(0.5,"set_player_speed",id)
}

stock set_default_zombie(idzombie_type)
{
    if(!
is_user_alive(id))
        return
    if(!
g_zombie[id])
        return
    
    
// Set Spawn Origin
    
if(zombie_type == ZOMBIE_TYPE_ORIGINset_pev(idpev_origing_spawn_origin[id])
    
    
// Remove any zoom (bugfix)
    
cs_set_user_zoom(idCS_RESET_ZOOM1)
    
    
// Remove armor
    
cs_set_user_armor(id0CS_ARMOR_NONE)
    
    
// Drop weapons when infected
    
drop_weapons(id1)
    
drop_weapons(id2)
    
    
// Strip zombies from guns and give them a knife
    
strip_user_weapons(id)
    
give_item(id"weapon_knife")
    
    
/*if(g_gamestart <= 1 || task_exists(TASK_COUNTDOWN2))
        fm_set_user_speed(id, 0.1)
    else fm_set_user_speed(id, cfg_zombie_speed)*/
}

public 
set_player_speed(id)
{
    if(
is_user_alive(id))
    {
        if(
g_gamestart <= || task_exists(TASK_COUNTDOWN2))
            
fm_set_user_speed(id0.1)
        else 
fm_set_user_speed(idcfg_zombie_speed)
    }
}

public 
event_CurWeapon(id)
{
    if(!
is_user_alive(id))
        return 
1
    
if(!g_zombie[id])
        return 
1
    
if(get_user_weapon(id) != CSW_KNIFE)
    {
        
drop_weapons(id1)
        
drop_weapons(id2)
        
        
engclient_cmd(id"weapon_knife")
        } else {
        static 
temp_string[128]
        
ArrayGetString(zombie_claws_modelrandom_num(0ArraySize(zombie_claws_model) - 1), temp_stringsizeof(temp_string))
        
        
set_pev(idpev_viewmodel2temp_string)
        
set_pev(idpev_weaponmodel2"")
    }
    
    return 
0
}

// End of Game Main
public check_win_con()
{
    if(
g_endround)
        return
    if(!
g_gamestart)
        return
    
    if(
get_player_num(TEAM_TAL_ALIVE) == 0)
    {
        
TerminateRound(TEAM_CT)
        } else if(
get_player_num(TEAM_CTAL_ALIVE) == 0) {
        
TerminateRound(TEAM_T)
    }
}

public 
do_zombie_win()
{
    
TerminateRound(TEAM_T)
}

// Message
public message_StatusIcon(msg_idmsg_destmsg_entity)
{
    static 
szMsg[8];
    
get_msg_arg_string(2szMsg ,7);
    
    if(
equal(szMsg"buyzone") && get_msg_arg_int(1))
    {
        
set_pdata_int(msg_entity235get_pdata_int(msg_entity235) & ~(1<<0));
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
message_health(msg_idmsg_destmsg_entity)
{
    static 
health
    health 
get_msg_arg_int(1)
    
    if(
health 255)    
        
set_msg_arg_int(1get_msg_argtype(1), 255)
}
// End of Message

// Ham
public fw_EmitSound(idchannel, const sample[], Float:volumeFloat:attnflagspitch)
{
    
// Block all those unneeeded hostage sounds
    
if (sample[0] == 'h' && sample[1] == 'o' && sample[2] == 's' && sample[3] == 't' && sample[4] == 'a' && sample[5] == 'g' && sample[6] == 'e')
        return 
FMRES_SUPERCEDE;
    
    
// Replace these next sounds for zombies only
    
if (!is_user_connected(id) || !g_zombie[id])
        return 
FMRES_IGNORED;
    
    static 
temp_string[128]
    
    
// Zombie being hit
    
if (sample[7] == 'b' && sample[8] == 'h' && sample[9] == 'i' && sample[10] == 't' ||
    
sample[7] == 'h' && sample[8] == 'e' && sample[9] == 'a' && sample[10] == 'd')
    {
        
ArrayGetString(zombiepain_soundrandom_num(0ArraySize(zombiepain_sound) - 1), temp_stringsizeof(temp_string))
        
emit_sound(idchanneltemp_stringvolumeattnflagspitch)
        
        return 
FMRES_SUPERCEDE;
    }
    
    
// Zombie Attack
    
new attack_type
    
if (equal(sample,"weapons/knife_hitwall1.wav")) attack_type 1
    
else if (equal(sample,"weapons/knife_hit1.wav") ||
    
equal(sample,"weapons/knife_hit3.wav") ||
    
equal(sample,"weapons/knife_hit2.wav") ||
    
equal(sample,"weapons/knife_hit4.wav") ||
    
equal(sample,"weapons/knife_stab.wav")) attack_type 2
    
else if(equal(sample,"weapons/knife_slash1.wav") ||
        
equal(sample,"weapons/knife_slash2.wav")) attack_type 3
    
if (attack_type)
    {
        if (
attack_type == 1)
        {
            
ArrayGetString(zombiewall_soundrandom_num(0ArraySize(zombiewall_sound) - 1), temp_stringsizeof(temp_string))
            
emit_sound(idchanneltemp_stringvolumeattnflagspitch)
            } else if (
attack_type == 2) {
            
ArrayGetString(zombieattack_soundrandom_num(0ArraySize(zombieattack_sound) - 1), temp_stringsizeof(temp_string))
            
emit_sound(idchanneltemp_stringvolumeattnflagspitch)
            } else if (
attack_type == 3) {
            
ArrayGetString(zombieswing_soundrandom_num(0ArraySize(zombieswing_sound) - 1), temp_stringsizeof(temp_string))
            
emit_sound(idchanneltemp_stringvolumeattnflagspitch)
        }
        
        return 
FMRES_SUPERCEDE;
    }
    
    return 
FMRES_IGNORED;
}

public 
fw_GetGameDesc()
{
    static 
GameName[64]
    
formatex(GameNamesizeof(GameName), "%s %s"PLUGINVERSION)
    
    
forward_return(FMV_STRINGGameName)
    return 
FMRES_SUPERCEDE
}

public 
fw_SetClientKeyValue(id, const infobuffer[], const key[])
{
    if(
g_model_locked[id] && equal(key"model"))
        return 
FMRES_SUPERCEDE
    
    
return FMRES_HANDLED
}

public 
fw_Spawn_Post(id)
{
    if (
get_player_num(TEAM_ALLAL_ALIVE) > && !g_started)
    {
        
g_started 1
        TerminateRound
(TEAM_START)
    }        
    
    if(!
is_user_connected(id))
        return 
HAM_IGNORED
    
    g_zombie
[id] = 0
    g_zombie_type
[id] = 0
    g_nvg
[id] = 0
    g_menufailsafe
[id] = false
    g_escape_point
[id] = 0
    
    remove_task
(TASKID_WEAPONSMENU id)
    
    
// Get Your Origin
    
pev(idpev_origing_spawn_origin[id])
    
    if(
g_gamestart)
    {
        
set_user_zombie(idZOMBIE_TYPE_ORIGINg_gamestart == 0)
        return 
HAM_IGNORED
    
}
    
    
fm_cs_set_user_team(idCS_TEAM_CT1)
    
    
set_task(random_float(0.1

05/16/2018 - 22:37:40: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:37:40: [AMXX] Run time error 10: native error (native "ArrayGetString")
05/16/2018 - 22:37:40: [AMXX] [0] zombie_escape_v2.3.sma::do_set_human_model (line 2333)
05/16/2018 - 22:37:45: Expected 0 parameters, got 1
05/16/2018 - 22:37:45: [AMXX] Displaying debug trace (plugin "zombie_escape_v2.3.amxx")
05/16/2018 - 22:37:45: [AMXX] Run time error 10: native error (native "ExecuteForward")
05/16/2018 - 22:37:45: [AMXX] [0] zombie_escape_v2.3.sma::event_newround (line 1228)

tal cual
https://forums.alliedmods.net/showthread.php?p=2444518

pero sigue muriendo a la empezar la ronda
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)