public Action:HookSound_Func(clients[64], &numClients, String:sample[PLATFORM_MAX_PATH], &entity, &channel, &Float:volume, &level, &pitch, &flags) { for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i)) ClientCommand(i, "playgamesound wf22.mp3", ControlPoint_1); } }
1)HookSound_Func= хукаем все звуки! ( зачем Вопрос?) 2) делаем цикл for и считаем MaxClients (new i = 1; i <= MaxClients; i++) = ЗАчем???? для чего?? ну хорошо я понял ты посчитал всех клиентов на сервере и перепроверил находятся ли они в игре IsClientInGame после чего заставляешь клиеттов которые находятся в игре выполнить команду ClientCommand "playgamesound wf22.mp3" что такое ControlPoint_1???
результат того что ты сделал !как только на сервере проиграет какой-то звук это Шаг или выстрел или звук как предмет упал! или ещё что либо! начинается пересчет всех клиентов после чего фильтруются клиенты в игре и после того ты заставляешь выполнить команду клиентов в игре!
Прошу прощения что без знаков препинания.. ЗАчем сколько бесполезных действий? и ещё вопрос что там забыл ControlPoint_1?? что это такое вообще?? ControlPoint_1
Вывод то что ты написал, бесполезный кусок *** чего-то там, ещё и с мусором! Думаю все знающие хоть чуть чуть SourcePawn люди со мной точно имеют одну мысль по поводу этого *** чего-то там!.
ЦитатаNahal ()
вроде правильно все
бесспорно .. если отбросить то какой результат ты хотел получить от этого *** чего-то там ты сделал всё правильно кроме одного ты впихнул ControlPoint_1 не в то место где он должен быть!
Вот если ты использовал HookSound_Func не по назначению, а просто так ради чего либо, я могу тебя по человечески понять и помоч тебе в решении данной проблемы, вот я тебе тут написал код пользуйся на здоровье!
Код
public OnGameFrame() { for (new client = 1; client <= MaxClients; client++) { if (IsClientInGame(client)) { ClientCommand(client, "playgamesound wf22.mp3"); } } }
ЦитатаParlament☆ ()
вы мне можете сказать что с этим делать?
Parlament☆ Поверь я понятия не имею для чего это нужно! но видите ли Nahal посчитал нужным написать то что он написал!!
Сообщение отредактировал «SeReGa»☆ - Вторник, 07.07.2015, 04:29:16
«SeReGa»☆, Nahal - это и есть Parlament :) Зачем OnGameFrame?) Это ж 66 раз в секунду
Добавлено (07.07.2015, 05:26:05) --------------------------------------------- Nahal, как ты свой код вообще скомпилил? Непонятно откуда переменную взял. Объясню, почему так. Ты хукнул все звуки. Т.е. когда любой объект на карте издаёт звук, то у всех игроков играет твой звук. И он начинает играть снова и снова. Звук шагов считается за звук, поэтому ты слышишь то, что слышишь.
BarD, я думаю если использовать хук звуков не по назначению как в его случае, то мой ответ из сарказмом поможет достичь. правильного решения подобно тому что он сделал.. я думаю что в этом я ему точно помог!
Сообщение отредактировал «SeReGa»☆ - Вторник, 07.07.2015, 05:39:30
У меня никак не получается сделать... Куда приписывать Допустим PrintToChatAll("вы прошли координаты", PontControl_1); Где PontControl_1 это координаты
«SeReGa»☆, кстате:) надо попробовать:) блин у меня же тогда напишет игроку через какое то время а звук на координатах не будет наверно возможно я ошибаюсь
Parlament☆, можно сделать в начале раунда повторяющийся таймер
Код
#include <sourcemod>
public OnPluginStart() { CreateTimer(2.0, Timer_Func, _, TIMER_REPEAT); }
public Action:Timer_Func(Handle:timer) { static x = 0; if (++x < 10) { PrintToServer("-> %d", x); return Plugin_Continue; } return Plugin_Stop; }
Флаг TIMER_REPEAT значит, что функция Timer_Func будет вызываться через каждые две секунды, пока не будет сделано return Plugin_Stop; или отключится скрипт. return Plugin_Continue; значит 'продолжить'.
Сообщение отредактировал Jon4ik - Вторник, 07.07.2015, 23:07:27