Skip to content

Commit 65c5516

Browse files
Merge pull request #288 from shobhit-pathak/dev
0.8.10
2 parents 11e88a9 + e9832c1 commit 65c5516

File tree

9 files changed

+195
-29
lines changed

9 files changed

+195
-29
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
obj/*
22
bin/*
3-
/.vs
3+
/.vs
4+
MatchZy.sln

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# MatchZy Changelog
22

3+
# 0.8.10
4+
5+
#### May 12, 2025
6+
7+
- Fixed decoy airtime in Practice Mode. (Switched `EventDecoyDetonate` to `EventDecoyStarted` so it takes the air time once it lands, and not when the decoy finishes)
8+
- Added `.ct` and `.t` command for side selection after knife round.
9+
- Rename `ive_wingman_override.cfg` to `live_wingman_override.cfg`
10+
- Fixed es-ES.json
11+
312
# 0.8.9
413

514
#### April 3, 2025

ConsoleCommands.cs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,49 @@ public void OnTeamSwitch(CCSPlayerController? player, CommandInfo? command)
150150
}
151151
}
152152

153+
[ConsoleCommand("css_t", "Switches team to Terrorist")]
154+
public void OnTCommand(CCSPlayerController? player, CommandInfo? command)
155+
{
156+
if (player == null || player.UserId == null) return;
157+
if (isVeto) {
158+
HandleSideChoice(CsTeam.Terrorist, player.UserId.Value);
159+
return;
160+
}
161+
162+
if (isSideSelectionPhase && player.TeamNum == knifeWinner) {
163+
if (player.Team == CsTeam.Terrorist) {
164+
OnTeamStay(player, command);
165+
} else {
166+
OnTeamSwitch(player, command);
167+
}
168+
}
169+
170+
if (!isPractice) return;
171+
SideSwitchCommand(player, CsTeam.Terrorist);
172+
}
173+
174+
[ConsoleCommand("css_ct", "Switches team to Counter-Terrorist")]
175+
public void OnCTCommand(CCSPlayerController? player, CommandInfo? command)
176+
{
177+
if (player == null || player.UserId == null) return;
178+
if (isVeto) {
179+
HandleSideChoice(CsTeam.CounterTerrorist, player.UserId.Value);
180+
return;
181+
}
182+
183+
if (isSideSelectionPhase && player.TeamNum == knifeWinner) {
184+
if (player.Team == CsTeam.CounterTerrorist) {
185+
OnTeamStay(player, command);
186+
} else {
187+
OnTeamSwitch(player, command);
188+
}
189+
return;
190+
}
191+
192+
if (!isPractice) return;
193+
SideSwitchCommand(player, CsTeam.CounterTerrorist);
194+
}
195+
153196
[ConsoleCommand("css_tech", "Pause the match")]
154197
public void OnTechCommand(CCSPlayerController? player, CommandInfo? command)
155198
{

EventHandlers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@ public HookResult EventMolotovDetonateHandler(EventMolotovDetonate @event, GameE
336336
return HookResult.Continue;
337337
}
338338

339-
public HookResult EventDecoyDetonateHandler(EventDecoyDetonate @event, GameEventInfo info)
339+
public HookResult EventDecoyDetonateHandler(EventDecoyStarted @event, GameEventInfo info)
340340
{
341341
if (!isPractice || isDryRun) return HookResult.Continue;
342342
CCSPlayerController? player = @event.Userid;

MatchZy.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public partial class MatchZy : BasePlugin
1414
{
1515

1616
public override string ModuleName => "MatchZy";
17-
public override string ModuleVersion => "0.8.9";
17+
public override string ModuleVersion => "0.8.10";
1818

1919
public override string ModuleAuthor => "WD- (https://github.com/shobhit-pathak/)";
2020

@@ -535,7 +535,7 @@ public override void Load(bool hotReload) {
535535
RegisterEventHandler<EventFlashbangDetonate>(EventFlashbangDetonateHandler);
536536
RegisterEventHandler<EventHegrenadeDetonate>(EventHegrenadeDetonateHandler);
537537
RegisterEventHandler<EventMolotovDetonate>(EventMolotovDetonateHandler);
538-
RegisterEventHandler<EventDecoyDetonate>(EventDecoyDetonateHandler);
538+
RegisterEventHandler<EventDecoyStarted>(EventDecoyDetonateHandler);
539539

540540
Console.WriteLine($"[{ModuleName} {ModuleVersion} LOADED] MatchZy by WD- (https://github.com/shobhit-pathak/)");
541541
}

PracticeMode.cs

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1171,30 +1171,6 @@ public void OnClearCommand(CCSPlayerController? player, CommandInfo? command)
11711171
RemoveGrenadeEntities();
11721172
}
11731173

1174-
[ConsoleCommand("css_t", "Switches team to Terrorist")]
1175-
public void OnTCommand(CCSPlayerController? player, CommandInfo? command) {
1176-
if (player == null || player.UserId == null) return;
1177-
if (isVeto) {
1178-
HandleSideChoice(CsTeam.Terrorist, player.UserId.Value);
1179-
return;
1180-
}
1181-
if (!isPractice || player == null) return;
1182-
1183-
SideSwitchCommand(player, CsTeam.Terrorist);
1184-
}
1185-
1186-
[ConsoleCommand("css_ct", "Switches team to Counter-Terrorist")]
1187-
public void OnCTCommand(CCSPlayerController? player, CommandInfo? command) {
1188-
if (player == null || player.UserId == null) return;
1189-
if (isVeto) {
1190-
HandleSideChoice(CsTeam.CounterTerrorist, player.UserId.Value);
1191-
return;
1192-
}
1193-
if (!isPractice) return;
1194-
1195-
SideSwitchCommand(player, CsTeam.CounterTerrorist);
1196-
}
1197-
11981174
[ConsoleCommand("css_spec", "Switches team to Spectator")]
11991175
public void OnSpecCommand(CCSPlayerController? player, CommandInfo? command) {
12001176
if (!isPractice || player == null) return;

Utility.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1391,7 +1391,7 @@ private void SendAvailableCommandsMessage(CCSPlayerController? player)
13911391
}
13921392
if (isSideSelectionPhase)
13931393
{
1394-
player!.PrintToChat($" {ChatColors.Green}Side Selection: {ChatColors.Default}.stay, .switch");
1394+
player!.PrintToChat($" {ChatColors.Green}Side Selection: {ChatColors.Default}.stay, .switch, .ct, .t");
13951395
return;
13961396
}
13971397
if (matchStarted)

lang/es-ES.json

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
{
2+
"matchzy.ready.markedready": "Has sido marcado como preparado.",
3+
"matchzy.ready.markedunready": "Has sido marcado como NO preparado.",
4+
"matchzy.ready.readytotestorebackupinfomessage": "Jugadores no preparados: {0}. Por favor, escribe .ready cuando estes listo para restaurar la copia de seguridad de la partida. {1}",
5+
6+
"matchzy.knife.sidedecisionpending": "{green}{0}{default} ganó la ronda de cuchillos. Esperando que escriban {green}.stay{default} (mantener) o {green}.switch{default} (cambiar) el bando.",
7+
"matchzy.knife.decidedtostay": "{green}{0}{default} ha decidido mantener bando.",
8+
"matchzy.knife.decidedtoswitch": "{green}{0}{default} ha decidido cambiar bando.",
9+
10+
"matchzy.pause.pausedthematch": "{green}{0}{default} ha pausado la partida. Escribe .unpause para reanudar la partida.",
11+
"matchzy.pause.teamsunpausedthematch": "Ambos equipos han pedido terminar la pausa, ¡reanudando la partida!",
12+
"matchzy.pause.teamwantstounpause": "{green}{0}{default} quiere pausar la partida. {green}{1}{default}, por favor escribe !unpause para confirmar.",
13+
"matchzy.pause.adminpausedthematch": "¡{green}Admin{default} ha pausado la partida!",
14+
"matchzy.pause.adminunpausedthematch": "{green}Admin{default} retiró la pausa, ¡reanudando la partida!",
15+
"matchzy.pause.onlyadmincanunpause": "La partida fue pausado por un admin, por lo que solo puede ser reaunudado por un admin.",
16+
"matchzy.pause.pausedbecauserestore": "La partida se ha pausado por la restauración de ronda. Ambos equipos deben escribir {green}.unpause{default} para reanudar la partida.",
17+
"matchzy.pause.techpausenotenabled": "Las pausas técnicas no están activadas.",
18+
"matchzy.pause.notechpauseleft": "¡{green}{0}{default} no tiene más pausas técnicas!",
19+
"matchzy.pause.ispaused": "¡La partida ya se encuentra en pausa!",
20+
"matchzy.pause.duringhalftime": "No puedes ejecutar este comando durante el entretiempo.",
21+
"matchzy.pause.matchended": "No puedes ejecutar este comando una vez la partida ha finalizado.",
22+
"matchzy.pause.tacticaltimeout": "No puedes ejecutar este comando durante una pausa táctica.",
23+
24+
"matchzy.restore.teamwantstorestore": "{green}{0}{default} quiere restaurar la partida al principio de la ronda actual. {green}{1}{default}, por favor, escribe !stop para confirmar.",
25+
"matchzy.restore.loadedsuccessfully": "Copia de seguridad cargada correctamente: {0}",
26+
"matchzy.restore.restoredsuccessfully": "Copia de seguridad restaurada correctamente del archivo: {0}",
27+
"matchzy.restore.stopcommandrequiresnodamage": "Una petición de reiniciar la ronda no puede llevarse a cabo cuando un jugador ha hecho daño a un rival.",
28+
29+
"matchzy.backup.stopduringhalftime": "No puedes ejecutar este comando durante el entretiempo.",
30+
"matchzy.backup.stopmatchended": "No puedes ejecutar este comando una vez la partida ha finalizado.",
31+
"matchzy.backup.stoptacticaltimeout": "No puedes ejecutar este comando durante una pausa táctica.",
32+
"matchzy.backup.restoreinvalidvalue": "Valor inválido para el comando restaurar. Por favor, especifíca un valor no negativo válido. Uso: !restore <ronda>",
33+
"matchzy.backup.restoreduringhalftime": "No puedes cargar una copia de seguridad durante el entretiempo.",
34+
"matchzy.backup.restorematchended": "No puedes ejecutar este comando una vez la partida ha finalizado.",
35+
"matchzy.backup.restoretacticaltimeout": "No puedes ejecutar este comando durante una pausa táctica.",
36+
"matchzy.backup.restoredoesntexist": "El archivo de copia de seguridad {0} no existe, por favor, elige una copia de seguridad válida para restaurar.",
37+
38+
"matchzy.cvars.invalidvalue": "Valor inválido para matchzy_chat_messages_timer_delay. Por favor, especifica un número no negativo válido.",
39+
40+
"matchzy.cc.enabled": "{green}Habilitado{default}",
41+
"matchzy.cc.disabled": "{red}Deshabilitado{default}",
42+
"matchzy.cc.usage": "Uso: {0}",
43+
"matchzy.cc.invalidmap": "¡Nombre de mapa inválido!",
44+
"matchzy.cc.globalnades": "¡Guardar/Cargar Lineups Globalmente está ahora {0}!",
45+
"matchzy.cc.wl": "¡Lista blanca (Whitelist) está ahora {0}!",
46+
"matchzy.cc.playout": "¡Playout está ahora {0}!",
47+
"matchzy.cc.rcon": "¡Comando enviado de forma satisfactoria!",
48+
"matchzy.cc.exitprac": "¡MatchZy ya se encuentra en modo partido!",
49+
"matchzy.cc.match": "¡MatchZy ya se encuentra en modo partido!",
50+
"matchzy.cc.startisprac": "No se puede empezar una partida mientras estás en modo práctica. Por favor, ¡escribe el comando .exitprac para salir del modo práctica primero!",
51+
"matchzy.cc.startmatchstarted": "¡Comando Start no puede ser usado si una partida ya comenzó! Si quieres terminar una pausa, por favor escribe .unpause",
52+
"matchzy.cc.gamestarted": "¡{red}Admin{default} empezó la partida!",
53+
"matchzy.cc.rrispracc": "El modo práctica está activo, no se puede reiniciar la partida.",
54+
"matchzy.cc.endmatch": "Un admin forzó la finalización de la partida.",
55+
"matchzy.cc.endmatchispracc": "El modo práctica está activo, no se puede terminar la partida.",
56+
"matchzy.cc.currentsettings": "Configuraciones actuales:",
57+
"matchzy.cc.knifestatus": "Cuchillo: {green}{0}{default}",
58+
"matchzy.cc.minreadyplayersperteam": "Número de jugadores preparados necesarios (Por equipo): {green}{0}{default}",
59+
"matchzy.cc.minreadyspecs": "Número mínimo de espectadores necesarios: {green}{0}{default}",
60+
"matchzy.cc.minreadyplayers": "Mínimo de jugadores preparados necesarios: {green}{0}{default}",
61+
"matchzy.cc.playoutstatus": "Playout: {green}{0}{default}",
62+
"matchzy.cc.minreadyrequired": "Jugadores preparados actuales: {0}. Uso: !readyrequired <número_de_jugadores_preparados_necesarios>",
63+
"matchzy.cc.roundknife": "¡Ronda de cuchillos está actualmente {0}!",
64+
"matchzy.cc.skipvetomatchstarted": "¡Comando para ignorar veto no puede ser usado si la partida ya ha comenzado.!",
65+
"matchzy.cc.skipveto": "¡La fase de veto ha sido cancelada!",
66+
"matchzy.cc.matchpaused": "¡La partida ya está pausada y no se puede empezar una pausa táctica!!",
67+
"matchzy.cc.nomorepauses": "¡No te quedan pausas tácticas!",
68+
69+
"matchzy.mm.matchisalreadysetup": "[LoadMatch] Una partida ya ha sido creda con el id: {green}{0}{default}, ¡no se puede cargar una nueva partida!",
70+
"matchzy.mm.filedoesntexist": "[LoadMatch] ¡El fichero proporcionado no existe! Uso: matchzy_loadmatch <nombre_del_fichero>",
71+
"matchzy.mm.matchloadfailed": "¡Error al cargar el fichero! Reiniciando la partida actual.",
72+
"matchzy.mm.get5matchisalreadysetup": "[LoadMatchDataCommand] Una partida ya ha sido creda con el id: {0}, ¡no se puede cargar una nueva partida!",
73+
"matchzy.mm.invalidurl": "[LoadMatchDataCommand] URL inválida: {green}{0}{default}. Por favor, ¡proporciona una URL válida para cargar la partida!",
74+
"matchzy.mm.httprequestfailed": "[LoadMatchFromURL] Petición HTTP falló con código: {0}",
75+
"matchzy.mm.teamcannotbechanged": "¡Los nombres de los equipos no se pueden cambiar una vez la partida ha empezado!!",
76+
77+
"matchzy.pm.movedtospawn": "Movido al spawn: {0}",
78+
"matchzy.pm.negativenumber": "Valor inválido para el comando {command}. Por favor, especifica un valor numérico no negativo. Uso: !{command} <número>",
79+
"matchzy.pm.lineupissaved": "¡Lineup ya existe! Por favor, usa un nombre diferente o usa .delnade <granada>",
80+
"matchzy.pm.lineupsavedsucces": "¡Lineup {green}{0}{default} guardada satisfactoriamente!",
81+
"matchzy.pm.playersavedlineup": "¡{lightblue}{0}{default} guardó un Lineup! Código del lineup: {green}{1}{default}",
82+
"matchzy.pm.lineupdeletesuccess": "Lineup {green}{0}{default} eliminada satisfactoriamente.",
83+
"matchzy.pm.lineupnotfound": "¡Lineup {green}{0}{default} no encontrada!",
84+
"matchzy.pm.lineupalreadyexists": "¡Lineup {green}{0}{default} ya existe! Por favor, usa un nombre diferente o usa .delnade <granada>",
85+
"matchzy.pm.lineupimportedsuccess": "Lineup {green}{0}{default} importada y guardada satisfactoriamente.",
86+
"matchzy.pm.lineupinvalidcode": "Formato de código inválido. Por favor, provee un código válido con name, pos, and ang.",
87+
"matchzy.pm.nosavedlineups": "No lineups encontradas para el SteamID especificado: {0}",
88+
"matchzy.pm.lineuploadedsuccess": "¡Lineup {green}{0}{default} cargada satisfactoriamente!",
89+
"matchzy.pm.lineupdesc": "Descripción: {green}{0}{default}",
90+
"matchzy.pm.nadenotfoundonmap": "¡Granada {green}{0}{default} no encontrada en el mapa actual!",
91+
"matchzy.pm.nadenotfound": "¡Granada {green}{0}{default} no encontrada!",
92+
"matchzy.pm.pracmatchstarted": "¡El modo práctica no puede ser iniciado si una partida ya comenzó!",
93+
"matchzy.pm.dryrunmatchstarted": "¡Dryrun no puede ser iniciado si una partida ya comenzó!",
94+
"matchzy.pm.dryrunnopractice": "¡Dryrun solo puede ser iniciado en el modo práctica!",
95+
"matchzy.pm.botlimit": "No se pueden añadir bots, ¡el equipo está completo! Usa .nobots para eliminar los bots actuales.",
96+
"matchzy.pm.spectatorbroken": "Moverse a un equipo desde el espectador no funciona actualmente, usa el menú de equipo.",
97+
"matchzy.pm.nothrownnades": "¡No has tirado ninguna granada aún!",
98+
"matchzy.pm.grenadehistory": "¡Tu historial de granadas solamente va de 1 a {0}!",
99+
"matchzy.pm.nothrownnadestype": "¡No has tirado ninguna {green}{0}{default} aún!",
100+
"matchzy.pm.tptogrenade": "Teletransportado a la granada de la posición del historial: {green}{0}{default}",
101+
"matchzy.pm.backinvalidvalue": "Valor inválido para el comando !back. Por favor, especifica un valor no negativo. Uso: !back <número>",
102+
"matchzy.pm.throwgrenadehistory": "Lanzando granada del histórico: {green}{0}{default}",
103+
"matchzy.pm.backnegativenumber": "{green}{0}{default} no es un valor no negativo para el comando !throwindex.",
104+
"matchzy.pm.delaygrenade": "Retardo de {0}s definido para granada del índice: {1}.",
105+
"matchzy.pm.delayvalidnumber": "Retardo de {0}s definido para granada del índice: {1}.",
106+
"matchzy.pm.notthrownnade": "¡No has tirado ninguna granada aún!",
107+
"matchzy.pm.indexlastgrenade": "Índice de la última granada tirada: {0}",
108+
"matchzy.pm.loadnadenotfound": "¡Granada no encontrada! Uso: .loadnade <nombre>",
109+
"matchzy.pm.backtonumber": "Uso: !back <número> (Has tirado {green}{0}{default} granadas hasta ahora)",
110+
"matchzy.pm.throwindextonumber": "Uso: !throwindex <número> (Has tirado {green}{0}{default} granadas hasta ahora)",
111+
112+
"matchzy.rs.minreadyplayers": "Debes tener como mínimo {green}{0}{default} jugador(es) en el servidor para estar preparado.",
113+
"matchzy.rs.forcereadiedby": "Tu equipo ha sido forzado a estar preparado por {green}{0}{default}",
114+
115+
"matchzy.sleep.sleepwhenmatchstared": "¡El modo suspensión no puede ser iniciado cuando una partida ha empezado!",
116+
117+
"matchzy.utility.unreadyplayers": "Jugadores no preparados: {0}. Por favor, escribe .ready para estar preparado! {1}",
118+
"matchzy.utility.readyplayers": "Jugadores preparados actualmente: {green}{0}{default}",
119+
"matchzy.utility.minimumreadyplayers": "Mínimo de jugadores preparados necesarios {green}{0}{default}, jugadores perparados actualmente: {green}{1}{default}",
120+
"matchzy.utility.matchstarted": "¡El mapa no puede ser cambiado una vez la partida ha empezado!",
121+
"matchzy.utility.minreadyplayers": "El número de jugadores preparados necesarios para empezar la partida ha sido cambiado a: {0}",
122+
"matchzy.utility.rrinvalidvalue": "Valor inválido para readyrequired. Por favor, especifíca un valor no negativo válido. Uso: !readyrequired <número_de_jugadores_preparados_necesarios>",
123+
"matchzy.utility.currentreadyrequired": "Número de jugadores preparados necesarios: {0} .Uso: !readyrequired <número_de_jugadores_preparados_necesarios>",
124+
"matchzy.utility.paused": "¡La partida ya está en pausa!",
125+
"matchzy.utility.duringhalftime": "No puedes usar este comando durante el entretiempo.",
126+
"matchzy.utility.matchended": "No puedes ejecutar este comando una vez la partida ha finalizado.",
127+
"matchzy.utility.tacticaltimeout": "No puedes ejecutar este comando durante una pausa táctica.",
128+
"matchzy.utility.dontpermission": "¡No tienes permiso para usar este comando!",
129+
130+
"matchzy.pracc.smoke": "El humo tirado por {red}{0}{default} tardó {green}{1}{default}s en explotar",
131+
"matchzy.pracc.flash": "La aturdidora tirada por {red}{0}{default} tardó {green}{1}{default}s en explotar",
132+
"matchzy.pracc.grenade": "La granada tirada por {red}{0}{default} tardó {green}{1}{default}s en explotar",
133+
"matchzy.pracc.molotov": "El molotov tirado por {red}{0}{default} tardó {green}{1}{default}s en explotar",
134+
"matchzy.pracc.decoy": "El señuelo tirado por {red}{0}{default} tardó {green}{1}{default}s en explotar",
135+
"matchzy.pracc.damage": "{red}{0}{default} daño a {lightblue}{1}{default}({green}{2}{default} vida)",
136+
"matchzy.pracc.blind": "{lightblue}{0}{default} ha sido cegado {green}{1}{default}s"
137+
}

0 commit comments

Comments
 (0)