Suite de plugins SourceMod para controlar votaciones en Left 4 Dead 2.
La suite se organiza alrededor de un core:
callvote_core: intercepta, crea sesiones y expone el lifecyclecallvote_manager: satelite de politica y UX por defectocallvote_kicklimit: aplica politicas de abuso sobre votekickcallvote_bans: aplica restricciones de voto y expone API administrativa simple
El objetivo actual del proyecto es consolidar el core como una API estable para extensiones externas.
AccountIDes la identidad canonica internaSteamID2se usa solo para presentacion y logs legibles- MySQL persiste
AccountIDySteamID64para analitica externa - SQLite se crea automaticamente desde los plugins cuando el entry de
databases.cfgusa ese motor y mantiene el esquema local minimo - el core expone ciclo de vida de votacion y contexto enriquecido
- las restricciones de voto se mantienen como componente acotado, no como suite general de sanciones
flowchart LR
Player[Jugador]
Core[callvote_core]
Manager[callvote_manager]
KickLimit[callvote_kicklimit]
Bans[callvote_bans]
External[Suites externas]
Player --> Core
Core --> Manager
Core --> KickLimit
Core --> Bans
Core --> External
Plugin satelite de politica y UX por defecto. Consume CallVote_PreStart para aplicar inmunidades y reglas base, y luego usa CallVote_Start y eventos de progreso para mostrar la experiencia visible del voto.
Extension liviana sobre el core. Usa el contrato publico de callvote_core para limitar la frecuencia de votekicks por jugador.
Superficie publica principal:
- comandos
sm_cvkl_showysm_cvkl_count - convars
sm_cvkl_*
Plugin acotado de restricciones de voto. El runtime base queda reducido a API, persistencia y validacion; la UX administrativa puede montarse externamente, por ejemplo con callvote_bans_adminmenu.
Superficie publica principal:
- comandos
sm_cvb_restrict,sm_cvb_unrestrictysm_cvb_status - paneles
sm_cvb_restrict_panel,sm_cvb_unrestrict_panelysm_cvb_status_panel - natives
CVB_HasActiveRestriction,CVB_GetPlayerRestrictionMask,CVB_RestrictPlayer,CVB_RemoveRestriction,CVB_GetRestrictionInfo
- Implementacion Core AccountID
- Investigacion HL2SDK y Votaciones
- Migracion SQL a AccountID
- Sistema de Build
La suite se distribuye mediante artefactos zip publicados por CI y releases de GitHub.
Nombre esperado del paquete:
callvote-manager-<version>.zip
Layout instalable del artefacto:
addons/sourcemod/plugins/callvote/
callvote_core.smx
callvote_manager.smx
callvote_kicklimit.smx
callvote_bans.smx
callvote_bans_adminmenu.smx
addons/sourcemod/scripting/include/
callvote_core.inc
callvote_stock.inc
callvote_bans.inc
addons/sourcemod/scripting/
callvote_core.sp
callvote_manager.sp
callvote_kicklimit.sp
callvote_bans.sp
callvote_bans_adminmenu.sp
callvote_manager/
callvote_bans/
addons/sourcemod/configs/
sql-init-callvote/
addons/sourcemod/translations/
callvote*.phrases.txt
Los binarios publicos de la suite viven en addons/sourcemod/plugins/callvote/.
El artefacto no incluye bibliotecas adicionales ajenas a la suite ni requiere limpieza posterior de includes antes de instalarse. El zip ya viene listo para copiar sobre el servidor.
Para integradores como Docker-L4D2-AoC esto significa que el instalador debe consumir el artefacto ya empaquetado y preservar el subdirectorio callvote para mantener la suite agrupada.
make deps-smxmake build-smxmake package-smxmake release
La documentacion principal busca describir arquitectura y contratos. Los detalles operativos finos, comandos y pruebas puntuales quedan fuera del README base.