Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

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

  • Страница 1 из 1
  • 1
Замена рандома на последовательное проигрывание
vadim74 Дата: Пятница, 07.06.2013, 13:00:22 | Сообщение # 1
Сообщений: 39
Репутация: 2 [ +/- ]
Есть пример рандомного проигрывания звука по команде
Код

#include <sourcemod>
#include <sdktools>

new String:files[][] = {
  "doors/door_metal_gate_move2.wav", "items/gift_drop.wav"
};
public OnPluginStart()  
{
  RegConsoleCmd("sm_snd", PlaySoundToAll);
}
public Action:PlaySoundToAll(client, args)  
{
  EmitSoundToClient(client, files[GetRandomInt(0, 1)]);
}  


Как мне рандом [GetRandomInt(0, 1)] заменить на последовательное проигрывание звуков?
Надеюсь на вашу помощь.
 
Scarface_slv Дата: Пятница, 07.06.2013, 13:43:05 | Сообщение # 2
Сообщений: 737
Репутация: 61 [ +/- ]
Так попробуй
Код

public Action:PlaySoundToAll(client, args)     
{
           new size = sizeof(files); static Numerik = 0;
           EmitSoundToClient(client, files[Numerik]); Numerik++;
           if(Numerik >= size) Numerik = 0;
}     


Сообщение отредактировал Scarface_slv - Пятница, 07.06.2013, 13:48:51
 
TEIN Дата: Пятница, 07.06.2013, 13:50:08 | Сообщение # 3
Сообщений: 563
Репутация: 78 [ +/- ]
test

Гости не могут скачивать файлы
 
vadim74 Дата: Пятница, 07.06.2013, 18:54:43 | Сообщение # 4
Сообщений: 39
Репутация: 2 [ +/- ]
Оба варианта работают. klas
Выбираю первый, он попроще и кода меньше.

Добавлено (07.06.2013, 18:54:43)
---------------------------------------------

Код

#include <sourcemod>
#include <sdktools>

new Handle:g_hPath,Handle:Array,ArraySize;

public OnPluginStart()
{
  g_hPath = CreateConVar("join_sound_path", "addons/sourcemod/configs/join_sound_list.cfg", "Укажите путь к файлу");
  Array = CreateArray(255, 0);
}

public OnMapStart()
{
  decl String:path[255];
  GetConVarString(g_hPath, path, sizeof(path));
  new Handle:file = OpenFile(path, "r");
  if (file == INVALID_HANDLE) LogError("Не удалось открыть файл '%s'", path);
  else
  {
   new CountLine = 0;
   decl String:line[150], String:buffer[255];
   while (!IsEndOfFile(file) && CountLine <= 50 && ReadFileLine(file, line, sizeof(line)))
   {
    CountLine++;
    TrimString(line);
    PushArrayString(Array, line);
    PrecacheSound(line);
    Format(buffer, sizeof(buffer), "sound/%s", line);
    AddFileToDownloadsTable(buffer);
    PrecacheSound(line);
   }
   ArraySize = GetArraySize(Array);
   CloseHandle(file);
  }
}

public OnClientPutInServer(client)
{
  if (client > 0 && !IsFakeClient(client))
  {
   decl String:ArrayName[50];
   static Numerik = 0;
   for (new i = 0; i < ArraySize; i++)
   {
    GetArrayString(Array, i, ArrayName, sizeof(ArrayName));
   }
   EmitSoundToClient(client, ArrayName[Numerik]); Numerik++;
   if(Numerik >= ArraySize) Numerik = 0;
  }
}

Почему музыка играет только один раз и играет последняя из файла. В файле 3 звука.
 
Scarface_slv Дата: Пятница, 07.06.2013, 19:30:41 | Сообщение # 5
Сообщений: 737
Репутация: 61 [ +/- ]
Может так, не уверен...
Код

public OnClientPutInServer(client)
{
         if (client > 0 && !IsFakeClient(client))
         {
                decl String:ArrayName[50]; static Numerik = 0;
                GetArrayString(Array, Numerik, ArrayName, sizeof(ArrayName));
                EmitSoundToClient(client, ArrayName); Numerik++;
                if(Numerik >= ArraySize) Numerik = 0;    
         }
}    


Сообщение отредактировал Scarface_slv - Пятница, 07.06.2013, 19:32:17
 
vadim74 Дата: Пятница, 07.06.2013, 19:33:42 | Сообщение # 6
Сообщений: 39
Репутация: 2 [ +/- ]
Работает. Спосибо большое! klas
 
  • Страница 1 из 1
  • 1
Поиск: