⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gametarget.java

📁 Jake2是一个Java 3D游戏引擎.
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
     * set for crucial voiceovers.     *      * Looped sounds are always atten 3 / vol 1, and the use function toggles it     * on/off. Multiple identical looping sounds will just increase volume     * without any speed cost.     */    public static EntUseAdapter Use_Target_Speaker = new EntUseAdapter() {    	public String getID() { return "Use_Target_Speaker"; }        public void use(edict_t ent, edict_t other, edict_t activator) {            int chan;            if ((ent.spawnflags & 3) != 0) { // looping sound toggles                if (ent.s.sound != 0)                    ent.s.sound = 0; // turn it off                else                    ent.s.sound = ent.noise_index; // start it            } else { // normal sound                if ((ent.spawnflags & 4) != 0)                    chan = Defines.CHAN_VOICE | Defines.CHAN_RELIABLE;                else                    chan = Defines.CHAN_VOICE;                // use a positioned_sound, because this entity won't normally be                // sent to any clients because it is invisible                GameBase.gi.positioned_sound(ent.s.origin, ent, chan,                        ent.noise_index, ent.volume, ent.attenuation, 0);            }        }    };    public static EntUseAdapter Use_Target_Help = new EntUseAdapter() {    	public String getID() { return "Use_Target_Help"; }        public void use(edict_t ent, edict_t other, edict_t activator) {            if ((ent.spawnflags & 1) != 0)                GameBase.game.helpmessage1 = ent.message;            else                GameBase.game.helpmessage2 = ent.message;            GameBase.game.helpchanged++;        }    };    /**     * QUAKED target_secret (1 0 1) (-8 -8 -8) (8 8 8) Counts a secret found.     * These are single use targets.     */    static EntUseAdapter use_target_secret = new EntUseAdapter() {    	public String getID() { return "use_target_secret"; }        public void use(edict_t ent, edict_t other, edict_t activator) {            GameBase.gi.sound(ent, Defines.CHAN_VOICE, ent.noise_index, 1,                    Defines.ATTN_NORM, 0);            GameBase.level.found_secrets++;            GameUtil.G_UseTargets(ent, activator);            GameUtil.G_FreeEdict(ent);        }    };        /**     * QUAKED target_goal (1 0 1) (-8 -8 -8) (8 8 8) Counts a goal completed.     * These are single use targets.     */    static EntUseAdapter use_target_goal = new EntUseAdapter() {    	public String getID() { return "use_target_goal"; }        public void use(edict_t ent, edict_t other, edict_t activator) {            GameBase.gi.sound(ent, Defines.CHAN_VOICE, ent.noise_index, 1,                    Defines.ATTN_NORM, 0);            GameBase.level.found_goals++;            if (GameBase.level.found_goals == GameBase.level.total_goals)                GameBase.gi.configstring(Defines.CS_CDTRACK, "0");            GameUtil.G_UseTargets(ent, activator);            GameUtil.G_FreeEdict(ent);        }    };    /**     * QUAKED target_explosion (1 0 0) (-8 -8 -8) (8 8 8) Spawns an explosion     * temporary entity when used.     *      * "delay" wait this long before going off "dmg" how much radius damage     * should be done, defaults to 0     */    static EntThinkAdapter target_explosion_explode = new EntThinkAdapter() {    	public String getID() { return "target_explosion_explode"; }        public boolean think(edict_t self) {            float save;            GameBase.gi.WriteByte(Defines.svc_temp_entity);            GameBase.gi.WriteByte(Defines.TE_EXPLOSION1);            GameBase.gi.WritePosition(self.s.origin);            GameBase.gi.multicast(self.s.origin, Defines.MULTICAST_PHS);            GameCombat.T_RadiusDamage(self, self.activator, self.dmg, null,                    self.dmg + 40, Defines.MOD_EXPLOSIVE);            save = self.delay;            self.delay = 0;            GameUtil.G_UseTargets(self, self.activator);            self.delay = save;            return true;        }    };    static EntUseAdapter use_target_explosion = new EntUseAdapter() {    	public String getID() { return "use_target_explosion"; }        public void use(edict_t self, edict_t other, edict_t activator) {            self.activator = activator;            if (0 == self.delay) {                target_explosion_explode.think(self);                return;            }            self.think = target_explosion_explode;            self.nextthink = GameBase.level.time + self.delay;        }    };    /**     * QUAKED target_changelevel (1 0 0) (-8 -8 -8) (8 8 8) Changes level to     * "map" when fired     */    static EntUseAdapter use_target_changelevel = new EntUseAdapter() {    	public String getID() { return "use_target_changelevel"; }        public void use(edict_t self, edict_t other, edict_t activator) {            if (GameBase.level.intermissiontime != 0)                return; // already activated            if (0 == GameBase.deathmatch.value && 0 == GameBase.coop.value) {                if (GameBase.g_edicts[1].health <= 0)                    return;            }            // if noexit, do a ton of damage to other            if (GameBase.deathmatch.value != 0                    && 0 == ((int) GameBase.dmflags.value & Defines.DF_ALLOW_EXIT)                    && other != GameBase.g_edicts[0] /* world */            ) {                GameCombat.T_Damage(other, self, self, Globals.vec3_origin,                        other.s.origin, Globals.vec3_origin,                        10 * other.max_health, 1000, 0, Defines.MOD_EXIT);                return;            }            // if multiplayer, let everyone know who hit the exit            if (GameBase.deathmatch.value != 0) {                if (activator != null && activator.client != null)                    GameBase.gi.bprintf(Defines.PRINT_HIGH,                            activator.client.pers.netname                                    + " exited the level.\n");            }            // if going to a new unit, clear cross triggers            if (self.map.indexOf('*') > -1)                GameBase.game.serverflags &= ~(Defines.SFL_CROSS_TRIGGER_MASK);            PlayerHud.BeginIntermission(self);        }    };    /**     * QUAKED target_splash (1 0 0) (-8 -8 -8) (8 8 8) Creates a particle splash     * effect when used.     *      * Set "sounds" to one of the following: 1) sparks 2) blue water 3) brown     * water 4) slime 5) lava 6) blood     *      * "count" how many pixels in the splash "dmg" if set, does a radius damage     * at this location when it splashes useful for lava/sparks     */    static EntUseAdapter use_target_splash = new EntUseAdapter() {    	public String getID() { return "use_target_splash"; }        public void use(edict_t self, edict_t other, edict_t activator) {            GameBase.gi.WriteByte(Defines.svc_temp_entity);            GameBase.gi.WriteByte(Defines.TE_SPLASH);            GameBase.gi.WriteByte(self.count);            GameBase.gi.WritePosition(self.s.origin);            GameBase.gi.WriteDir(self.movedir);            GameBase.gi.WriteByte(self.sounds);            GameBase.gi.multicast(self.s.origin, Defines.MULTICAST_PVS);            if (self.dmg != 0)                GameCombat.T_RadiusDamage(self, activator, self.dmg, null,                        self.dmg + 40, Defines.MOD_SPLASH);        }    };    /**     * QUAKED target_spawner (1 0 0) (-8 -8 -8) (8 8 8) Set target to the type     * of entity you want spawned. Useful for spawning monsters and gibs in the     * factory levels.     *      * For monsters: Set direction to the facing you want it to have.     *      * For gibs: Set direction if you want it moving and speed how fast it     * should be moving otherwise it will just be dropped     */    static EntUseAdapter use_target_spawner = new EntUseAdapter() {    	public String getID() { return "use_target_spawner"; }        public void use(edict_t self, edict_t other, edict_t activator) {            edict_t ent;            ent = GameUtil.G_Spawn();            ent.classname = self.target;            Math3D.VectorCopy(self.s.origin, ent.s.origin);            Math3D.VectorCopy(self.s.angles, ent.s.angles);            GameSpawn.ED_CallSpawn(ent);            GameBase.gi.unlinkentity(ent);            GameUtil.KillBox(ent);            GameBase.gi.linkentity(ent);            if (self.speed != 0)                Math3D.VectorCopy(self.movedir, ent.velocity);        }    };    /**     * QUAKED target_blaster (1 0 0) (-8 -8 -8) (8 8 8) NOTRAIL NOEFFECTS Fires     * a blaster bolt in the set direction when triggered.     *      * dmg default is 15 speed default is 1000     */    public static EntUseAdapter use_target_blaster = new EntUseAdapter() {    	public String getID() { return "use_target_blaster"; }        public void use(edict_t self, edict_t other, edict_t activator) {            int effect;            if ((self.spawnflags & 2) != 0)                effect = 0;            else if ((self.spawnflags & 1) != 0)                effect = Defines.EF_HYPERBLASTER;            else                effect = Defines.EF_BLASTER;            GameWeapon.fire_blaster(self, self.s.origin, self.movedir, self.dmg,                    (int) self.speed, Defines.EF_BLASTER,                    Defines.MOD_TARGET_BLASTER != 0            /* true */            );            GameBase.gi.sound(self, Defines.CHAN_VOICE, self.noise_index, 1,                    Defines.ATTN_NORM, 0);        }    };    /**     * QUAKED target_crosslevel_trigger (.5 .5 .5) (-8 -8 -8) (8 8 8) trigger1     * trigger2 trigger3 trigger4 trigger5 trigger6 trigger7 trigger8 Once this     * trigger is touched/used, any trigger_crosslevel_target with the same     * trigger number is automatically used when a level is started within the     * same unit. It is OK to check multiple triggers. Message, delay, target,     * and killtarget also work.     */    public static EntUseAdapter trigger_crosslevel_trigger_use = new EntUseAdapter() {    	public String getID() { return "trigger_crosslevel_trigger_use"; }        public void use(edict_t self, edict_t other, edict_t activator) {            GameBase.game.serverflags |= self.spawnflags;            GameUtil.G_FreeEdict(self);        }    };    /**     * QUAKED target_crosslevel_target (.5 .5 .5) (-8 -8 -8) (8 8 8) trigger1     * trigger2 trigger3 trigger4 trigger5 trigger6 trigger7 trigger8 Triggered     * by a trigger_crosslevel elsewhere within a unit. If multiple triggers are     * checked, all must be true. Delay, target and killtarget also work.     *      * "delay" delay before using targets if the trigger has been activated     * (default 1)     */    static EntThinkAdapter target_crosslevel_target_think = new EntThinkAdapter() {    	public String getID() { return "target_crosslevel_target_think"; }        public boolean think(edict_t self) {            if (self.spawnflags == (GameBase.game.serverflags                    & Defines.SFL_CROSS_TRIGGER_MASK & self.spawnflags)) {                GameUtil.G_UseTargets(self, self);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -