Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

GunGame + [Supp] MapChooser

, Добавить в сток мапчузер от неугомона [РЕШЕНО]
Статус пользователя oxoTHuk.
сообщение 20.1.2015, 19:40
Сообщение #1


Иконка группы

Стаж: 17 лет

Сообщений: 879
Благодарностей: 515
Полезность: 867

Ребят, что-то не пойму в чем проблема, помогите =)
Смысл следующий - есть GunGame сервер, голосование вызывается в зависимости от последнего раунда (чем больше квар, тем дальше от последнего раунда начало голосования gg_vote_setting 2).
Так вот, у меня голосование должно вызываться на втором с конца уровне, т.е. когда кто-то получает гранату. Но тут я обратил внимание что голосование не вызывается вовсе, полез смотреть, увидел ошибку что мод не может отыскать плагин [Supp] MapChooser, окай, думаю я, есть у него кастом настройки для этого дела: gg_vote_custom "amx_rtv", все хорошо, голосование вызывается, но меняется карта сразу после него (#define NOROUND включен).
В общем поразмыслил, решил полезть в код GG.
Так выдается голосование если мод находит стоковый Nextmap Chooser:
Код:
// AMXX Nextmap Chooser - mapchooser.amxx
else if((plugin = is_plugin_loaded("Nextmap Chooser")) != -1)
{
log_amx("Starting a map vote from Nextmap Chooser");

new oldWinLimit = get_cvar_num("mp_winlimit"), oldMaxRounds = get_cvar_num("mp_maxrounds");
set_cvar_num("mp_winlimit",0); // skip winlimit check
set_cvar_num("mp_maxrounds",-1); // trick plugin to think game is almost over

// call the vote
if(callfunc_begin_i(get_func_id("voteNextmap",plugin),plugin) == 1)
callfunc_end();

// set maxrounds back
set_cvar_num("mp_winlimit",oldWinLimit);
set_cvar_num("mp_maxrounds",oldMaxRounds);
}

По аналогии сделал с твоим чурезром, комменты от меня в коде:
Код:
// [Supp] MapChooser - mapchooser.amxx
else if((plugin = is_plugin_loaded("[Supp] MapChooser")) != -1) //Если находим названия плагина неугомона
{
log_amx("Starting a map vote from Nextmap Chooser"); //тупо лог

new oldWinLimit = get_cvar_num("mp_winlimit"), oldMaxRounds = get_cvar_num("mp_maxrounds"); //Собираем и схораняем квары, чтобы потом восстановить
set_cvar_num("mp_winlimit",0); // меняем квары чтобы карта не кончилась, вроде
set_cvar_num("mp_maxrounds",-1); // меняем квары чтобы карта не кончилась, вроде

//Вызываем voteNextmap функцию из плагина неугомона
if(callfunc_begin_i(get_func_id("voteNextmap",plugin),plugin) == 1)
callfunc_end();

//
set_cvar_num("mp_winlimit",oldWinLimit);
set_cvar_num("mp_maxrounds",oldMaxRounds);
}


Вроде ничего сложного, но во время голосования вываливается ошибка:
Код
L 01/20/2015 - 00:53:22: Public function -1 is invalid
L 01/20/2015 - 00:53:22: [AMXX] Displaying debug trace (plugin "gungame.amxx")
L 01/20/2015 - 00:53:22: [AMXX] Run time error 10: native error (native "callfunc_begin_i")
L 01/20/2015 - 00:53:22: [AMXX] [0] gungame.sma::start_mapvote (line 9220)
L 01/20/2015 - 00:53:22: [AMXX] [1] gungame.sma::change_level (line 5565)
L 01/20/2015 - 00:53:22: [AMXX] [2] gungame.sma::change_score (line 5309)
L 01/20/2015 - 00:53:22: [AMXX] [3] gungame.sma::ham_player_killed_post (line 1979)

Читал amxmodx wiki, там написано что -1 значит плагин не найден, и по идее не стоит обращать внимания на что, что ниже.
Отсюда вопрос, как сделать так, чтобы плагин нашелся?
Я вот грешу на return PLUGIN_HANDLED; из плагина мапчузера, он ретурнится в конце функции voteNextmap, может быть такое? В павне не силен, только осваиваю =)
Mapchooser
Код:
/*
neygomon created ^_^ | http://www.neugomon.ru
Original Code: AMXX Dev Team

Credits:
* serfreeman1337. Помощь по коду
* UrpyHb9. Тетирование номинаций
* firante. Баг с продлением карт
*/
#include <amxmodx>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif

