Editing ACS built-in functions

From Eternity Wiki
Jump to navigationJump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 4: Line 4:
==Special TID info==
==Special TID info==
For functions affecting things, some TIDs (thing tags) carry special meaning. TID 0 means the activator, and TIDs -1 ... -4 mean each of the four players in the game -- this is an Eternity extension
For functions affecting things, some TIDs (thing tags) carry special meaning. TID 0 means the activator, and TIDs -1 ... -4 mean each of the four players in the game -- this is an Eternity extension
==Data type info==
You may see specifiers such as ''void'', ''str'', ''int'' and others in ACS function signatures. They act as a guide on what kinds of values are expected, but in ACS there really are only two types: '''str''' and '''int''' (and '''str''' internally is merely a string ID number). Most importantly:
*''void'' means that a function should be used as a procedure (command) without returning anything,
*''fixed'' means you can use the decimal point notation: 1.0 is equivalent to 65536, 1.5 to 98304 etc. In ACS, such values are still of '''int''' type, but whether you use the decimal point or not is quite relevant. A value such as 128.0 is ''not'' the same as 128: it's actually equal to 8388608 (no decimal point).
==Function list==
==Function list==
===Sound and music===
===Sound and music===
*[[ActivatorSound]]
*void ActivatorSound(str sound, int volume)
*[[AmbientSound]]
:Starts a sound from script's activator, at the given volume. If there's no activating thing, the sound will be ambient.
*[[LocalAmbientSound]]
*void AmbientSound(str sound, int volume)
*[[PlayActorSound]]
:Starts an ambient sound.
*[[PlaySound]]
*void LocalAmbientSound(str sound, str volume)
*[[SectorSound]]
:Starts an ambient sound that can only be heard by the activator, normally a player.
*[[SetMusic]]
*void PlaySound (int tid, str sound [, int channel [, fixed volume [, bool looping [, fixed attenuation]]]])
*[[LocalSetMusic]]
*void PlayActorSound (int tid, int sound, int channel, fixed volume, bool looping, fixed attenuation)
*[[SoundSequence]]
*void SectorSound(str sound, int volume);
*[[SoundSequenceOnActor]]
*void SetMusic (str song [, int order [, int unused]])
*[[StopSound]]
*void LocalSetMusic (str song [, int order [, int unused]])
*[[ThingSound]]
*void SoundSequence (str sndseq);
*void SoundSequenceOnActor (int tid, str sndseq);
*void StopSound (int tid, int channel);
*void ThingSound (int tid, str sound, int volume);


===Sectors===
===Sectors===
{|class="wikitable sortable
*void ChangeCeiling(int tag, str flatname)
! Name
:Changes the ceiling texture of tagged sectors to flatname.
! Description
*void ChangeFloor(int tag, str flatname)
|-
:Changes the floor texture of tagged sectors to flatname.
||[[ChangeCeiling]]||Changes the ceiling texture.
*fixed GetSectorCeilingZ (int tag, int x, int y)
|-
:Gets sector ceiling height. Currently x and y are reserved for the time Eternity gets working slope physics.
||[[ChangeFloor]]||Changes the floor texture.
*fixed GetSectorFloorZ (int tag, int x, int y)
|-
:Gets sector floor height. Currently x and y are reserved for the time Eternity gets working slope physics.
||[[GetSectorCeilingZ]]||Gets the ceiling height.
*int GetSectorLightLevel (int tag)
|-
||[[GetSectorFloorZ]]||Gets the floor height.
|-
||[[GetSectorLightLevel]]||Gets the light level.
|-
||[[SectorDamage]]||Damages things in sector.
|-
||[[SetSectorDamage]]||Modifies the damaging floor status.
|-
||[[TagWait]]||Waits for sectors to stop movement.
|}
 
