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

📄 playerclient.java

📁 Jake2是一个Java 3D游戏引擎.
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                break;            case Defines.MOD_EXPLOSIVE:            case Defines.MOD_BARREL:                message = "blew up";                break;            case Defines.MOD_EXIT:                message = "found a way out";                break;            case Defines.MOD_TARGET_LASER:                message = "saw the light";                break;            case Defines.MOD_TARGET_BLASTER:                message = "got blasted";                break;            case Defines.MOD_BOMB:            case Defines.MOD_SPLASH:            case Defines.MOD_TRIGGER_HURT:                message = "was in the wrong place";                break;            }            if (attacker == self) {                switch (mod) {                case Defines.MOD_HELD_GRENADE:                    message = "tried to put the pin back in";                    break;                case Defines.MOD_HG_SPLASH:                case Defines.MOD_G_SPLASH:                    if (PlayerClient.IsNeutral(self))                        message = "tripped on its own grenade";                    else if (PlayerClient.IsFemale(self))                        message = "tripped on her own grenade";                    else                        message = "tripped on his own grenade";                    break;                case Defines.MOD_R_SPLASH:                    if (PlayerClient.IsNeutral(self))                        message = "blew itself up";                    else if (PlayerClient.IsFemale(self))                        message = "blew herself up";                    else                        message = "blew himself up";                    break;                case Defines.MOD_BFG_BLAST:                    message = "should have used a smaller gun";                    break;                default:                    if (PlayerClient.IsNeutral(self))                        message = "killed itself";                    else if (PlayerClient.IsFemale(self))                        message = "killed herself";                    else                        message = "killed himself";                    break;                }            }            if (message != null) {                GameBase.gi.bprintf(Defines.PRINT_MEDIUM,                        self.client.pers.netname + " " + message + ".\n");                if (GameBase.deathmatch.value != 0)                    self.client.resp.score--;                self.enemy = null;                return;            }            self.enemy = attacker;            if (attacker != null && attacker.client != null) {                switch (mod) {                case Defines.MOD_BLASTER:                    message = "was blasted by";                    break;                case Defines.MOD_SHOTGUN:                    message = "was gunned down by";                    break;                case Defines.MOD_SSHOTGUN:                    message = "was blown away by";                    message2 = "'s super shotgun";                    break;                case Defines.MOD_MACHINEGUN:                    message = "was machinegunned by";                    break;                case Defines.MOD_CHAINGUN:                    message = "was cut in half by";                    message2 = "'s chaingun";                    break;                case Defines.MOD_GRENADE:                    message = "was popped by";                    message2 = "'s grenade";                    break;                case Defines.MOD_G_SPLASH:                    message = "was shredded by";                    message2 = "'s shrapnel";                    break;                case Defines.MOD_ROCKET:                    message = "ate";                    message2 = "'s rocket";                    break;                case Defines.MOD_R_SPLASH:                    message = "almost dodged";                    message2 = "'s rocket";                    break;                case Defines.MOD_HYPERBLASTER:                    message = "was melted by";                    message2 = "'s hyperblaster";                    break;                case Defines.MOD_RAILGUN:                    message = "was railed by";                    break;                case Defines.MOD_BFG_LASER:                    message = "saw the pretty lights from";                    message2 = "'s BFG";                    break;                case Defines.MOD_BFG_BLAST:                    message = "was disintegrated by";                    message2 = "'s BFG blast";                    break;                case Defines.MOD_BFG_EFFECT:                    message = "couldn't hide from";                    message2 = "'s BFG";                    break;                case Defines.MOD_HANDGRENADE:                    message = "caught";                    message2 = "'s handgrenade";                    break;                case Defines.MOD_HG_SPLASH:                    message = "didn't see";                    message2 = "'s handgrenade";                    break;                case Defines.MOD_HELD_GRENADE:                    message = "feels";                    message2 = "'s pain";                    break;                case Defines.MOD_TELEFRAG:                    message = "tried to invade";                    message2 = "'s personal space";                    break;                }                if (message != null) {                    GameBase.gi.bprintf(Defines.PRINT_MEDIUM,                            self.client.pers.netname + " " + message + " "                                    + attacker.client.pers.netname + " "                                    + message2 + "\n");                    if (GameBase.deathmatch.value != 0) {                        if (ff)                            attacker.client.resp.score--;                        else                            attacker.client.resp.score++;                    }                    return;                }            }        }        GameBase.gi.bprintf(Defines.PRINT_MEDIUM, self.client.pers.netname                + " died.\n");        if (GameBase.deathmatch.value != 0)            self.client.resp.score--;    }    /**     * This is only called when the game first initializes in single player, but     * is called after each death and level change in deathmatch.      */    public static void InitClientPersistant(gclient_t client) {        gitem_t item;        client.pers = new client_persistant_t();        item = GameItems.FindItem("Blaster");        client.pers.selected_item = GameItems.ITEM_INDEX(item);        client.pers.inventory[client.pers.selected_item] = 1;        /*         * Give shotgun. item = FindItem("Shotgun"); client.pers.selected_item =         * ITEM_INDEX(item); client.pers.inventory[client.pers.selected_item] =         * 1;         */        client.pers.weapon = item;        client.pers.health = 100;        client.pers.max_health = 100;        client.pers.max_bullets = 200;        client.pers.max_shells = 100;        client.pers.max_rockets = 50;        client.pers.max_grenades = 50;        client.pers.max_cells = 200;        client.pers.max_slugs = 50;        client.pers.connected = true;    }    public static void InitClientResp(gclient_t client) {        //memset(& client.resp, 0, sizeof(client.resp));        client.resp.clear(); //  ok.        client.resp.enterframe = GameBase.level.framenum;        client.resp.coop_respawn.set(client.pers);    }    /**     * Some information that should be persistant, like health, is still stored     * in the edict structure, so it needs to be mirrored out to the client     * structure before all the edicts are wiped.      */    public static void SaveClientData() {        int i;        edict_t ent;        for (i = 0; i < GameBase.game.maxclients; i++) {            ent = GameBase.g_edicts[1 + i];            if (!ent.inuse)                continue;            GameBase.game.clients[i].pers.health = ent.health;            GameBase.game.clients[i].pers.max_health = ent.max_health;            GameBase.game.clients[i].pers.savedFlags = (ent.flags & (Defines.FL_GODMODE                    | Defines.FL_NOTARGET | Defines.FL_POWER_ARMOR));            if (GameBase.coop.value != 0)                GameBase.game.clients[i].pers.score = ent.client.resp.score;        }    }    public static void FetchClientEntData(edict_t ent) {        ent.health = ent.client.pers.health;        ent.max_health = ent.client.pers.max_health;        ent.flags |= ent.client.pers.savedFlags;        if (GameBase.coop.value != 0)            ent.client.resp.score = ent.client.pers.score;    }    /**     * Returns the distance to the nearest player from the given spot.     */    static float PlayersRangeFromSpot(edict_t spot) {        edict_t player;        float bestplayerdistance;        float[] v = { 0, 0, 0 };        int n;        float playerdistance;        bestplayerdistance = 9999999;        for (n = 1; n <= GameBase.maxclients.value; n++) {            player = GameBase.g_edicts[n];            if (!player.inuse)                continue;            if (player.health <= 0)                continue;            Math3D.VectorSubtract(spot.s.origin, player.s.origin, v);            playerdistance = Math3D.VectorLength(v);            if (playerdistance < bestplayerdistance)                bestplayerdistance = playerdistance;        }        return bestplayerdistance;    }    /**     * Go to a random point, but NOT the two points closest to other players.     */    public static edict_t SelectRandomDeathmatchSpawnPoint() {        edict_t spot, spot1, spot2;        int count = 0;        int selection;        float range, range1, range2;        spot = null;        range1 = range2 = 99999;        spot1 = spot2 = null;        EdictIterator es = null;        while ((es = GameBase.G_Find(es, GameBase.findByClass,                "info_player_deathmatch")) != null) {            spot = es.o;            count++;            range = PlayersRangeFromSpot(spot);            if (range < range1) {                range1 = range;                spot1 = spot;            } else if (range < range2) {                range2 = range;                spot2 = spot;            }        }        if (count == 0)            return null;        if (count <= 2) {            spot1 = spot2 = null;        } else            count -= 2;        selection = Lib.rand() % count;        spot = null;        es = null;        do {            es = GameBase.G_Find(es, GameBase.findByClass,                    "info_player_deathmatch");                        if (es == null)                 break;                        spot = es.o;            if (spot == spot1 || spot == spot2)                selection++;        } while (selection-- > 0);        return spot;    }    /** 	 * If turned on in the dmflags, select a spawn point far away from other players.     */    static edict_t SelectFarthestDeathmatchSpawnPoint() {        edict_t bestspot;        float bestdistance, bestplayerdistance;        edict_t spot;        spot = null;        bestspot = null;        bestdistance = 0;        EdictIterator es = null;        while ((es = GameBase.G_Find(es, GameBase.findByClass,                "info_player_deathmatch")) != null) {            spot = es.o;            bestplayerdistance = PlayersRangeFromSpot(spot);            if (bestplayerdistance > bestdistance) {                bestspot = spot;                bestdistance = bestplayerdistance;            }        }        if (bestspot != null) {            return bestspot;        }        // if there is a player just spawned on each and every start spot        // we have no choice to turn one into a telefrag meltdown

⌨️ 快捷键说明

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