11/02/2015, 04:32 PM
hola amigos.. alguien que entienda sourcemod me ayudaria a terminar este plugin votemap csgo ya que no entiendo muy bien todas las carecteristicas.. gracias..
Código PHP:
/////////
///////// Punto del plugin:
////////Es un votemap que se inicia con votemap_iniciar igual al de mani admin plugin...
////////WORK;
//////// El plugin recibe el comando votemap_iniciar y
//////// se inicia la votacion de mapa para todos que dura 10 segundos
//////// y cuando se acaban los 10 segundos se establece el sm_nextmap "elmapaganador"
/////// incluyendo sounds:
/////// start_voting.mp3 sonido cuando se inicia la votacion de mapa y aparece el menu.
////// timer.mp3 sonido que marca el tiempo restante para que acabe la votacion.
/////// end_voting.mp3 sonido cuando ya se acabo la votacion y se define el sm_nextmap
//////
////// esto es mas o menos un api ya que yo lo prentendo enlazar con otro plugin.
////////
/*Me podrian ayudar a correguirlo y agregarle un contador de 10 segundos
que cuente el tiempo restante para que acabe la votacion con un hud y un
soundtimer y que 2 ultimos mapas (ya jugados-ya votados) no aparezcan en la
votacion asi mas o menos no se repiten los mismos mapas en la votacion.*/
public Plugin myinfo =
{
name = "Map voting start CSGO",
author = "AlexPro",
description = "map voting start by command",
version = 0.1,
url = "misitio.com"
};
#include <sourcemod>
#include "include/nextmap.inc"
new bool:iniciarvoto = false;
public OnPluginStart()
{
RegConsoleCmd("votemap_iniciar", start_voting); //El comando quiero que se reciba por la consola cmd por que lo enlazo por otro plugin
}
public OnMapStart() // Precacheo de sonidos de acciones.
{
AddFileToDownloadsTable("sound/music/votingmap/start_voting.mp3");
AddFileToDownloadsTable("sound/music/votingmap/end_voting.mp3");
AddFileToDownloadsTable("sound/music/votingmap/timer.mp3");
PrecacheSound("sound/music/votingmap/start_voting.mp3");
PrecacheSound("sound/music/votingmap/start_voting.mp3");
PrecacheSound("sound/music/votingmap/timer.mp3");
}
public start_voting()
{
ClientCommand( client, "play * sound/music/votingmap/start_voting.mp3" ); // esto lo puse por la razon de que el csgo ahora esta dando siempre el error de SV_StartSound: * /example/sound.mp3 not precatched <5781>
iniciarvoto = true;
}
public end_voting() //Tarea de fin de la votacion-
{
ClientCommand( client, "play * sound/music/votingmap/end_voting.mp3" );
ServerCommand("sm_nextmap %s", map);
PrintToChatAll("Votacion finalizada el mapa ganador es %s", map);
iniciarvoto = false;
}
Handle:BuildMapMenu() //creacion del menu de la votacion
{
SetVoteResultCallback(menu, Handle_VoteResults); //envio de la llamada a los resultados de la votacion.
new Handle:file = OpenFile("maplist.txt", "rt");
if (file == INVALID_HANDLE)
{
return INVALID_HANDLE;
}
new Handle:menu = CreateMenu(start_voting);
new String:mapname[255];
while (!IsEndOfFile(file) && ReadFileLine(file, mapname, sizeof(mapname)))
{
if (mapname[0] == ';' || !IsCharAlpha(mapname[0]))
{
continue;
}
new len = strlen(mapname);
for (new i=0; i<len; i++)
{
if (IsCharSpace(mapname[i]))
{
mapname[i] = '\0';
break;
}
}
if (!IsMapValid(mapname))
{
continue;
}
AddMenuItem(menu, mapname, mapname);
}
CloseHandle(file);
SetMenuTitle(menu, "Votacion del siguiente mapa!:");
return menu;
}
public Handle_VoteResults(Handle:menu, // Resultados ganador de la votacion
num_votes,
num_clients,
const client_info[][2],
num_items,
const item_info[][2])
{
new winner = 0;
if (num_items > 1
&& (item_info[0][VOTEINFO_ITEM_VOTES] == item_info[1][VOTEINFO_ITEM_VOTES]))
{
winner = GetRandomInt(0, 1);
}
new String:map[65];
GetMenuItem(menu, item_info[winner][VOTEINFO_ITEM_INDEX], map, sizeof(map));
ServerCommand("sm_nextmap %s", map);
}