===Things===
===Things===
*[[ActivatorTID]]
*[[ChangeActorAngle]]
*[[ChangeActorPitch]]
*[[CheckActorCeilingTexture]]
*[[CheckActorClass]]
*[[CheckActorFloorTexture]]
*[[CheckActorProperty]]
*bool [[CheckFlag]](int tid, str flag)
:Returns true if the first thing with the given tid has the given flag enabled.
*[[CheckProximity]]
*bool CheckSight(int source, int dest, int flags)
*bool CheckSight(int source, int dest, int flags)
:Returns true if there's a line of sight between at least one thing tagged as source and one thing tagged as dest. Currently flags is reserved and must be 0.
:Returns true if there's a line of sight between at least one thing tagged as source and one thing tagged as dest. Currently flags is reserved and must be 0.
*int [[ClassifyActor]](int tid)
*bool CheckFlag(int tid, str flag)
:Returns true if the first thing with the given tid has the given flag enabled.
*bool CheckActorClass(int tid, str class)
:Returns true if the first thing with the given tid is of the given class.
*[[CheckActorProperty]]
*int ClassifyActor(int tid)
:Checks the kind of thing tagged tid. It returns a set of flags, possibly combined:
:Checks the kind of thing tagged tid. It returns a set of flags, possibly combined:
:*ACTOR_PLAYER (2): it's player-controlled
:*ACTOR_PLAYER (2): it's player-controlled
Line 69: Line 51:
:*ACTOR_NONE (0): no thing found with this TID
:*ACTOR_NONE (0): no thing found with this TID
:*ACTOR_WORLD (1): TID is 0 but activator isn't a thing
:*ACTOR_WORLD (1): TID is 0 but activator isn't a thing
*[[GetActorAngle]]
*[[GetActorCeilingZ]]
*[[GetActorFloorZ]]
*[[GetActorLightLevel]]
*[[GetActorPitch]]
*[[GetActorProperty]]
*[[GetActorProperty]]
*[[GetActorVelX]]
*[[GetActorVelY]]
*[[GetActorVelZ]]
*[[GetActorX]]
*[[GetActorY]]
*[[GetActorZ]]
*[[IsTIDUsed]]
*[[IsTIDUsed]]
*[[SetActivator]]
*void SectorDamage (int tag, int amount, str type, str protection_item, int flags)
*[[SetActivatorToTarget]]
*int SetActivator (int tid[, pointer_selector])
*bool SetActivatorToTarget (int tid)
*void SetActorAngle (int tid, fixed angle)
*void SetActorAngle (int tid, fixed angle)
*[[SetActorVelocity]]
*bool SetActorVelocity (int tid, fixed velx, fixed vely, fixed velz, bool add, bool setbob)
*void SetActorPitch (int tid, int pitch)
*void SetActorPitch (int tid, int pitch)
*[[SetActorPosition]]
*bool SetActorPosition (int tid, fixed x, fixed y, fixed z, bool fog)
*void SetThingSpecial (int tid, int special [, int arg0 [, int arg1 [, int arg2 [, int arg3 [, int arg4]]]]])
*void SetThingSpecial (int tid, int special [, int arg0 [, int arg1 [, int arg2 [, int arg3 [, int arg4]]]]])
*int SetActorState(int tid, str statename[, bool exact]);
*int SetActorState(int tid, str statename[, bool exact]);
Line 93: Line 65:
*int Spawn (str classname, fixed x, fixed y, fixed z [, int tid [, int angle]])
*int Spawn (str classname, fixed x, fixed y, fixed z [, int tid [, int angle]])
*int SpawnForced (str classname, fixed x, fixed y, fixed z [, int tid [, int angle]])
*int SpawnForced (str classname, fixed x, fixed y, fixed z [, int tid [, int angle]])
*[[SpawnProjectile]]
*void SpawnProjectile (int tid, string type, int angle, int speed, int vspeed, int gravity, int newtid);
*[[SpawnSpot]]
*int SpawnSpot (str classname, int spottid [, int tid [, int angle]])
*int SpawnSpotForced (str classname, int spottid [, int tid [, int angle]])
*int SpawnSpotFacing (str classname, int spottid [, int tid])
*int SpawnSpotFacing (str classname, int spottid [, int tid])
*[[SpawnSpotFacingForced]]
*int SpawnSpotFacingForced (str classname, int spottid [, int tid])
*[[SpawnSpotForced]]
*int ThingCount (int type, int tid)
*int ThingCount (int type, int tid)
*int ThingCountName (str classname, int tid)
*int ThingCountName (str classname, int tid)
Line 105: Line 77:
*void Thing_Projectile2 (int tid, int type, int angle, int speed, int vspeed, int gravity, int newtid)
*void Thing_Projectile2 (int tid, int type, int angle, int speed, int vspeed, int gravity, int newtid)
*int UniqueTID ([int tid[, int limit]])
*int UniqueTID ([int tid[, int limit]])
===Player===
*[[CheckInventory]]
*[[CheckWeapon]]
*[[GetWeapon]]
*[[GetSigilPieces]]
*[[PlayerArmorPoints]]
*[[PlayerCount]]
*[[PlayerFrags]]
*[[PlayerHealth]]
*[[PlayerNumber]]
*[[SetWeapon]]
*[[TakeInventory]]


===Linedefs and sidedefs===
===Linedefs and sidedefs===
{|class="wikitable sortable"
*[[GetLineX]]
! zspecial.acs index
*[[GetLineY]]
! Name
*[[LineSide]]
! Return type
*void ReplaceTextures (str oldtexturename, str newtexturename [, int flags])
! Parameters
*void SetLineSpecial (int lineid, int special [, int arg0 [, int arg1 [, int arg2 [, int arg3 [, int arg4]]]]])
! Description
*void SetLineTexture(int lineid, int line_side, int sidedef_texture, str texturename);
|-
||internal|| [[ClearLineSpecial]] || nothing || nothing || Clears the trigger linedef's special.
|-
|| || [[GetLineRowOffset]] || || ||
|-
|| || [[GetLineX]] || || ||
|-
|| || [[GetLineY]] || || ||
|-
|| || [[LineSide]] || || ||
|-
|| || [[ReplaceTextures]] || nothing || str old_texture_name, str new_texture_name[, int flags] ||
|-
|| || [[SetLineBlocking]] || || ||
|-
||internal|| [[SetLineMonsterBlocking]] || || || Makes a linedef block or not block monsters.
|-
|| || [[SetLineSpecial]] || || ||
|-
|| || [[SetLineTexture]] || nothing || int line_id, int line_side, int sidedef_texture, str texture_name ||
|}


===Sky===
===Sky===
*[[SetSkyScrollSpeed]]
*void SetSkyScrollSpeed (int sky, fixed skyspeed);


===Scripts===
===Scripts===
Line 161: Line 99:


===Console===
===Console===
*int [[GetCVar]] (str cvar)
*int GetCVar (str cvar)
*string [[GetCVarString]] (str cvar)
*string GetCVarString (str cvar)
*int GetPlayerInput (int player, int input)
*int GetPlayerInput (int player, int input)
===Polyobjects===
===Polyobjects===
*[[GetPolyobjX]]
*fixed GetPolyobjX (int po)
*[[GetPolyobjY]]
*fixed GetPolyobjY (int po)
*[[PolyWait]]
 
===Quake===
===Quake===
*[[Radius_Quake2]]
*void Radius_Quake2 (int tid, int intensity, int duration, int damrad, int tremrad, str sound)
 
===Math===
===Math===
*[[Cos]]
*int Random (int min, int max)
*fixed [[FixedSqrt]] (fixed number)
*int Sqrt (int number)
*int [[Random]] (int min, int max)
*fixed FixedSqrt (fixed number)
*int [[Sqrt]] (int number)
*int VectorLength (int x, int y)
*[[Sin]]
*[[VectorAngle]]
*int [[VectorLength]] (int x, int y)


===Strings===
===Strings===
Line 188: Line 119:


===Level state===
===Level state===
*[[GameSkill]]
*[[GameType]]
*[[GetLevelInfo]]
*[[SetAirControl]]
*[[SetAirControl]]
*[[SetAirFriction]]
*[[SetAirFriction]]
*[[SetGravity]]
*[[SinglePlayer]]
*[[Timer]]
==See also==
*[[Parameterized linedef specials]]


[[Category:ACS]]
[[Category:ACS]]
[[Category:Editing reference]]
[[Category:Editing reference]]
Please note that all contributions to Eternity Wiki are considered to be released under the GNU Free Documentation License 1.2 (see Eternity Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)