Контакты Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Смена Режима Раунда (Скрипт Перезагружает ТДМ, ДМ и просто Раунд)
Смена Режима Раунда
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");
}


Прилагаю Сам скрипт описанный выше.

Прикрепления: reloadmap.sp(0.3 Kb)


Сообщение отредактировал 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
 
Scarface_slv Дата: Понедельник, 24.09.2012, 13:01:15 | Сообщение # 4
Сообщений: 738
Репутация: 61 [ +/- ]
По разному можно, можно и так: vshapke

Прикрепления: 7051736.sp(1.2 Kb)


Сообщение отредактировал Scarface_slv - Понедельник, 24.09.2012, 13:36:58
 
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
 
Sunday Дата: Понедельник, 24.09.2012, 14:13:54 | Сообщение # 6
Сообщений: 186
Репутация: 24 [ +/- ]
Scarface_slv, я изменил вот так, так будет правильно с точке зрения кода? Все работает как надо. klas

Прикрепления: 5320152.sp(1.2 Kb)


Сообщение отредактировал Sunday - Понедельник, 24.09.2012, 14:14:59
 
Scarface_slv Дата: Понедельник, 24.09.2012, 14:18:05 | Сообщение # 7
Сообщений: 738
Репутация: 61 [ +/- ]
Ну да все норм=)
 
Sunday Дата: Понедельник, 24.09.2012, 14:44:22 | Сообщение # 8
Сообщений: 186
Репутация: 24 [ +/- ]
Quote (Scarface_slv)
Ну да все норм=)


Scarface_slv Спасибо тебе огромное за помощь, за то что не поленился и помог, низкий поклон! klas Твой скрипт то что надо!

п.с. Еще Спасибо sssw за примеры и старания!

*******
Особая благодарность сайту http://world-source.ru за то что вы есть!


Сообщение отредактировал Sunday - Понедельник, 24.09.2012, 14:52:57
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Смена Режима Раунда (Скрипт Перезагружает ТДМ, ДМ и просто Раунд)
  • Страница 1 из 1
  • 1
Поиск: