mirror of
https://github.com/Jackzmc/sourcemod-plugins.git
synced 2025-05-06 13:03:20 +00:00
Bulk update
This commit is contained in:
parent
f37301cae8
commit
9adbe21719
22 changed files with 1221 additions and 103 deletions
283
scripting/include/sceneprocessor.inc
Normal file
283
scripting/include/sceneprocessor.inc
Normal file
|
@ -0,0 +1,283 @@
|
|||
#if defined _sceneprocessor_included
|
||||
#endinput
|
||||
#endif
|
||||
#define _sceneprocessor_included
|
||||
|
||||
#define MAX_SCENEFILE_LENGTH PLATFORM_MAX_PATH // Maximum length of scene files
|
||||
#define MAX_VOCALIZE_LENGTH 128 // Maximum length of vocalize strings
|
||||
|
||||
#define SCENE_INITIATOR_WORLD 0 /* All scenes created by the map (such as landmarks, "Down this way", "Through here")
|
||||
* and by the game (such as team mate actions, "Let me heal you up", "Help I'm falling")
|
||||
* are marked as started by the world, or entity index 0. */
|
||||
#define SCENE_INITIATOR_PLUGIN -1 /* All scenes started by the Scene Processor are by default marked as started by plugin or
|
||||
* entity index -1. This can be changed in the PerformScene function call. */
|
||||
|
||||
#define DEFAULT_SCENE_PREDELAY 0.0 /* By default all scenes occur the instant they are created */
|
||||
#define DEFAULT_SCENE_PITCH 1.0 /* By default all scenes have a pitch of 1.0, or as they are normally heard. 2.0 will make
|
||||
* it sounds twice as fast but in a high pitched voice. 0.5 will be half the normal speed
|
||||
* and with low pitched voice. */
|
||||
|
||||
enum SceneStages
|
||||
{
|
||||
SceneStage_Unknown = 0, /* Scene has not been created nor processed. Either something went wrong, the
|
||||
* scene is not valid, incorrectly formatted, or a round just started recently. */
|
||||
|
||||
SceneStage_Created = 1, /* When scene is created. Contains no information about the scene that is about to
|
||||
* be played out. Guaranteed to occur. */
|
||||
|
||||
SceneStage_Spawned, /* When scene is spawned. Everything is filled in but the pre-delay! Change scene
|
||||
* pitch and pre-delay here. */
|
||||
|
||||
SceneStage_SpawnedPost, /* Post scene spawned frame. Pre-delay is now filled out. Pre-delay can be changed
|
||||
* here if the scene originally has a pre-delay greater than 0.0. */
|
||||
|
||||
SceneStage_Started, /* When scene is started. Time stamp is set. */
|
||||
|
||||
SceneStage_Cancelled, /* When scene is cancelled. Happens if the Survivor was interrupted by another scene
|
||||
* or the scene was cancelled post starting. */
|
||||
|
||||
SceneStage_Completion, /* When scene is completed. Happens if the Survivor gets to fully perform the scene
|
||||
* with no interruptions or cancellation. Entity index is no longer valid but
|
||||
* information is retained. */
|
||||
|
||||
SceneStage_Killed /* When scene is killed. Entity index is no longer valid but information is retained
|
||||
* until end of forward. Guaranteed to occur */
|
||||
};
|
||||
|
||||
/**
|
||||
* Called on scene stage changed.
|
||||
*
|
||||
* @param scene Scene entity index.
|
||||
* @param stage SceneStages value.
|
||||
* @noreturn
|
||||
*/
|
||||
forward void OnSceneStageChanged(int scene, SceneStages stage);
|
||||
|
||||
/**
|
||||
* Called on vocalize command send.
|
||||
*
|
||||
* @remarks See SCENE_INITIATOR_WORLD and SCENE_INITIATOR_PLUGIN for
|
||||
* non-client initiated vocalizes.
|
||||
*
|
||||
* @param client Index of player sending vocalize command.
|
||||
* @param vocalize String of what player wish to vocalize, as typed.
|
||||
* @param initiator Index of entity initiated vocalize command.
|
||||
* @return Plugin_Stop to stop vocalize command.
|
||||
* Plugin_Continue to allow vocalize command.
|
||||
*/
|
||||
forward Action OnVocalizationProcess(int client, const char[] vocalize, int initiator);
|
||||
|
||||
/**
|
||||
* Returns scene stage.
|
||||
*
|
||||
* @param scene Scene entity index.
|
||||
* @return SceneStages value or 0 if scene is not valid.
|
||||
*/
|
||||
native SceneStages GetSceneStage(int scene);
|
||||
|
||||
/**
|
||||
* Returns whether scene is valid as a scene.
|
||||
*
|
||||
* @remarks The scene entity index may still be invalid.
|
||||
*
|
||||
* @param scene Scene entity index.
|
||||
* @return True if a valid scene, false otherwise.
|
||||
*/
|
||||
stock bool IsValidScene(int scene)
|
||||
{
|
||||
return GetSceneStage(scene) != SceneStage_Unknown;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns scene start time stamp, in engine time.
|
||||
*
|
||||
* @param scene Scene entity index.
|
||||
* @return Scene start engine time stamp. 0.0 if the scene has not started yet.
|
||||
*/
|
||||
native float GetSceneStartTimeStamp(int scene);
|
||||
|
||||
/**
|
||||
* Returns scene actor.
|
||||
*
|
||||
* @param scene Scene entity index.
|
||||
* @return Actor of the scene. 0 if no one is playing it.
|
||||
*/
|
||||
native int GetActorFromScene(int scene);
|
||||
|
||||
/**
|
||||
* Returns actor's scene.
|
||||
*
|
||||
* @remarks Only returns scene if it is currently being played out.
|
||||
*
|
||||
* @param actor Client index of actor.
|
||||
* @return Scene entity index. INVALID_ENT_REFERENCE if actor currently aren't playing.
|
||||
*/
|
||||
native int GetSceneFromActor(int actor);
|
||||
|
||||
/**
|
||||
* Returns whether actor is already playing a scene.
|
||||
*
|
||||
* @param actor Client index of actor.
|
||||
* @return True if actor is busy, false otherwise.
|
||||
*/
|
||||
stock bool IsActorBusy(int actor)
|
||||
{
|
||||
return GetSceneFromActor(actor) != INVALID_ENT_REFERENCE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns scene initiator.
|
||||
*
|
||||
* @remarks See SCENE_INITIATOR_WORLD and SCENE_INITIATOR_PLUGIN for automated
|
||||
* scenes.
|
||||
*
|
||||
* @param scene Scene entity index.
|
||||
* @return Initiator of the scene.
|
||||
*/
|
||||
native int GetSceneInitiator(int scene);
|
||||
|
||||
/**
|
||||
* Returns scene file.
|
||||
*
|
||||
* @param scene Scene entity index.
|
||||
* @param dest Destination string buffer to copy to.
|
||||
* @param len Destination buffer length (includes null terminator).
|
||||
* @return Number of bytes written
|
||||
*/
|
||||
native int GetSceneFile(int scene, char[] dest, int len);
|
||||
|
||||
/**
|
||||
* Returns scene vocalize.
|
||||
*
|
||||
* @remarks Will only contain the vocalize string if the scene was started by
|
||||
* the client them self. Otherwise empty.
|
||||
*
|
||||
* @param scene Scene entity index.
|
||||
* @param dest Destination string buffer to copy to.
|
||||
* @param len Destination buffer length (includes null terminator).
|
||||
* @return Number of bytes written
|
||||
*/
|
||||
native int GetSceneVocalize(int scene, char[] dest, int len);
|
||||
|
||||
/**
|
||||
* Returns scene pre-delay.
|
||||
*
|
||||
* @remarks Sadly pre-delay is first fetched on SceneStage_SpawnedPost where
|
||||
* altering the pre-delay with SetScenePreDelay might already be too late.
|
||||
*
|
||||
* @param scene Scene entity index.
|
||||
* @return Scene pre-delay in seconds.
|
||||
*/
|
||||
native float GetScenePreDelay(int scene);
|
||||
|
||||
/**
|
||||
* Sets scene pre-delay.
|
||||
*
|
||||
* @remarks Pre-delay can be set on SceneStage_Spawned and sometimes (!) on
|
||||
* SceneStage_SpawnedPost depending on whether the scene originally has a
|
||||
* pre-delay. Once SceneStage_Started fires pre-delay is no longer obeyed.
|
||||
*
|
||||
* @param scene Scene entity index.
|
||||
* @param preDelay Scene pre-delay in seconds.
|
||||
* @noreturn
|
||||
*/
|
||||
native void SetScenePreDelay(int scene, float preDelay);
|
||||
|
||||
/**
|
||||
* Returns scene pitch.
|
||||
*
|
||||
* @param scene Scene entity index.
|
||||
* @return Scene pitch.
|
||||
*/
|
||||
native float GetScenePitch(int scene);
|
||||
|
||||
/**
|
||||
* Sets scene pitch
|
||||
*
|
||||
* @remarks Scene pitch can be set on SceneStage_Spawned and
|
||||
* SceneStage_SpawnedPost. Setting pitch post spawning results in weird
|
||||
* settings such as some clients hearing 1.13 as double as fast instead of 2.0.
|
||||
*
|
||||
* @param scene Scene entity index.
|
||||
* @param pitch Scene pitch.
|
||||
* @noreturn
|
||||
*/
|
||||
native void SetScenePitch(int scene, float pitch);
|
||||
|
||||
/**
|
||||
* Cancels scene.
|
||||
*
|
||||
* @remarks Can be used at all scene stages. Scene is validated before sending
|
||||
* the cancel input.
|
||||
*
|
||||
* @param scene Scene entity index.
|
||||
* @noreturn
|
||||
*/
|
||||
native void CancelScene(int scene);
|
||||
|
||||
/**
|
||||
* Performs a scene.
|
||||
*
|
||||
* @remarks Scene file is used before vocalize string however vocalize string
|
||||
* is still saved to scene entity index and can be retrieved for later usage.
|
||||
* If vocalize string is used, it is delayed for a short while in order to
|
||||
* work if used inside of OnSceneStageChanged. See PerformSceneEx to avoid
|
||||
* this delay.
|
||||
*
|
||||
* @param client Client index.
|
||||
* @param vocalize Vocalize string.
|
||||
* @param file Scene file.
|
||||
* @param preDelay Scene pre-delay.
|
||||
* @param pitch Scene pitch.
|
||||
* @param initiator Initiator of the scene.
|
||||
* @noreturn
|
||||
*/
|
||||
native void PerformScene(int client, const char[] vocalize, const char[] file = "", float preDelay = DEFAULT_SCENE_PREDELAY, float pitch = DEFAULT_SCENE_PITCH, int initiator = SCENE_INITIATOR_PLUGIN);
|
||||
|
||||
/**
|
||||
* Performs a scene.
|
||||
*
|
||||
* @remarks Works the same way as PerformScene however there is no delay when
|
||||
* using vocalize string. Not recommend to use inside OnSceneStageChanged if
|
||||
* vocalizes needs to get through.
|
||||
*
|
||||
* @param client Client index.
|
||||
* @param vocalize Vocalize string.
|
||||
* @param file Scene file.
|
||||
* @param preDelay Scene pre-delay.
|
||||
* @param pitch Scene pitch.
|
||||
* @param initiator Initiator of the scene.
|
||||
* @noreturn
|
||||
*/
|
||||
native void PerformSceneEx(int client, const char[] vocalize, const char[] file = "", float preDelay = DEFAULT_SCENE_PREDELAY, float pitch = DEFAULT_SCENE_PITCH, int initiator = SCENE_INITIATOR_PLUGIN);
|
||||
|
||||
public SharedPlugin __pl_sceneproces =
|
||||
{
|
||||
name = "sceneprocessor",
|
||||
file = "sceneprocessor.smx",
|
||||
#if defined REQUIRE_PLUGIN
|
||||
required = 1,
|
||||
#else
|
||||
required = 0,
|
||||
#endif
|
||||
};
|
||||
|
||||
#if !defined REQUIRE_PLUGIN
|
||||
public void __pl_sceneproces_SetNTVOptional()
|
||||
{
|
||||
MarkNativeAsOptional("GetSceneStage");
|
||||
MarkNativeAsOptional("GetSceneStartTimeStamp");
|
||||
MarkNativeAsOptional("GetActorFromScene");
|
||||
MarkNativeAsOptional("GetSceneFromActor");
|
||||
MarkNativeAsOptional("GetSceneInitiator");
|
||||
MarkNativeAsOptional("GetSceneFile");
|
||||
MarkNativeAsOptional("GetSceneVocalize");
|
||||
MarkNativeAsOptional("GetScenePreDelay");
|
||||
MarkNativeAsOptional("SetScenePreDelay");
|
||||
MarkNativeAsOptional("GetScenePitch");
|
||||
MarkNativeAsOptional("SetScenePitch");
|
||||
MarkNativeAsOptional("CancelScene");
|
||||
MarkNativeAsOptional("PerformScene");
|
||||
MarkNativeAsOptional("PerformSceneEx");
|
||||
}
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue