diff -r c7b4237fff50 -r 03a67e41afbc extensions/sdktools/vsound.cpp
--- a/extensions/sdktools/vsound.cpp Fri Mar 28 06:21:34 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,309 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod SDKTools Extension
- * Copyright (C) 2004-2007 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#include "extension.h"
-#include "CellRecipientFilter.h"
-
-static cell_t PrefetchSound(IPluginContext *pContext, const cell_t *params)
-{
- char *name;
- pContext->LocalToString(params[1], &name);
-
- engsound->PrefetchSound(name);
-
- return 1;
-}
-
-static cell_t GetSoundDuration(IPluginContext *pContext, const cell_t *params)
-{
- char *name;
- pContext->LocalToString(params[1], &name);
-
- return sp_ftoc(engsound->GetSoundDuration(name));
-}
-
-static cell_t EmitAmbientSound(IPluginContext *pContext, const cell_t *params)
-{
- cell_t entity;
- Vector pos;
- char *name;
- float vol, delay;
- int pitch, flags, level;
-
- entity = params[3];
-
- cell_t *addr;
- pContext->LocalToPhysAddr(params[2], &addr);
- pos.x = sp_ctof(addr[0]);
- pos.y = sp_ctof(addr[1]);
- pos.z = sp_ctof(addr[2]);
-
- pContext->LocalToString(params[1], &name);
-
- vol = sp_ctof(params[6]);
- level = params[4];
- flags = params[5];
- pitch = params[7];
- delay = sp_ctof(params[8]);
-
- engine->EmitAmbientSound(entity, pos, name, vol, (soundlevel_t)level, flags, pitch, delay);
-
- return 1;
-}
-
-static cell_t FadeClientVolume(IPluginContext *pContext, const cell_t *params)
-{
- int client = params[1];
- if (client < 1 || client > playerhelpers->GetMaxClients())
- {
- return pContext->ThrowNativeError("Client index %d is not valid", client);
- }
-
- IGamePlayer *player = playerhelpers->GetGamePlayer(client);
- if (!player->IsInGame())
- {
- return pContext->ThrowNativeError("Client index %d is not in game", client);
- }
-
- engine->FadeClientVolume(player->GetEdict(),
- sp_ctof(params[2]),
- sp_ctof(params[3]),
- sp_ctof(params[4]),
- sp_ctof(params[5]));
-
- return 1;
-}
-
-static cell_t StopSound(IPluginContext *pContext, const cell_t *params)
-{
- int entity = params[1];
- int channel = params[2];
-
- char *name;
- pContext->LocalToString(params[3], &name);
-
- engsound->StopSound(entity, channel, name);
-
- return 1;
-}
-
-static cell_t EmitSound(IPluginContext *pContext, const cell_t *params)
-{
- cell_t *addr, *pl_addr;
-
- CellRecipientFilter crf;
- pContext->LocalToPhysAddr(params[1], &pl_addr);
- crf.Initialize(pl_addr, params[2]);
-
- char *sample;
- pContext->LocalToString(params[3], &sample);
-
- int entity = params[4];
- int channel = params[5];
- int level = params[6];
- int flags = params[7];
- float vol = sp_ctof(params[8]);
- int pitch = params[9];
- int speakerentity = params[10];
-
- Vector *pOrigin = NULL, origin;
- Vector *pDir = NULL, dir;
-
- pContext->LocalToPhysAddr(params[11], &addr);
- if (addr != pContext->GetNullRef(SP_NULL_VECTOR))
- {
- pOrigin = &origin;
- origin.x = sp_ctof(addr[0]);
- origin.y = sp_ctof(addr[1]);
- origin.z = sp_ctof(addr[2]);
- }
-
- pContext->LocalToPhysAddr(params[12], &addr);
- if (addr != pContext->GetNullRef(SP_NULL_VECTOR))
- {
- pDir = &dir;
- dir.x = sp_ctof(addr[0]);
- dir.y = sp_ctof(addr[1]);
- dir.z = sp_ctof(addr[2]);
- }
-
- bool updatePos = params[13] ? true : false;
- float soundtime = sp_ctof(params[14]);
-
- CUtlVector *pOrigVec = NULL;
- CUtlVector origvec;
- if (params[0] > 14)
- {
- pOrigVec = &origvec;
- for (cell_t i = 15; i <= params[0]; i++)
- {
- Vector vec;
- pContext->LocalToPhysAddr(params[i], &addr);
- vec.x = sp_ctof(addr[0]);
- vec.y = sp_ctof(addr[1]);
- vec.z = sp_ctof(addr[2]);
- origvec.AddToTail(vec);
- }
- }
-
- /* If we're going to a "local player" and this is a dedicated server,
- * intelligently redirect each sound.
- */
-
- if (entity == -2 && engine->IsDedicatedServer())
- {
- for (cell_t i=0; iEmitSound(crf,
- player[0],
- channel,
- sample,
- vol,
- (soundlevel_t)level,
- flags,
- pitch,
- pOrigin,
- pDir,
- pOrigVec,
- updatePos,
- soundtime,
- speakerentity);
- }
- } else {
- engsound->EmitSound(crf,
- entity,
- channel,
- sample,
- vol,
- (soundlevel_t)level,
- flags,
- pitch,
- pOrigin,
- pDir,
- pOrigVec,
- updatePos,
- soundtime,
- speakerentity);
- }
-
- return 1;
-}
-
-static cell_t EmitSentence(IPluginContext *pContext, const cell_t *params)
-{
- cell_t *addr;
-
- CellRecipientFilter crf;
- pContext->LocalToPhysAddr(params[1], &addr);
- crf.Initialize(addr, params[2]);
-
- int sentence = params[3];
- int entity = params[4];
- int channel = params[5];
- int level = params[6];
- int flags = params[7];
- float vol = sp_ctof(params[8]);
- int pitch = params[9];
- int speakerentity = params[10];
-
- Vector *pOrigin = NULL, origin;
- Vector *pDir = NULL, dir;
-
- pContext->LocalToPhysAddr(params[11], &addr);
- if (addr != pContext->GetNullRef(SP_NULL_VECTOR))
- {
- pOrigin = &origin;
- origin.x = sp_ctof(addr[0]);
- origin.y = sp_ctof(addr[1]);
- origin.z = sp_ctof(addr[2]);
- }
-
- pContext->LocalToPhysAddr(params[12], &addr);
- if (addr != pContext->GetNullRef(SP_NULL_VECTOR))
- {
- pDir = &dir;
- dir.x = sp_ctof(addr[0]);
- dir.y = sp_ctof(addr[1]);
- dir.z = sp_ctof(addr[2]);
- }
-
- bool updatePos = params[13] ? true : false;
- float soundtime = sp_ctof(params[14]);
-
- CUtlVector *pOrigVec = NULL;
- CUtlVector origvec;
- if (params[0] > 14)
- {
- pOrigVec = &origvec;
- for (cell_t i = 15; i <= params[0]; i++)
- {
- Vector vec;
- pContext->LocalToPhysAddr(params[i], &addr);
- vec.x = sp_ctof(addr[0]);
- vec.y = sp_ctof(addr[1]);
- vec.z = sp_ctof(addr[2]);
- origvec.AddToTail(vec);
- }
- }
-
- engsound->EmitSentenceByIndex(crf,
- entity,
- channel,
- sentence,
- vol,
- (soundlevel_t)level,
- flags,
- pitch,
- pOrigin,
- pDir,
- pOrigVec,
- updatePos,
- soundtime,
- speakerentity);
-
- return 1;
-}
-
-sp_nativeinfo_t g_SoundNatives[] =
-{
- {"EmitAmbientSound", EmitAmbientSound},
- {"EmitSentence", EmitSentence},
- {"EmitSound", EmitSound},
- {"FadeClientVolume", FadeClientVolume},
- {"GetSoundDuration", GetSoundDuration},
- {"PrefetchSound", PrefetchSound},
- {"StopSound", StopSound},
- {NULL, NULL},
-};