#define SELECTMAPS 5 // Количество карт в голосовании. Не ставить больше 8!
#define BLOCK_MAPS 8 // Количество последних сыгранных карт, которые не будут выставлены на голосование.
#define MAX_NUMEXTEND 1 // Максимальное число продлений
#define STEP_EXTEND 7 // Время продления [В минутах]
#define VOTETIME 10 // Время голосования.
#define RTV_FUNC // Функция досрочного голосования. Закоментируйте, если не требуется;)
#if defined RTV_FUNC
#define RTV_DELAY 120 // Через какое время от начала карты можно пользоваться функцией rtv. [В секундах... 60 = 1 минута]
#define RTV_PERCENT 60 // Сколько процентов надо набрать, чтобы запустить досрочную смену карты.
#endif
#define NOMINATE_FUNC // Функция номинации карт. Закоментируйте, если не требуется;)
#if defined NOMINATE_FUNC
#define MAX_NOMINATE 2 // Максимум карт для номинации
#define MAX_NOMINATE_PL 1 // Максимум карт для номинации ОДНИМ игроком
#endif
#define NOROUND // Поддержка бесконечных раундов. Аля CSDM, GunGame сервера

#if defined NOMINATE_FUNC
new Trie:g_tNomMaps, Trie:g_tLoadedMaps;
new g_iNomMap[33], g_iIdMapNom[MAX_NOMINATE+1], g_iCountNom;
#endif
new g_VoteMap[SELECTMAPS+2][32], g_iMapInMenu[SELECTMAPS+1], g_voteCount[SELECTMAPS + 2];
new Trie:g_tBlockedMaps, Array:g_aLoadMaps;
new g_iVoteMapNum, g_iMapCount;
new g_NextMap[32], szCurrentMap[32];
new bool:g_bVoteStarted, bool:g_bBeInVote, bool:g_bBlockExtended;
new g_pTimeLimit, g_oldTimeLimit, g_iTempTimelimit;
#if !defined NOROUND
new g_pFreezeTime, Float:g_oldFreezeTime;
#endif
#if defined RTV_FUNC
new bool:g_bRockVoted[33], g_iRockVote, g_iStartMap;
#endif
new const FILE_BLOCKEDMAPS[] = "addons/amxmodx/data/mm_last.ini";
new const FILE_MAPS[] = "addons/amxmodx/configs/maps.ini";
new const g_szSound[][] = { "", "fvox/one", "fvox/two", "fvox/three" };
new const END_SOUND[] = "misc/neugomon/vsem_sps.wav";

public plugin_precache()
precache_sound(END_SOUND);

public plugin_init()
{
#define VERSION "1.8.3.2"
register_plugin("[Supp] MapChooser", VERSION, "neygomon");
register_cvar("mm_neygomon", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
register_menucmd(register_menuid("MapChoose"), (-1^(-1<<(SELECTMAPS+2))), "votemenu_handler")
#if !defined NOROUND
register_event("HLTV", "eRoundStart", "a", "1=0", "2=0");
#endif
#if defined RTV_FUNC
register_clcmd("say rtv", "clcmd_RockVote");
register_clcmd("say /rtv", "clcmd_RockVote");
#endif
#if defined NOMINATE_FUNC
register_clcmd("say", "clcmd_Say");
g_tNomMaps = TrieCreate();
g_tLoadedMaps = TrieCreate();
#endif
register_concmd("amx_rtv", "concmd_StartVote", ADMIN_VOTE);
register_clcmd("say ff", "clcmd_FF");
register_clcmd("say nextmap", "clcmd_NextMap");
register_clcmd("say timeleft", "clcmd_TimeLeft");
register_clcmd("say thetime", "clcmd_TheTime");

g_aLoadMaps = ArrayCreate(32);
g_tBlockedMaps = TrieCreate();

g_pTimeLimit = get_cvar_pointer("mp_timelimit");

#if !defined NOROUND
g_pFreezeTime = get_cvar_pointer("mp_freezetime");
#endif
}

public plugin_end()
{
if(g_oldTimeLimit)
set_pcvar_num(g_pTimeLimit, g_oldTimeLimit);
ArrayDestroy(g_aLoadMaps);
TrieDestroy(g_tBlockedMaps);
}

public plugin_cfg()
{
g_iStartMap = get_systime();
get_mapname(szCurrentMap, charsmax(szCurrentMap));
LoadBlockMaps(); LoadMaps(); // грузим мапы.
set_task(15.0, "CheckTime", .flags="b");
}
#if defined RTV_FUNC
public client_disconnect(id)
{
if(!g_bRockVoted[id]) return;

g_bRockVoted[id] = false;
g_iRockVote--;
}
#endif
public concmd_StartVote(id, flag)
{
if(id && ~get_user_flags(id) & flag)
return console_print(id, "У вас недостаточно прав для использования этой команды!");
if(g_bVoteStarted)
return console_print(id, "[G-Nation.ru] VoteMap has already started");

console_print(id, "[G-Nation.ru] VoteMap started in new round!");
new name[32]; get_user_name(id, name, charsmax(name));
client_print_color(id, 0, "^1[^4G-Nation.ru^1] ^4Администратор ^3%s ^4запустил ^3досрочное ^4голосование!", name);
log_amx("Администратор %s запустил досрочное голосование", name);
#if defined NOROUND
StartVoteMap(); g_bBlockExtended = true;
#else
g_bVoteStarted = g_bBlockExtended = true; hud_lastround();
#endif
return PLUGIN_HANDLED;
}

public clcmd_FF(id)
{
client_print_color(id, 0, "^1[^4G-Nation.ru^1] ^4На сервере ^3%s ^4огонь по своим.", get_cvar_num("mp_friendlyfire") ? "разрешен" : "запрещен");
return PLUGIN_HANDLED;
}

public clcmd_TheTime(id)
{
static time[64]; get_time ("%Y/%m/%d - %H:%M:%S", time, sizeof (time) - 1);
client_print_color(id, 0, "^1[^4G-Nation.ru^1] ^4Текущее время: ^3 %s", time);
return PLUGIN_HANDLED;
}

public clcmd_NextMap(id)
{
client_print_color(id, 0, "^1[^4G-Nation.ru^1] ^4Следующая карта еще ^3не определена ^1:(");
return PLUGIN_HANDLED;
}

public clcmd_TimeLeft(id)
{
static a; a = get_timeleft();
if(a > 0) client_print_color(id, 0, "^1[^4G-Nation.ru^1] ^4До конца карты осталось: ^3%d:%02d", (a / 60), (a % 60));
else client_print_color(id, 0, "^1[^4G-Nation.ru^1] ^4Карта ^3не ограничена ^4по времени.");
return PLUGIN_HANDLED;
}
#if defined RTV_FUNC
public clcmd_RockVote(id)
{
if(g_bVoteStarted || g_bBeInVote) return PLUGIN_HANDLED;

static estimated_time, iVote; estimated_time = get_systime() - g_iStartMap;
if(estimated_time < RTV_DELAY)
{
static temp, _time; _time = ((temp = (RTV_DELAY - estimated_time)) / 60) < 1 ? temp : temp / 60;
return client_print_color(id, 0, "^1[^4G-Nation.ru^1] ^4Вы ^3не можете ^4голосовать за досрочную смену карты. Осталось: ^3%d ^4%s.", _time, (temp / 60) < 1 ? "сек" : "мин");
}
if(!g_bRockVoted[id])
{
g_bRockVoted[id] = true;
if((iVote = floatround(get_playersnum() * RTV_PERCENT / 100.0, floatround_round) - ++g_iRockVote) > 0)
{
static szName[32]; get_user_name(id, szName, charsmax(szName));
client_print_color(0, 0, "^1[^4G-Nation.ru^1] ^3%s ^4проголосовал за смену карты. Осталось голосов: ^3%d", szName, iVote);
log_amx("%s проголосовал за смену карты. Осталось: %d голосов.", szName, iVote);
}
else
{
#if defined NOROUND
StartVoteMap(); g_bBlockExtended = true;
#else
g_bVoteStarted = g_bBlockExtended = true; hud_lastround();
#endif
client_print_color(0, 0, "^1[^4G-Nation.ru^1] ^4Все голоса за досрочную смену карты набраны.");
}
}
else client_print_color(id, 0, "^1[^4G-Nation.ru^1] ^4Вы уже голосовали!");
return PLUGIN_HANDLED;
}
#endif
#if defined NOMINATE_FUNC
public clcmd_Say(id)
{
if(g_bVoteStarted || g_bBeInVote) return PLUGIN_CONTINUE;

static i, szMessage[36]; read_args(szMessage, charsmax(szMessage)); remove_quotes(szMessage);
if(TrieKeyExists(g_tBlockedMaps, szMessage))
return client_print_color(id, 0, "^1[^4G-Nation.ru^1] ^4Эту карту ^3недавно ^4играли!");
else if(TrieKeyExists(g_tNomMaps, szMessage))
return client_print_color(id, 0, "^1[^4G-Nation.ru^1] ^4Эта карта уже номинирована!");
else if(TrieGetCell(g_tLoadedMaps, szMessage, i))
return NomMap(id, szMessage, i);
return PLUGIN_CONTINUE;
}

NomMap(id, map[], MapId)
{
if(g_iNomMap[id] == MAX_NOMINATE_PL)
return client_print_color(id, 0, "^1[^4G-Nation.ru^1] ^4Вы больше ^3не можете ^4номинировать карт!");
else if(g_iCountNom == MAX_NOMINATE)
return client_print_color(id, 0, "^1[^4G-Nation.ru^1] ^4Уже номинировано ^3максимальное ^4число карт!");

g_iIdMapNom[g_iCountNom] = MapId;
TrieSetCell(g_tNomMaps, map, g_iCountNom);
g_iNomMap[id]++; g_iCountNom++;

static szName[32]; get_user_name(id, szName, charsmax(szName));
return client_print_color(0, id, "^1[^4G-Nation.ru^1] ^3%s ^4номинировал на голосование^3 %s^1.", szName, map);
}
#endif
#if !defined NOROUND
public eRoundStart()
{
if(!g_bVoteStarted) return;
g_bVoteStarted = false;
StartVoteMap();
}
#endif

StartVoteMap()
{
#if !defined NOROUND
g_oldFreezeTime = get_pcvar_float(g_pFreezeTime);
set_pcvar_float(g_pFreezeTime, VOTETIME+4.5);
#endif
set_task(1.0, "Show_Timer", _, _, _, "a", 3);
set_task(4.0, "voteNextMap");
}

public CheckTime()
{
if(g_bVoteStarted || g_bBeInVote) return;
static iTimeLeft, iTimeLimit;
iTimeLeft = get_timeleft();
iTimeLimit = get_pcvar_num(g_pTimeLimit);
//if(!iRoundTime) iRoundTime = get_pcvar_num(g_pRoundTime);
if(iTimeLeft < 30 && iTimeLimit > 0)
{
g_iTempTimelimit = iTimeLimit;
#if defined NOROUND
StartVoteMap();
#else
g_bVoteStarted = true;
if(!g_oldTimeLimit)
g_oldTimeLimit = iTimeLimit;
set_pcvar_num(g_pTimeLimit, iTimeLimit);
hud_lastround();
#endif
}
}

public Show_Timer()
{
static iTimer; if(iTimer == 0) iTimer = 3;
set_hudmessage(50, 255, 50, -1.0, 0.6, 0, 0.0, 1.0, 0.0, 0.0, 1);
show_hudmessage(0, "До голосования осталось %d сек!", iTimer);
client_cmd(0, ";spk %s", g_szSound[iTimer--]);
}

public voteNextMap()
{
g_bBeInVote = true;
static szMenu[256], iLen, iKeys, a, iTempMapTime;
if(!iTempMapTime)
iTempMapTime = g_iTempTimelimit + MAX_NUMEXTEND * STEP_EXTEND;

iLen = formatex(szMenu, charsmax(szMenu), "\d[\rГолосование\d] \yВыберите карту^n"); iKeys = 0;

while(g_iVoteMapNum < SELECTMAPS)
{
#if defined NOMINATE_FUNC
if(g_iVoteMapNum < g_iCountNom)
{
g_iMapInMenu[g_iVoteMapNum] = g_iIdMapNom[g_iVoteMapNum];
ArrayGetString(g_aLoadMaps, g_iIdMapNom[g_iVoteMapNum], g_VoteMap[g_iVoteMapNum], charsmax(g_VoteMap[]));
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r%d. \w%s^n", g_iVoteMapNum+1, g_VoteMap[g_iVoteMapNum]);
iKeys |= (1<<g_iVoteMapNum++); continue;
}
#endif
do a = random(g_iMapCount - 1);
while(_is_map_in_menu(a));
g_iMapInMenu[g_iVoteMapNum] = a;
ArrayGetString(g_aLoadMaps, a, g_VoteMap[g_iVoteMapNum], charsmax(g_VoteMap[]));
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r%d. \w%s^n", g_iVoteMapNum+1, g_VoteMap[g_iVoteMapNum]);
iKeys |= (1<<g_iVoteMapNum++);
}
if(g_iTempTimelimit < iTempMapTime && !g_bBlockExtended)
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r%d. \w%s \d[\rПродлить\d]", g_iVoteMapNum+1, szCurrentMap);
iKeys |= (1<<g_iVoteMapNum);
}
show_menu(0, iKeys, szMenu, VOTETIME, "MapChoose");
set_task(float(VOTETIME), "checkVotes");
client_cmd(0, "spk Gman/Gman_Choose2");
log_amx("Vote: Voting for the nextmap started");
return PLUGIN_HANDLED;
}

