Заказать Сервер Заказать Плагин Контакты Поиск

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

Страница 1 из 11
Форум » SourceMod - Counter Strike Source && CS GO » Уроки SourceMod (SourcePawn) Скриптинга » Разные функции на разных картах
Разные функции на разных картах
_wS_ Дата: Вторник, 28.02.2012, 15:57:51 | Сообщение # 1
Например, вы хотите чтобы на карте de_dust2, после старта раунда, играл один звук, а на карте de_nuke другой. Это легко устроить с помощью глобальных переменных, хотя, можно и без них. Ниже примеры.

Code
#include <sourcemod>
#include <sdktools_sound>

public OnPluginStart()
{
     HookEvent("round_start", round_start, EventHookMode_PostNoCopy);
}

public round_start(Handle:event, const String:name[], bool:dontBroadcast)
{
     decl String:MaP[75];
     GetCurrentMap(MaP, 75);
     if (StrEqual(MaP, "de_dust2")) EmitSoundToAll("1.mp3");
     else if (StrEqual(MaP, "de_nuke")) EmitSoundToAll("1.mp3");
}


Это совсем просто, обычные условия: 'если' и 'то'.
Если у вас много карт и разные звуки для них, то можно сделать так:

Code
#include <sourcemod>
#include <sdktools_sound>

#define MAPS_NUM 3

new String:Maps[MAPS_NUM][] =   
{
     "de_dust2",
     "de_nuke",
     "de_tides"
};

new String:Sounds[MAPS_NUM][] =   
{
     "1.mp3",
     "2.mp3",
     "3.mp3"
};

public OnPluginStart()
{
     HookEvent("round_start", round_start, EventHookMode_PostNoCopy);
}

public round_start(Handle:event, const String:name[], bool:dontBroadcast)
{
     decl String:MaP[75];
     GetCurrentMap(MaP, 75);
     for (new i = 0; i < MAPS_NUM; i++)
     {
         if (StrEqual(MaP, Maps[i]))
         {
             EmitSoundToAll(Sounds[i]);
             break;
         }
     }
}


На de_dust2 будет проигрываться 1.mp3, на de_nuke 2.mp3, на de_tides 3.mp3
Можно и так:

Code
#include <sourcemod>
#include <sdktools_sound>

new String:Sound[75];

public OnPluginStart()
{
      HookEvent("round_start", round_start, EventHookMode_PostNoCopy);
}

public OnMapStart()
{
     decl String:MaP[75];
     GetCurrentMap(MaP, 75);
     if (StrEqual(MaP, "de_dust2")) Sound = "1.mp3";
     else if (StrEqual(MaP, "de_cbble")) Sound = "2.mp3";
     else Sound = "-";
}

public round_start(Handle:event, const String:name[], bool:dontBroadcast)
{
     if (!StrEqual(Sound, "-")) EmitSoundToAll(Sound);
}
 
Форум » SourceMod - Counter Strike Source && CS GO » Уроки SourceMod (SourcePawn) Скриптинга » Разные функции на разных картах
Страница 1 из 11
Поиск: