Смена Режима Раунда
| |
Sunday
|
Дата: Понедельник, 24.09.2012, 02:06:26 | Сообщение # 1 |
|
Сообщений: 186
Репутация: 24 [ +/- ]
|
|
Здравствуйте Форумчане, это простой и полезный скрипт для перезагрузки карты в режим ДМ/ТДМ и просто перезагрузки Раунда в имеющемся режиме. Я часто его использую у себя на сервере и поэтому возникла необходимость дополнить скрипт таким образом, когда пишешь в консоль sm_reloadmap 0 то карта просто перезагружается, когда пишешь sm_reloadmap 1 то карта перезагружается в ДМ режим и когда пишешь sm_reloadmap 2 то в командный. Перед каждым действием появляется сообщение в чате "Карта будет перезагружена в X режим" и через 3 секунды применяется само действие. Если Вас не затруднит, подскажите как лучше это сделать.
Code #include <sourcemod>
public OnPluginStart() { RegAdminCmd("sm_reloadmap", Command_ReloadMap, ADMFLAG_CHANGEMAP, "Reloads the current map"); }
public Action:Command_ReloadMap(client, args) { new String:map[128]; GetCurrentMap(map, sizeof(map)); ForceChangeLevel(map, "sm_reloadmap Command"); }
Прилагаю Сам скрипт описанный выше.
Гости не могут скачивать файлы
|
Сообщение отредактировал Sunday - Понедельник, 24.09.2012, 02:19:21 |
|
| |
sssw
|
Дата: Понедельник, 24.09.2012, 03:20:32 | Сообщение # 2 |
|
Сообщений: 123
Репутация: 14 [ +/- ]
|
|
Тут new лучше заменить на decl. Ты инзализируеш сначала 0 затем название карты. Зачем?
Пример.. Code new i = 4; //Выделяет место в памяти и инициализирует значение. === Code decl i; //Выделяет место в памяти i = 4; //инициализирует значение
Насчёт вопроса..
Code #include <sourcemod>
public OnPluginStart() { RegAdminCmd("sm_reloadmap", Command_ReloadMap, ADMFLAG_CHANGEMAP, "Reloads the current map"); }
public Action:Command_ReloadMap(client, args) { PrintToChatAll("ChangeMapForever"); CreateTimer(3.0, Forever); }
public Action:Forever(Handle:timer){ decl String:Argument[1], String:map[128]; GetCmdArg(1, Argument, sizeof(Argument)); GetCurrentMap(map, sizeof(map)); switch(StringToInt(Argument)) { case 0: { //Инструкция для первого случия } case 1: { //Инструкция для второго случия } case 2: { //Третий случий } } return Plugin_Continue; }
Сообщение отредактировал sssw - Понедельник, 24.09.2012, 03:55:31 |
|
| |
Sunday
|
Дата: Понедельник, 24.09.2012, 11:03:58 | Сообщение # 3 |
|
Сообщений: 186
Репутация: 24 [ +/- ]
|
|
Quote (sssw) Ты инзализируеш сначала 0 затем название карты. Зачем?
Для того что бы именно на этой карте произошел рестарт.
К примеру как обстоит ситуация, мы играем на сервере и захотели поиграть в ТДМ, приходиться вначале ставить эту карту, потому прописывать mp_teamplay 1 и после sm_restart. Все это жутко неудобно, учитывая что еще приходиться вначале ставить карту и сразу рестартить ее в другой режим, две перезагрузки жутко раздражают. В идеале, если хочешь ТДМ поставить, пишешь команду sm_reloadmap 1, появляется меню с картами, выбираешь карту, выходит сообщение всем о смене карты в ТДМ на такуюто, карта меняется и все довольны но об этом мне совесть не позволит попросить помочь, хоть бы и очень хотелось.
sssw, спасибо большое за помощь, вот что происходит со скриптом, когда я пишу команду, карта просто перезагружается, время не выжидает, режим остается прежним. Я в меру своей неграмотности в Павн, скорее всего не понял что делать с инструкциями.
Сообщение отредактировал Sunday - Понедельник, 24.09.2012, 11:07:24 |
|
| | |
Sunday
|
Дата: Понедельник, 24.09.2012, 13:47:14 | Сообщение # 5 |
|
Сообщений: 186
Репутация: 24 [ +/- ]
|
|
Quote (Scarface_slv) По разному можно, можно и так: Scarface_slv Спасибо огроменное за помощь, все идеально, есть один момент, для того что бы перевести в TDM надо вначале задать переменную mp_teamplay 1 и перезагрузить карту. Если в DM то mp_teamplay 0 и перезагрузить карту. Я добавил к твоему скрипту вот эту строку:
PrintToChatAll("\x03sm_reloadmap 1. Без понятие как переводить в TDM режим"); ServerCommand("mp_teamplay 1; sm_reloadmap 0");
но это я так понимаю слишком криво сделал, получается что вначале срабатывает "mp_teamplay 1" как надо, потом команда возвращает скрипт к другой переменной sm_reloadmap 0 "Карта будет перезагружена" потом ждет опять 3 секунды и срабатывает перезагрузка, в чате вначале пишет: Карта будет перезагружена TDM режим и после Карта будет перезагружена это работает но то что я добавил уверен это не правельно и криво, посоветуй пожалуйста как доработать твой скрипт.
Сообщение отредактировал Sunday - Понедельник, 24.09.2012, 13:55:28 |
|
| | |
Scarface_slv
|
Дата: Понедельник, 24.09.2012, 14:18:05 | Сообщение # 7 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
Ну да все норм=)
|
|
| |
Sunday
|
Дата: Понедельник, 24.09.2012, 14:44:22 | Сообщение # 8 |
|
Сообщений: 186
Репутация: 24 [ +/- ]
|
|
Quote (Scarface_slv) Ну да все норм=)
Scarface_slv Спасибо тебе огромное за помощь, за то что не поленился и помог, низкий поклон! Твой скрипт то что надо!
п.с. Еще Спасибо sssw за примеры и старания!
******* Особая благодарность сайту http://world-source.ru за то что вы есть!
Сообщение отредактировал Sunday - Понедельник, 24.09.2012, 14:52:57 |
|
| |
|