public votemenu_handler(id, iKey)
{
static szName[32]; get_user_name(id, szName, charsmax(szName));
switch(iKey)
{
case SELECTMAPS: client_print_color(0, 0, "^1[^4G-Nation.ru^1] ^4Игрок ^3%s ^4выбрал ^3продление карты", szName);
default: client_print_color(0, 0, "^1[^4G-Nation.ru^1] ^4Игрок ^3%s ^4выбрал карту ^3%s", szName, g_VoteMap[iKey]);
}
return g_voteCount[iKey]++;
}

public checkVotes()
{
new b;
for(new a; a < SELECTMAPS+1; a++)
if(g_voteCount[b] < g_voteCount[a])
b = a;

if(!g_voteCount[b])
{
new map = random(SELECTMAPS-1);
client_print_color(0, 0, "^1[^4G-Nation.ru^1] ^4Никто ^3не проголосовал! ^4Cледующая карта: ^3%s", g_VoteMap[map]);
log_amx("Vote: Voting for the nextmap finished. The nextmap will be %s | Random map", g_VoteMap[map]);
copy(g_NextMap, charsmax(g_NextMap), g_VoteMap[map]); ChangeLevel();
}
else if(g_voteCount[b] == g_voteCount[SELECTMAPS])
{
set_pcvar_num(g_pTimeLimit, g_iTempTimelimit + STEP_EXTEND);
client_print_color(0, 0, "^1[^4G-Nation.ru^1] ^4Голосование ^3завершено! ^4Карта продлена на ^3%d ^4минут.", STEP_EXTEND);
log_amx("Vote: Voting for the nextmap finished. Map %s will be extended to next %d minutes", szCurrentMap, STEP_EXTEND);
g_bBeInVote = false; g_iVoteMapNum = 0; arrayset(g_voteCount, 0, SELECTMAPS + 2);
#if defined NOMINATE_FUNC
arrayset(g_iNomMap, 0, 33); arrayset(g_iIdMapNom, 0, MAX_NOMINATE+1); TrieClear(g_tNomMaps);
#endif
}
else
{
client_print_color(0, 0, "^1[^4G-Nation.ru^1] ^4Голосование ^3завершено! ^4Cледующая карта: ^3%s", g_VoteMap[b]);
log_amx("Vote: Voting for the nextmap finished. The nextmap will be %s", g_VoteMap[b]);
copy(g_NextMap, charsmax(g_NextMap), g_VoteMap[b]); ChangeLevel();
}
#if !defined NOROUND
set_pcvar_float(g_pFreezeTime, g_oldFreezeTime);
#endif
}

