santazx
Участник
- Сообщения
- 23
- Реакции
- 5
Заранее спасибо и так к делу.
Решил продолжить изучать Source Pawn в итоге хотел сделать плагин но для примера нашел в интернете и сделал под себя.
В итоге сделал в нем группы и проверку когда идет голосование для css.
Но есть проблема когда нажимаю Да он не меняет карту когда уже все ответили Да, где и что я упустил? :blush2:
Приложение кода ниже:
И ещё раз спасибо. :beer:
P.S.: да я знаю что изобретаю велосипед и прикручиваю колеса повторно, но нужно начать надеюсь на вас. :)
Решил продолжить изучать Source Pawn в итоге хотел сделать плагин но для примера нашел в интернете и сделал под себя.
В итоге сделал в нем группы и проверку когда идет голосование для css.
Но есть проблема когда нажимаю Да он не меняет карту когда уже все ответили Да, где и что я упустил? :blush2:
Приложение кода ниже:
PHP:
#pragma semicolon 1
#include <sourcemod>
#define PLUGIN_VERSION "0.1"
new Handle:g_mapMenu = INVALID_HANDLE;
new Handle:g_mapVoteTime = INVALID_HANDLE;
public Plugin:myinfo =
{
name = "[CSS] Map Vote Css",
author = "",
description = "",
version = PLUGIN_VERSION,
url = ""
}
public OnPluginStart()
{
CreateConVar("css_mapvote_version", PLUGIN_VERSION, "[CSS] Map Vote Css Version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_NOTIFY|FCVAR_DONTRECORD);
RegConsoleCmd("say", Command_Say);
RegConsoleCmd("say_team", Command_Say);
RegAdminCmd("sm_csscancelvote", Command_CancelVote, ADMFLAG_VOTE);
g_mapVoteTime = CreateConVar("sm_mapvotetime", "20", "По умолчанию время на голосование.",FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_NOTIFY);
CreateConVar("css_vote_announce", "1", "Включает или нет анонс плагина.");
CreateConVar("css_vote_message", "3", "Вид анонса (1 - Chat, 2 - Hint, 3 - Center text)");
}
public OnClientPutInServer(client)
{
if(GetConVarInt(FindConVar("css_vote_announce")) != 0)
{
CreateTimer(50.0, Timer_WelcomeMessage, client);
}
}
public Action:Timer_WelcomeMessage(Handle:timer, any:client)
{
new String:announce[] = "\x01[SM] Для голоса за карту, введи: \x04!cssvote\x01 в чат.";
if (IsClientConnected(client) && IsClientInGame(client) && !IsFakeClient(client))
{
switch (GetConVarInt(FindConVar("css_vote_message")))
{
case 1:
{
PrintToChat(client, announce);
}
case 2:
{
PrintHintText(client, announce);
}
case 3:
{
PrintCenterText(client, announce);
}
default:
{
PrintToChat(client, announce);
}
}
}
}
public Action:Command_Say(client, args)
{
if(!client)
{
return Plugin_Continue;
}
if(IsVoteInProgress())
{
PrintToChatAll("Ты не можешь использовать !cssvote пока идет голосование!");
}
else
{
decl String:text[192];
if(!GetCmdArgString(text, sizeof(text)))
{
return Plugin_Continue;
}
new startidx = 0;
if(text[strlen(text)-1] == '"')
{
text[strlen(text)-1] = '\0';
startidx = 1;
}
if(strcmp(text[startidx], "!cssvote", false) == 0)
{
DoMapVoteList(client);
}
}
return Plugin_Continue;
}
//Выводим здесь группу?
DoMapVoteList(client)
{
g_mapMenu = CreateMenu(Handle_CssMenu);
SetMenuTitle(g_mapMenu, "");
AddMenuItem(g_mapMenu, "", "De Dust 2 группа 1");//0
AddMenuItem(g_mapMenu, "", "De Dust группа 2"); //1
DisplayMenu(g_mapMenu, client, 60);
}
public Handle_CssMenu(Handle:hMenu, MenuAction:action, client, iSlot)
{
if ( action == MenuAction_Select )
{
if ( IsPlayerAlive(client) )
{
//НИЖЕ ДЛЯ ПРИМЕРА В КАЖДОЙ ГРУППЕ НЕСКОЛЬКО КАРТ
new Handle:mapMenu = INVALID_HANDLE;
mapMenu = CreateMenu(Handle_MapVoteList);
if ( iSlot == 0 )
{
SetMenuTitle(mapMenu, "Смена карты");
AddMenuItem(mapMenu, "de_dust2", "De Dust 2 + 1"); //0
AddMenuItem(mapMenu, "de_dust2", "De Dust 2 + 2"); //0
AddMenuItem(mapMenu, "de_dust2", "De Dust 2 + 3"); //0
AddMenuItem(mapMenu, "de_dust2", "De Dust 2 + 4"); //0
AddMenuItem(mapMenu, "de_dust2", "De Dust 2 + 5"); //0
DisplayMenu(g_mapMenu, client, 60);
SetMenuExitButton(mapMenu, false);
}
else if ( iSlot == 1 )
{
SetMenuTitle(mapMenu, "Смена карты");
AddMenuItem(mapMenu, "de_dust", "De Dust + 1"); //1
AddMenuItem(mapMenu, "de_dust", "De Dust + 2"); //1
AddMenuItem(mapMenu, "de_dust", "De Dust + 3"); //1
AddMenuItem(mapMenu, "de_dust", "De Dust + 4"); //1
AddMenuItem(mapMenu, "de_dust", "De Dust + 5"); //1
DisplayMenu(g_mapMenu, client, 60);
SetMenuExitButton(mapMenu, false);
}
}
}
}
public Handle_MapVoteList(Handle:mapMenu, MenuAction:action, param1, param2)
{
if(action == MenuAction_Select)
{
decl String:map[64];
GetMenuItem(mapMenu, param2, map, sizeof(map));
DoVoteMenu (map);
}
else if (action == MenuAction_End)
{
CloseHandle(mapMenu);
}
}
DoVoteMenu(const String:map[])
{
if(IsVoteInProgress())
{
return;
}
new Handle:voteMenu = CreateMenu(Handle_VoteMenu);
SetMenuTitle(voteMenu, "Сменить карту: %s?", map);
AddMenuItem(voteMenu, map, "Да");
AddMenuItem(voteMenu, "no", "Нет");
SetMenuExitButton(voteMenu, false);
new voteTime = GetConVarInt(g_mapVoteTime);
VoteMenuToAll(voteMenu, voteTime);
PrintToChatAll("Голосование в процессе...");
}
public Handle_VoteMenu(Handle:voteMenu, MenuAction:action, param1, param2)
{
if(action == MenuAction_End)
{
CloseHandle(voteMenu);
}
else if(action == MenuAction_VoteEnd)
{
decl String:map[64];
GetMenuItem(voteMenu, param1, map, sizeof(map));
PrintToChatAll("Голосование прошло успешно! Изменяем на %s");
ServerCommand("changelevel %s", map);
}
else if(action == MenuAction_VoteCancel)
{
// Если не получаем голосов выводим сообщение.
if (param1 == VoteCancel_NoVotes)
{
PrintToChatAll("Ошибка голосования!");
}
else
{
// Карта была отменена, нет действий.
}
}
}
public Action:Command_CancelVote(client, args)
{
CancelVote();
return Plugin_Handled;
}
И ещё раз спасибо. :beer:
P.S.: да я знаю что изобретаю велосипед и прикручиваю колеса повторно, но нужно начать надеюсь на вас. :)