csgo terminar plugin votemap
#1
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()
{
    
ClientCommandclient"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-
{
    
ClientCommandclient"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(menuHandle_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(filemapnamesizeof(mapname)))
    {
        if (
mapname[0] == ';' || !IsCharAlpha(mapname[0]))
        {
            continue;
        }
        new 
len strlen(mapname);
        for (new 
i=0i<leni++)
        {
            if (
IsCharSpace(mapname[i]))
            {
                
mapname[i] = '\0';
                break;
            }
        }
        if (!
IsMapValid(mapname))
        {
            continue;
        }
        
AddMenuItem(menumapnamemapname);
    }
    
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(01);
    }
 
    new 
String:map[65];
    
GetMenuItem(menuitem_info[winner][VOTEINFO_ITEM_INDEX], mapsizeof(map));
    
ServerCommand("sm_nextmap %s"map);

Responder
#2
Di que es lo que no entiendes que te lo explico
Responder
#3
si entiendo algo... pero no se como unir o sea hacer que el mapa mas votado o sea el mapa ganador se establezca en sm_nextmap "elmapaganador" y que los 2 ultimos mapas ya jugados no aparezcan en la votacion .asi no siempre aparecen los mismos en la votacion..
y que suenen los eventssounds... digamos.. yo escribi ese code en base al mapchoser y las funciones las fui sacando de otros plugins o sea de apis que hay en la wiki de sourcemod... si me ayudaras...seria buenisimo .. gracias...
Responder
#4
Me parece al pedo usar la api para un menu avanzado para algo tan sencillo. Yo hubiera echo algo como esto, faltaría la condición de chekear si el mapa salió en las últimas 2 rondas:

Código PHP:
#include <sourcemod>
#include <sdktools>

public Plugin:myinfo =
{
    
name " ",
    
author "wiD^",
    
description "",
    
version "1.0",
    
url "http://www.amxmodx-es.com"
};

public 
OnPluginStart()
{
    
RegAdminCmd("votemap_iniciar"Command_voteADMFLAG_SLAY);
}

public 
Handle_VoteMenu(Handle:menuMenuAction:actionparam1param2)
{
    if (
action == MenuAction_End)
    {
        
CloseHandle(menu);
    } 
    else if (
action == MenuAction_VoteEnd
    {
        if (
param1 == 0)
        {
            new 
String:map[64];
            
GetMenuItem(menuparam1mapsizeof(map));
            
ServerCommand("sm_nextmap %s"map);
        }
    }
}

public 
Action:Command_vote(clientargs)
{
    if (
IsVoteInProgress())
    {
        return;
    }
    
    new 
String:maps[5][25] = VoteMaps();
    new 
Handle:menu CreateMenu(Handle_VoteMenu);
    
SetMenuTitle(menu"Votemap");
    for(
i=05i++)
    {
        
AddMenuItem(menumaps[i], maps[i])
    }
    
SetMenuExitButton(menufalse);
    
VoteMenuToAll(menu20);
}

String:VoteMaps()
{
    
decl String:path[PLATFORM_MAX_PATH], String:line[128];
    
BuildPath(Path_SMpathPLATFORM_MAX_PATH"maplist.txt");
    new 
Handle:fileHandle=OpenFile(path"r");
    new 
String:maps[5][25];
    new 
i=0;
    new 
bool:stay;
    
    
ReadFileLine(fileHandlelinesizeof(line))
    while(!
IsEndOfFile(fileHandle) && !RecentMap(line))
    {
        
maps[i] = line;
        
ReadFileLine(fileHandlelinesizeof(line))
        
i++;
    }
    
    
CloseHandle(fileHandle);
    return 
maps;

Responder
#5
no soy muy bueno pero lo quize complilar para testearlo y me dio el souce copiler estos errores.

/groups/sourcemod/upload_tmp/textKHmaQl.sp(42) : error 001: expected token: "{", but found "-identifier-"
/groups/sourcemod/upload_tmp/textKHmaQl.sp(42) : error 008: must be a constant expression; assumed zero
/groups/sourcemod/upload_tmp/textKHmaQl.sp(45) : error 017: undefined symbol "i"
/groups/sourcemod/upload_tmp/textKHmaQl.sp(45) : warning 205: redundant code: constant expression is zero
/groups/sourcemod/upload_tmp/textKHmaQl.sp(45) : error 017: undefined symbol "i"
/groups/sourcemod/upload_tmp/textKHmaQl.sp(45) : warning 215: expression has no effect
/groups/sourcemod/upload_tmp/textKHmaQl.sp(45) : error 001: expected token: ")", but found ";"
/groups/sourcemod/upload_tmp/textKHmaQl.sp(45) : fatal error 187: too many error messages on one line

Compilation aborted.
6 Errors.


a que va esto??
Responder
#6
(11/02/2015, 06:07 PM)alexpro escribió: no soy muy bueno pero lo quize complilar para testearlo y me dio el souce copiler estos errores.

/groups/sourcemod/upload_tmp/textKHmaQl.sp(42) : error 001: expected token: "{", but found "-identifier-"
/groups/sourcemod/upload_tmp/textKHmaQl.sp(42) : error 008: must be a constant expression; assumed zero
/groups/sourcemod/upload_tmp/textKHmaQl.sp(45) : error 017: undefined symbol "i"
/groups/sourcemod/upload_tmp/textKHmaQl.sp(45) : warning 205: redundant code: constant expression is zero
/groups/sourcemod/upload_tmp/textKHmaQl.sp(45) : error 017: undefined symbol "i"
/groups/sourcemod/upload_tmp/textKHmaQl.sp(45) : warning 215: expression has no effect
/groups/sourcemod/upload_tmp/textKHmaQl.sp(45) : error 001: expected token: ")", but found ";"
/groups/sourcemod/upload_tmp/textKHmaQl.sp(45) : fatal error 187: too many error messages on one line

Compilation aborted.
6 Errors.


a que va esto??
Perdona que interrumpa haciendo OFF, cuando pongas los logs hazlo en code, presiona el numeral que esta arriba y mete todo eso entre los corchetes

asi

[code]
/group/sourcemod/upload_tmp ......... (45) : fatal error 187:
[ /code cierra corchete y pegado.
Responder
#7
Son errores pequeños, ya que por ejemplo me olvidé parentesis o definir algunas variables. Si entiendes algo de pawn, los puedes arreglar fácilmente, sino te los arreglo yo.
Responder
#8
si me haces el favor wid.. yo la verdad fui agregando code por code y pensando un poco y lo arme.. pero veo que estaba mal... gracias.. yo despues lo posteo si queres..
una pregunta,como le agregaria para que no se repitan los 2 ultimos mapas jugados... gracias te lo argradezco...

PD: trato de hacer algo .. pero no entiendo mucho y eso que leo foros y foros.. y algunos que otros videos.. ya que me interesa aprender....
Responder
#9
Código PHP:
#include <sourcemod>
#include <sdktools>

public Plugin:myinfo =
{
    
name " ",
    
author "wiD^",
    
description "",
    
version "1.0",
    
url "http://www.amxmodx-es.com"
};

public 
OnPluginStart()
{
    
RegAdminCmd("votemap_iniciar"Command_voteADMFLAG_SLAY);
}

public 
Handle_VoteMenu(Handle:menuMenuAction:actionparam1param2)
{
    if (
action == MenuAction_End)
    {
        
CloseHandle(menu);
    } 
    else if (
action == MenuAction_VoteEnd
    {
        if (
param1 == 0)
        {
            new 
String:map[64];
            
GetMenuItem(menuparam1mapsizeof(map));
            
ServerCommand("sm_nextmap %s"map);
        }
    }
}

public 
Action:Command_vote(clientargs)
{
    if (
IsVoteInProgress())
    {
        return;
    }
    
    new 
String:maps[5][25];
    
maps VoteMaps();
    new 
Handle:menu CreateMenu(Handle_VoteMenu);
    
SetMenuTitle(menu"Votemap");
    for(new 
i=05i++)
    {
        
AddMenuItem(menumaps[i], maps[i])
    }
    
SetMenuExitButton(menufalse);
    
VoteMenuToAll(menu20);
}

String:VoteMaps()
{
    
decl String:path[PLATFORM_MAX_PATH], String:line[128];
    
BuildPath(Path_SMpathPLATFORM_MAX_PATH"maplist.txt");
    new 
Handle:fileHandle=OpenFile(path"r");
    new 
String:maps[5][25];
    new 
i=0;
    new 
bool:stay;
    
    
ReadFileLine(fileHandlelinesizeof(line))
    while(!
IsEndOfFile(fileHandle) && !RecentMap(line))
    {
        
maps[i] = line;
        
ReadFileLine(fileHandlelinesizeof(line))
        
i++;
    }
    
    
CloseHandle(fileHandle);
    return 
maps;


Si queres aprender, podes empezar por lo básico:

https://amxmodx-es.com/Thread-Introducci...-Scripting

La próxima vez fijate donde posteas.
Responder
#10
hola wid.. gracias.. no funciono .. pero igual gracias por ayudarme y tomarte tu tiempo en ayudarme.. el plugin da error al compilar pero igual encontre la solucion que es desactivar los votos que trae el servidor y usar el votemap de sourcemod que trae desactivado que hay que activarlo.. de nuevo gracias por la ayuda... nos vemos.. y tendre en cuenta eso.. voy a aprender por que me interesa mucho..
Responder
#11
Los sonidos te da error al precachear porque tienes que omitir el "sound/" cuando usas PrecacheSound

Es decir, quedaria bien asi
Código PHP:
PrecacheSound("music/votingmap/start_voting.mp3"); 

Y bueno que es mas facil que uses el mapchooser.smx que viene incluido dentro de la carpeta disabled/ cuando instalas sourcemod en el servidor

Añado: y para usar el comando que decias, puedes usar este sencillo codigo que he hecho para iniciar la votacion de mapas usando la api de mapchooser

Código PHP:
#include <sourcemod>
#include <mapchooser>

public OnPluginStart()
{
    
RegAdminCmd("votemap_iniciar"VotacionADMFLAG_VOTE); // solo para admins con permisos de votacion
    
}

public 
Action:Votacion(clientargs)
{
    
InitiateMapChooserVote(MapChange_MapEnd); // iniciar votacion de mapas y cambiar mapa al final del tiempo de mapa
    
return Plugin_Handled;

Atentamente,
[Imagen: 76561198011608644.png]
Mis plugins públicos en SourceMod
Seguidme en Twitter! @Franc1sco13
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)