LoadBlockMaps()
{
new g_lastMapMame[BLOCK_MAPS+1][32], g_lastMap = 1;
copy(g_lastMapMame[0], charsmax(g_lastMapMame[]), szCurrentMap);

if(file_exists(FILE_BLOCKEDMAPS))
{
new buff[256], fp = fopen(FILE_BLOCKEDMAPS, "rt");
while(g_lastMap < BLOCK_MAPS && !feof(fp))
{
fgets(fp, buff, charsmax(buff));
if(buff[0] != ';' && parse(buff, g_lastMapMame[g_lastMap], charsmax(g_lastMapMame[])))
{
TrieSetCell(g_tBlockedMaps, g_lastMapMame[g_lastMap], g_lastMap);
g_lastMap++;
}
}
delete_file(FILE_BLOCKEDMAPS);
}
if(write_file(FILE_BLOCKEDMAPS, "; File generated by Mapchooser. Do not modify!"))
for(new i; i < g_lastMap; i++)
write_file(FILE_BLOCKEDMAPS, g_lastMapMame[i]);
}

LoadMaps()
{
if(!file_exists(FILE_MAPS)) return;

new szMapName[32], buff[256], fp = fopen(FILE_MAPS, "rt");
while(!feof(fp))
{
fgets(fp, buff, charsmax(buff));
trim(buff); remove_quotes(buff);

if(buff[0] != ';' && parse(buff, szMapName, charsmax(szMapName)))
{
if(!is_map_valid(szMapName) || TrieKeyExists(g_tBlockedMaps, szMapName) || !strcmp(szMapName, szCurrentMap)) continue;

ArrayPushString(g_aLoadMaps, szMapName);
#if defined NOMINATE_FUNC
TrieSetCell(g_tLoadedMaps, szMapName, g_iMapCount);
#endif
g_iMapCount++;
}
}
fclose(fp);

if(!g_iMapCount)
set_fail_state("LOAD_MAPS: Nothing loaded");
else if(g_iMapCount < SELECTMAPS)
{
new frmt[64]; formatex(frmt, charsmax(frmt), "LOAD_MAPS: Insufficient maps to vote [Load: %d / Min: %d]", g_iMapCount, SELECTMAPS);
set_fail_state(frmt);
}
}

