В килбонусе есть ошибка Спойлер Не знаю почему индекс выходит за границы массива. Можете посмотреть офлайн бан на ошибки. Правильно написана функция поменять местами команды? Спойлер PHP: public Handle_ModeTeam(Handle:topmenu, TopMenuAction:action, TopMenuObject:object_id, param, String:buffer[], maxlength) { if (action == TopMenuAction_DisplayOption) { Format(buffer, maxlength, "%t", "changed the team"); } else if(action == TopMenuAction_SelectOption) { SelectionMenu(param); } } SelectionMenu(client) { for(new i = 1; i <= GetMaxClients(); i++) { if(IsClientInGame(i) && (GetClientTeam(i) == TEAM_2 || GetClientTeam(i) == TEAM_1)) { PerformSwitch_d(i); } } ShowActivity(client, "%t", "changed the team places"); LogAction(client, -1, "\"%L\" changed the team places", client, client); } void:PerformSwitch_d(client, bool:toSpec = false) { new cTeam = GetClientTeam(client), toTeam = (toSpec ? TEAM_SPEC : TEAM_1 + TEAM_2 - cTeam); if (cstrikeExtAvail && !toSpec) { CreateTimer(0.1, Timer_TeamSwitch2, client); CS_SwitchTeam(client, toTeam); if (cTeam == TEAM_2) { SetEntityModel(client, "models/player/t_leet.mdl"); } else { SetEntityModel(client, "models/player/ct_sas.mdl"); } if (GetPlayerWeaponSlot(client, CS_SLOT_C4) != -1) { new ent; if ((ent = GetPlayerWeaponSlot(client, CS_SLOT_C4)) != -1) SDKHooks_DropWeapon(client, ent); } } else { ForcePlayerSuicide(client); ChangeClientTeam(client, toTeam); } } public Action:Timer_TeamSwitch2(Handle:timer, any:client) { if (IsClientInGame(client)) CS_RespawnPlayer(client); return Plugin_Stop; }
GetMaxClients() не используй, вместо этого есть переменная MaxClients, и она всегда равна результату этой функции... Её было решено ввести, потому что часто используется, и быстрее сделать это на уровне сурсмода, чем вызывать функцию.
Серый™, вчера уже отключался, не было сил читать исходник. Вообщем предполагаю, что ошибка в объявлении new g_list[65][3][2]; Дело в том, что 65 - это MAXPLAYERS, которая не включает в себя World Entity (сущность мира). Поэтому рекомендуется объявлять как (MAXPLAYERS+1), т.е. надо объявить как new g_list[MAXPLAYERS+1][3][2]; или new g_list[66][3][2]; (но первый вариант лучше). Подробнее можно почитать обсуждение тут: http://forums.alliedmods.net/showthread.php?t=190082. Если это не исправит ошибку (изменение с 65 на 66), то отпишись.
Reiko1231, я это проверить не могу, так как не держу сервер с таким количеством, скажу тем кто использует его, чтоб проверили. Посмотришь офлайн бан?
Reiko1231, Всё остальное получилось, осталось чтоб и писалась причина бана, ниже прикрепляю новый исходник. Всё получилось, сделал всё что нужно, спасибо Reiko1231, за помощь.