Крах плагина после смены карты.
| |
Naykon
|
Дата: Суббота, 01.09.2012, 00:59:15 | Сообщение # 1 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Добрый день у меня написан довольно емкий плагин, суть в том что в начале раунда запускается голосование за игрока и игроку присваиваются определенные права, когда запускаю сервер все отлично работает, но после неоднократной смены карты часть плагина, а конкретно голосование в начале каждого раунда перестает работать.. а остальные функции этого большого плагина работают отлично...
Вот вам часть кода roundstart которая отвечает за запуск голосования вплоть до его окончания, пожалуйста посмотрите в чем проблема? Сам уже мучаюсь около месяца, ошибку не вижу(( Благодарю.
Code public Round_Start(Handle:event, const String:name[], bool:dontBroadcast) { if (voteTimer != INVALID_HANDLE) { KillTimer(voteTimer); voteTimer = INVALID_HANDLE; } if (voteMenu != INVALID_HANDLE) CloseHandle(voteMenu); if (START == 1) { voteMenu = CreateMenu(Select_Func); SetMenuTitle(voteMenu, "Выберите игрока\n \n"); SetMenuExitButton(voteMenu, false); decl String:StR_Id[25], String:StR_Name[MAX_NAME_LENGTH]; new players = 0; for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i)) { SetEntProp(i, Prop_Data, "m_takedamage", 2); } voteOne[i] = 0; if (IsClientInGame(i) && GetClientTeam(i) == 3 && IsPlayerAlive(i)) { IntToString(GetClientUserId(i), StR_Id, sizeof(StR_Id)); GetClientName(i,StR_Name, sizeof(StR_Name)); AddMenuItem(voteMenu, StR_Id, StR_Name); players += 1; } } if (players > 0) { for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i) && GetClientTeam(i) == 2) { decl String:StR_Id[15]; t = GetClientOfUserId(StringToInt(StR_Id)); t = i; DisplayMenu(voteMenu, i, 10); } } voteAll = 0; // сколько всего было голосов voteTimerSec = 10; // время голосования в сек. voteTimer = CreateTimer(1.0, Timer_Func, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); } else { CloseHandle(voteMenu); voteMenu = INVALID_HANDLE; } if (cMenu != INVALID_HANDLE) CloseHandle(cMenu); if (Menu != INVALID_HANDLE) CloseHandle(Menu); UserFree = 0; Commander = 0; } }
public Select_Func(Handle:menu, MenuAction:action, i, option) { if (action == MenuAction_Select) { decl String:StR_Id[25]; GetMenuItem(menu, option, StR_Id, sizeof(StR_Id)); Commander = GetClientOfUserId(StringToInt(StR_Id)); if (Commander > 0) { voteAll += 1; voteOne[Commander] += 1; decl Handle:h; if ((h = StartMessageAll("SayText2")) != INVALID_HANDLE) { BfWriteByte(h, t); BfWriteByte(h, true); decl String:xStR[150]; Format(xStR, sizeof(xStR), "\x03[\x01SG\x04: \x03Выборы\x03] \x04Игрок \x03%N \x04проголосовал за \x03%N", i, Commander); BfWriteString(h, xStR); EndMessage(); } } else PrintToChat(i, "\x05Игрок не найден =("); } }
public Action:Timer_Func(Handle:timer, any:x) { voteTimerSec -= 1; if (voteTimerSec > 0) { PrintHintTextToAll("Определиться через:\n< %d сек >", voteTimerSec); return Plugin_Continue; } // Время истекло, голосование окончено voteTimer = INVALID_HANDLE; if (voteMenu != INVALID_HANDLE) { CloseHandle(voteMenu); voteMenu = INVALID_HANDLE; } PrintHintTextToAll("Голосование завершено (%d голосов)", voteAll); if (voteAll < 1) { Commander = GetRandomClient();
if (Commander > 0) { decl Handle:z; if ((z = StartMessageAll("SayText2")) != INVALID_HANDLE) { BfWriteByte(z, ct); BfWriteByte(z, true); decl String:xStR[150]; Format(xStR, sizeof(xStR), "\x01???\x03[\x01SG\x04:\x03] \x04Игрок \x03%N!\x01???", Commander); BfWriteString(z, xStR); EndMessage(); } SetEntProp(Commander, Prop_Send, "m_bHasHelmet", 1); SetEntProp(Commander, Prop_Send, "m_ArmorValue", 100); SetEntityModel(Commander, "models/player/sourcegaming.ru/jail/com/cop2.mdl"); Com_Menu(Commander); return Plugin_Stop; } return Plugin_Stop; } // Находим игрока, за которого больше всего проголосовали new vots = 0; for (new i = 1; i <= MaxClients; i++) { if (voteOne[i] > vots) { vots = voteOne[i]; Commander = i; } } if (Commander > 0 && IsClientInGame(Commander) && GetClientTeam(Commander) == 3 && IsPlayerAlive(Commander)) { decl Handle:k; if ((k = StartMessageAll("SayText2")) != INVALID_HANDLE) { BfWriteByte(k, ct); BfWriteByte(k, true); decl String:xStR[150]; Format(xStR, sizeof(xStR), "\x01???\x03[\x01SG\x04:] \x04Игрок \x03%N!\x01???", Commander); BfWriteString(k, xStR); EndMessage(); }
SetEntProp(Commander, Prop_Send, "m_bHasHelmet", 1); SetEntProp(Commander, Prop_Send, "m_ArmorValue", 100); SetEntityModel(Commander, "models/player/sourcegaming.ru/jail/com/cop2.mdl"); Com_Menu(Commander); } else { Commander = GetRandomClient(); if (Commander > 0) { decl Handle:n; if ((n = StartMessageAll("SayText2")) != INVALID_HANDLE) { BfWriteByte(n, ct); BfWriteByte(n, true); decl String:xStR[150]; Format(xStR, sizeof(xStR), "\x03???\x04Игрок\x03 %N \x04!\x03???", Commander); BfWriteString(n, xStR); EndMessage(); } SetEntProp(Commander, Prop_Send, "m_bHasHelmet", 1); SetEntProp(Commander, Prop_Send, "m_ArmorValue", 100); SetEntityModel(Commander, "models/player/sourcegaming.ru/jail/com/cop2.mdl"); Com_Menu(Commander) } } return Plugin_Stop; } Добавлено (29.08.2012, 23:09:29) --------------------------------------------- огромная просьба обратить внимание. Добавлено (30.08.2012, 12:05:11) --------------------------------------------- HELP Добавлено (01.09.2012, 00:59:15) --------------------------------------------- Поднимаю тему.. пожалуйста ответте.
Гости не могут скачивать файлы
|
|
|
| |
_wS_
|
Дата: Суббота, 01.09.2012, 01:12:28 | Сообщение # 2 |
|
Опять те же самые ошибки..
Code if (voteMenu != INVALID_HANDLE) CloseHandle(voteMenu); if (START == 1) { voteMenu = CreateMenu(Select_Func); Если "START" не будет равен 1, в след рауде будет ошибка.. Если ты сделал CloseHandle(voteMenu); и "voteMenu" глобальная переменная, то надо или очистить ее (voteMenu = INVALID_HANDLE), или присвоить ей другое значение.
|
|
| |
Naykon
|
Дата: Понедельник, 10.09.2012, 00:56:29 | Сообщение # 3 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Проблема еще актуальна совет не помог к сожалению(((((
плагин пропадает после 3-4 смен карт:
Code public Round_Start(Handle:event, const String:name[], bool:dontBroadcast) { Commander = 0; TimerSec = 0; if (Timer != INVALID_HANDLE) { KillTimer(Timer); Timer = INVALID_HANDLE; } if (Menu != INVALID_HANDLE) { CloseHandle(Menu); Menu = INVALID_HANDLE; } Menu = CreateMenu(MenuSelect); SetMenuTitle(Menu, "Выберите желаемого командира!\n \n"); AddMenuItem(Menu, "", "Лучше подумай дважды!", ITEMDRAW_DISABLED); AddMenuItem(Menu, "", "Прежде чем тыкать куда нибудь!\n \n", ITEMDRAW_DISABLED); SetMenuExitButton(Menu, false); decl String:StR_Id[25], String:StR_Name[MAX_NAME_LENGTH]; new players = 0; //Игроки на сервере for (new i = 1; i <= MaxClients; i++) { AllVotes[i] = 0; //Кол-во голосов if (IsClientInGame(i) && GetClientTeam(i) == 3 && IsPlayerAlive(i)) { IntToString(GetClientUserId(i), StR_Id, sizeof(StR_Id)); GetClientName(i,StR_Name, sizeof(StR_Name)); AddMenuItem(Menu, StR_Id, StR_Name); players += 1; } } if (players > 0) { for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i) && GetClientTeam(i) == 2) { DisplayMenu(Menu, i, 10); } } BeVotes = 0; // сколько всего было голосов TimerSec = 10; // время голосования в сек. Timer = CreateTimer(1.0, Timer_Func, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); } else { CloseHandle(Menu); Menu = INVALID_HANDLE; } }
В чем ошибка????((
|
|
| |
Beelzebub
|
Дата: Понедельник, 10.09.2012, 12:07:41 | Сообщение # 4 |
|
Сообщений: 202
Репутация: 13 [ +/- ]
|
|
Сам писал код тебе и искать ошибку.Добавлено (10.09.2012, 12:07:41) --------------------------------------------- Кидай полный код возможно смогу помочь.
|
|
| |
Naykon
|
Дата: Понедельник, 10.09.2012, 18:43:08 | Сообщение # 5 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
спс проблемма снята
|
|
| |
|