bool:_is_map_in_menu(MapId)
{
for(new i; i < g_iVoteMapNum; i++)
if(g_iMapInMenu[i] == MapId)
return true;
return false;
}

ChangeLevel()
{
client_cmd(0, "spk %s", END_SOUND);
message_begin(MSG_ALL, SVC_INTERMISSION);
message_end();
set_task(3.0, "NextMap");
}

public NextMap()
server_cmd("changelevel %s", g_NextMap);

stock hud_lastround()
{
set_hudmessage(127, 127, 127, 0.02, 0.21, 0, 30.0, 30.0, 0.0, 0.5, 3);
show_hudmessage(0, "Последний раунд");
}


Прикрепленные файлы:
Прикрепленный файл  gungame.sma ( 281,92 килобайт ) Кол-во скачиваний: 43
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя georgeml
сообщение 20.1.2015, 20:01
Сообщение #2
Стаж: 12 лет

Сообщений: 1467
Благодарностей: 439
Полезность: 423

Цитата(oxoTHuk. @ 20.1.2015, 20:40) *
Ребят, что-то не пойму в чем проблема, помогите =)
увидел ошибку что мод не может отыскать плагин [Supp] MapChooser,

gg_changelevel_custom "" вызовет стандартный mchooser, либо gg_changelevel_custom "[Supp] MapChooser"))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя oxoTHuk.
сообщение 20.1.2015, 20:38
Сообщение #3


Иконка группы

Стаж: 17 лет

Сообщений: 879
Благодарностей: 515
Полезность: 867

Гениально =))))
Что-то я завтыкал =)))
Спасибо, ушел проверять, но всетаки хотелось бы понять ошибку в скриптинге =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя oxoTHuk.
сообщение 20.1.2015, 22:00
Сообщение #4


Иконка группы

Стаж: 17 лет

Сообщений: 879
Благодарностей: 515
Полезность: 867

georgeml, не прав ты =) тут явно квар нужен =)
Код:
	// no gungame mapcycle
if(!mapCycleFile[0] || !file_exists(mapCycleFile))
{
new custom[256];
get_pcvar_string(gg_changelevel_custom,custom,255);

// try custom changelevel command
if(custom[0])
{
server_cmd(custom); //пишем в серверную консоль amx_nextmap
return;
}
}

В общем твоим способом не работает =(((
Вопрос открыт
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя georgeml
сообщение 21.1.2015, 8:36
Сообщение #5
Стаж: 12 лет

Сообщений: 1467
Благодарностей: 439
Полезность: 423

Цитата(oxoTHuk. @ 20.1.2015, 22:00) *
georgeml, не прав ты =) тут явно квар нужен =)
Код:
	// no gungame mapcycle
if(!mapCycleFile[0] || !file_exists(mapCycleFile))
{
new custom[256];
get_pcvar_string(gg_changelevel_custom,custom,255);

// try custom changelevel command
if(custom[0])
{
server_cmd(custom); //пишем в серверную консоль amx_nextmap
return;
}
}

В общем твоим способом не работает =(((
Вопрос открыт

gg_changelevel_custom "" Как бы и есть квар) в gangame.cfg
Если квар пустой- запустится mapchooser, если и его нет, то будет nextmap
В общем квар gg_changelevel_custom "" оставь пустым, даже если ставишь мапчузер. Если мапчузер не нужен- nextmap.amxx. С кодом некогда было разбираться, а так все работает.

Отредактировал: georgeml, - 21.1.2015, 8:42
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя oxoTHuk.
сообщение 21.1.2015, 8:44
Сообщение #6


Иконка группы

Стаж: 17 лет

Сообщений: 879
Благодарностей: 515
Полезность: 867

Тогда я тебя не понимаю:
Цитата
gg_changelevel_custom "[Supp] MapChooser"

[Supp] MapChooser - не есть квар =)
Смысл в том, чтобы GunGame вызывал голосование и менял карту с помощью [Supp] MapChooser, как я уже писал, если я ставлю gg_vote_custom "amx_rtv" (голосование от кастом плагина), карта меняется сразу после голосования, а мне нужно чтобы доиграли карту, выявился победитель и только потом карта менялась на выбранную.
Вариант с кварами не подходит явно, т.к. не дает доиграть, поэтому явно ему в код нужно дописать кастом плагин.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя georgeml
сообщение 21.1.2015, 8:46
Сообщение #7
Стаж: 12 лет

Сообщений: 1467
Благодарностей: 439
Полезность: 423

[quote name='oxoTHuk.' date='21.1.2015, 8:44' post='721360']
В общем квары gg_vote_custom "" gg_changelevel_custom "" оставь пустыми, даже если ставишь мапчузер. Если мапчузер не нужен- nextmap.amxx. С кодом некогда было разбираться, а так все работает.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя oxoTHuk.
сообщение 21.1.2015, 8:52
Сообщение #8


Иконка группы

Стаж: 17 лет

Сообщений: 879
Благодарностей: 515
Полезность: 867

georgeml, да ну нафиг...
Цитата
Так вот, у меня голосование должно вызываться на втором с конца уровне, т.е. когда кто-то получает гранату. Но тут я обратил внимание что голосование не вызывается вовсе, полез смотреть, увидел ошибку что мод не может отыскать плагин [Supp] MapChooser

Ну извините что логи этого не скинул...и это происходило при пустых кварах, от этого я и начал плясать.
В логи пишет текст из этого условия: Код:
else log_amx("Using gg_vote_setting without any compatible plugins: could not start a vote!");
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя georgeml
сообщение 21.1.2015, 8:55
Сообщение #9
Стаж: 12 лет

Сообщений: 1467
Благодарностей: 439
Полезность: 423

Цитата(oxoTHuk. @ 21.1.2015, 8:44) *
Смысл в том, чтобы GunGame вызывал голосование и менял карту с помощью [Supp] MapChooser,

Если не поможет, как костыль))- переименуй [Supp] MapChooser => mapchooser.amxx, тогда при пустом gg_changelevel_custom он его вызовет)
Я не стал заморачиваться с супер-мапчузерами (на кой они на ГГ)
Скрытый текст
L 01/21/2015 - 09:22:13: -------- Mapchange to gg_inferno --------
L 01/21/2015 - 09:29:48: [gungame.amxx] Starting a map vote from Nextmap Chooser
L 01/21/2015 - 09:29:48: [mapchooser.amxx] Vote: Voting for the nextmap started
L 01/21/2015 - 09:30:03: [mapchooser.amxx] Vote: Voting for the nextmap finished. The nextmap will be gg_33_shudder
L 01/21/2015 - 09:30:58: -------- Mapchange to gg_33_shudder --------
L 01/21/2015 - 09:43:22: [gungame.amxx] Starting a map vote from Nextmap Chooser
L 01/21/2015 - 09:43:22: [mapchooser.amxx] Vote: Voting for the nextmap started
L 01/21/2015 - 09:43:37: [mapchooser.amxx] Vote: Voting for the nextmap finished. The nextmap will be gg_jackson2


Отредактировал: georgeml, - 21.1.2015, 9:00
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя oxoTHuk.
сообщение 21.1.2015, 9:01
Сообщение #10


Иконка группы

Стаж: 17 лет

Сообщений: 879
Благодарностей: 515
Полезность: 867

Блин, ты видимо не понимаешь =)
Код:
 else if((plugin = is_plugin_loaded("[Supp] MapChooser")) != -1)

и
Код:
else if((plugin = is_plugin_loaded("Nextmap Chooser")) != -1)

