Source Pawn Sound

/_Parlament_\

Участник
Сообщения
134
Реакции
9
Доброй ночи всем...
Как воспроизвести звук по указанным координатам
Допустим координат
25.851301 -170.819458 0.000000;
Как сделать, когда игрок прошел эту координаты или подошел к ней, то воспроизводится звук, Спасибо заранее!!!
 

/_Parlament_\

Участник
Сообщения
134
Реакции
9
R1KO, В API Вообще не разбираюсь как что(

Добавлено через 47 секунд
Пробывал так
PHP:
pos[0] = 25.851301; 
	pos[1] = -170.819458; 
	pos[2] = 0.000000; 
	EmitSoundToAll(SND_DROP, pos);

Добавлено через 1 минуту
Копил выдает ошибку(
 
Последнее редактирование:

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
C-подобный:
1 const String:name[] - звук  
 2 const Float:pos[3] - координаты, где будет проигран  
 3 entity = SOUND_FROM_WORLD - индекс объекта, который издает звук  
 4 level = SNDLEVEL_NORMAL - уровень звучания от 0 до 255  
 5 flags = SND_NOFLAGS - флаги  
 6 Float:vol = SNDVOL_NORMAL - громкость от 0.0 до 1.0  
 7 pitch = SNDPITCH_NORMAL - шаг от 0 до 255  
 8 Float:delay = 0.0 - задержка в секундах перед проигрыванием
[URL="https://sm.alliedmods.net/api/index.php?fastload=show&id=676&"]API[/URL]
C-подобный:
1 const String:sample[] - звук  
 2 entity = SOUND_FROM_PLAYER - кто издает  
 3 channel = SNDCHAN_AUTO - канал  
 4 level = SNDLEVEL_NORMAL  
 5 flags = SND_NOFLAGS  
 6 Float:volume = SNDVOL_NORMAL  
 7 pitch = SNDPITCH_NORMAL  
 8 speakerentity = -1 - неизвестное  
 9 const Float:origin[3] = NULL_VECTOR  
 10 const Float:dir[3] = NULL_VECTOR - направление звука  
 11 bool:updatePos = true - неизвестное  
 12 Float:soundtime = 0.0 - Альтернативное время воспроизведения звука
[URL="https://sm.alliedmods.net/api/index.php?fastload=show&id=682&"]API[/URL]
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
Т.к. этот вопрос относится к его моду warface то сразу напишу проблкмы которые у него могут возникнуть.
1. Отследить поподание игрока в опр. местность.
2. Возродить игроков и тепнуть в эту мечтность (ноу блок наверно понадобится).
3. Дать хп,броню,патроны (вчера кидал функции).
 

/_Parlament_\

Участник
Сообщения
134
Реакции
9
Саша Шеин, Мне бы с координатами научиться работать)
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #14
А есть возможность воспроизвести звук так, чтобы начало нового раунда его не останавливало?
возможно с чем-то из этого нужно поиграться

/**
* Sound channels.
*/
enum
{
SNDCHAN_REPLACE = -1, /**< Unknown */
SNDCHAN_AUTO = 0, /**< Auto */
SNDCHAN_WEAPON = 1, /**< Weapons */
SNDCHAN_VOICE = 2, /**< Voices */
SNDCHAN_ITEM = 3, /**< Items */
SNDCHAN_BODY = 4, /**< Player? */
SNDCHAN_STREAM = 5, /**< "Stream channel from the static or dynamic area" */
SNDCHAN_STATIC = 6, /**< "Stream channel from the static area" */
SNDCHAN_VOICE_BASE = 7, /**< "Channel for network voice data" */
SNDCHAN_USER_BASE = 135 /**< Anything >= this is allocated to game code */
};

/**
* Sound flags for the sound emitter system.
*/
enum
{
SND_NOFLAGS= 0, /**< Nothing */
SND_CHANGEVOL = 1, /**< Change sound volume */
SND_CHANGEPITCH = 2, /**< Change sound pitch */
SND_STOP = 3, /**< Stop the sound */
SND_SPAWNING = 4, /**< Used in some cases for ambients */
SND_DELAY = 5, /**< Sound has an initial delay */
SND_STOPLOOPING = 6, /**< Stop looping all sounds on the entity */
SND_SPEAKER = 7, /**< Being played by a mic through a speaker */
SND_SHOULDPAUSE = 8, /**< Pause if game is paused */
};
 

crux

Участник
Сообщения
49
Реакции
4
возможно с чем-то из этого нужно поиграться

/**
* Sound channels.
*/
enum
{
SNDCHAN_REPLACE = -1, /**< Unknown */
SNDCHAN_AUTO = 0, /**< Auto */
SNDCHAN_WEAPON = 1, /**< Weapons */
SNDCHAN_VOICE = 2, /**< Voices */
SNDCHAN_ITEM = 3, /**< Items */
SNDCHAN_BODY = 4, /**< Player? */
SNDCHAN_STREAM = 5, /**< "Stream channel from the static or dynamic area" */
SNDCHAN_STATIC = 6, /**< "Stream channel from the static area" */
SNDCHAN_VOICE_BASE = 7, /**< "Channel for network voice data" */
SNDCHAN_USER_BASE = 135 /**< Anything >= this is allocated to game code */
};

/**
* Sound flags for the sound emitter system.
*/
enum
{
SND_NOFLAGS= 0, /**< Nothing */
SND_CHANGEVOL = 1, /**< Change sound volume */
SND_CHANGEPITCH = 2, /**< Change sound pitch */
SND_STOP = 3, /**< Stop the sound */
SND_SPAWNING = 4, /**< Used in some cases for ambients */
SND_DELAY = 5, /**< Sound has an initial delay */
SND_STOPLOOPING = 6, /**< Stop looping all sounds on the entity */
SND_SPEAKER = 7, /**< Being played by a mic through a speaker */
SND_SHOULDPAUSE = 8, /**< Pause if game is paused */
};
Попробовал, результат тот же, начало раунда останавливает все звуки. Попробовал остановить обработку события в начале раунда:
C-подобный:
#pragma semicolon 1

#include <sourcemod>

public OnPluginStart()
{
    HookEvent("round_start", Event_RoundStart, EventHookMode_Pre);
}

public Action Event_RoundStart(Handle event, const char[] name, bool dontBroadcast)
{
    return Plugin_Handled;
}

Результат есть, звук продолжает играть, но из-за того, что я прервал событие, осталась кровь на карте, а может и еще что-нибудь, но больше ничего не заметил пока. Получается, чтобы нормально все работало, нужно понять, какие действия происходят перед началом раунда и вручную их выполнить с некоторыми поправками.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,982
@crux, на гитхабе должны быть исходники игры.
Можешь там посмотреть что и как происходит.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #17
Попробовал, результат тот же, начало раунда останавливает все звуки. Попробовал остановить обработку события в начале раунда:
C-подобный:
#pragma semicolon 1

#include <sourcemod>

public OnPluginStart()
{
    HookEvent("round_start", Event_RoundStart, EventHookMode_Pre);
}

public Action Event_RoundStart(Handle event, const char[] name, bool dontBroadcast)
{
    return Plugin_Handled;
}

Результат есть, звук продолжает играть, но из-за того, что я прервал событие, осталась кровь на карте, а может и еще что-нибудь, но больше ничего не заметил пока. Получается, чтобы нормально все работало, нужно понять, какие действия происходят перед началом раунда и вручную их выполнить с некоторыми поправками.
давай пойдем другим путем.
как изначальная цель?
 

crux

Участник
Сообщения
49
Реакции
4
давай пойдем другим путем.
как изначальная цель?
Цель следующая: Когда человек заходит на сервер, ему играет музыкальное приветствие. А вот критерии:

1. Пока играет приветствие, музыку в конце раунда (RES) не должно быть слышно, чтобы не было наложения - это сделал.
2. Приветствие должно играть независимо от того начался новый раунд или нет - не сделал, так как начало нового раунда останавливает все звуки, но решение есть, не знаю на сколько корректное.
3. Если игрок заходит за команду в тот момент, когда играет приветствие, тут два исхода:
а) если игрок зашел за команду после начала раунда и остался мертвым, доиграть приветствие до конца - не сделал по той же причине что и во втором пункте.
б) если игрок зашел за команду после начала раунда, успел вовремя и отспавнился, тогда плавно понижать громкость до нуля - не сделал по той же причине что и во втором пункте.
 
Сверху Снизу