Смотрят по названию плагина (Код:
register_plugin(PLUGIN, VERSION, AUTHOR);
)
У [Supp] MapChooser название файла совпадает с Nextmap Chooser и равно mapchooser.amx, и не работает же гад =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя georgeml
сообщение 21.1.2015, 9:23
Сообщение #11
Стаж: 12 лет

Сообщений: 1467
Благодарностей: 439
Полезность: 423

Цитата(oxoTHuk. @ 21.1.2015, 10:01) *
Блин, ты видимо не понимаешь =)
Код:
 else if((plugin = is_plugin_loaded("[Supp] MapChooser")) != -1)

и
Код:
else if((plugin = is_plugin_loaded("Nextmap Chooser")) != -1)

Смотрят по названию плагина (Код:
register_plugin(PLUGIN, VERSION, AUTHOR);
)
У [Supp] MapChooser название файла совпадает с Nextmap Chooser и равно mapchooser.amx, и не работает же гад =)

rofl.gif Ясно) Я же говорю
Цитата
С кодом некогда было разбираться, а так все работает.

Гляну вечером.. Черкани по контакту
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Kasper55
сообщение 21.1.2015, 9:27
Сообщение #12
Стаж: 16 лет

Сообщений: 1145
Благодарности: выкл.

да тут тупо надо писать сюда и спрашивать

http://www.neugomon.ru/threads/47/

Отредактировал: Kasper55, - 21.1.2015, 9:28
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя oxoTHuk.
сообщение 21.1.2015, 9:37
Сообщение #13


Иконка группы

Стаж: 17 лет

Сообщений: 879
Благодарностей: 515
Полезность: 867

Как-бы тык
Ответ оттуда:
Цитата
Код:
if(callfunc_begin_i(get_func_id("voteNextmap",plugin),plugin) == 1)
> voteNextMap
if(callfunc_begin_i(get_func_id("voteNextMap",plugin),plugin) == 1)

Не понял прикола, вот второй день жду ответа и там и тут =)

И как-бы почему обязательно туда?
Тут как-бы раздел скриптинга, почему я тут помощи попросить не могу?
А может мне только на amx-x.ru просить помощи?

Отредактировал: oxoTHuk., - 21.1.2015, 9:39
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
danisimus
сообщение 2.10.2016, 15:08
Сообщение #14
Стаж: 17 лет

Сообщений: 1324
Благодарностей: 376
Полезность: 172

Всем привет. Хочу поставить плагин голосование с затуханием экрана super_mapchooser, что мне нужно дописать?

gg_vote_custom ""
gg_changelevel_custom ""

Что-то вообще не понимаю. Какие команды дописывать?

Отредактировал: danisimus, - 2.10.2016, 15:11
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 2.10.2016, 15:09
Сообщение #15


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Команды super_mapchooser, gg_vote_custom "вызов голосования" gg_changelevel_custom "смена карты".
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
danisimus
сообщение 2.10.2016, 15:17
Сообщение #16
Стаж: 17 лет

Сообщений: 1324
Благодарностей: 376
Полезность: 172

Цитата(Bloo @ 2.10.2016, 16:09) *
Команды super_mapchooser, gg_vote_custom "вызов голосования" gg_changelevel_custom "смена карты".


gg_vote_custom "super_mapchooser"
gg_changelevel_custom "mapchooser_votemaps"

получается так?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 2.10.2016, 15:20
Сообщение #17


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

danisimus, я представления не имею какие команды в этом super_mapchooser
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
danisimus
сообщение 2.10.2016, 15:51
Сообщение #18
Стаж: 17 лет

Сообщений: 1324
Благодарностей: 376
Полезность: 172

Эти команды?

Код
#define FLOAT_TIMELIMIT        "mp_timelimit"
#define STRING_NEXTMAP        "amx_nextmap"
#define NUM_MAXROUNDS        "mp_maxrounds"
#define NUM_WINLIMIT        "mp_winlimit"

#define NUM_SM_VOTEMAPS        "mapchooser_votemaps"
#define NUM_SM_LANG        "mapchooser_lang"
#define NUM_SM_TIME        "mapchooser_votetime"

#define NUM_SM_RED        "mapchooser_result_red"
#define NUM_SM_GREEN        "mapchooser_result_green"
#define NUM_SM_BLUE        "mapchooser_result_blue"

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 2.10.2016, 15:59
Сообщение #19


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

danisimus, я не знаю, мне дефайны особо не говорят что делают эти квары\команды. Может это время до вызова голосования.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: