📄 playerhud.java
字号:
* ================== */ public static void Cmd_Score_f(edict_t ent) { ent.client.showinventory = false; ent.client.showhelp = false; if (0 == GameBase.deathmatch.value && 0 == GameBase.coop.value) return; if (ent.client.showscores) { ent.client.showscores = false; return; } ent.client.showscores = true; DeathmatchScoreboard(ent); } //======================================================================= /* * =============== * G_SetStats * =============== */ public static void G_SetStats(edict_t ent) { gitem_t item; int index, cells = 0; int power_armor_type; // // health // ent.client.ps.stats[Defines.STAT_HEALTH_ICON] = (short) GameBase.level.pic_health; ent.client.ps.stats[Defines.STAT_HEALTH] = (short) ent.health; // // ammo // if (0 == ent.client.ammo_index /* * || * !ent.client.pers.inventory[ent.client.ammo_index] */ ) { ent.client.ps.stats[Defines.STAT_AMMO_ICON] = 0; ent.client.ps.stats[Defines.STAT_AMMO] = 0; } else { item = GameItemList.itemlist[ent.client.ammo_index]; ent.client.ps.stats[Defines.STAT_AMMO_ICON] = (short) GameBase.gi .imageindex(item.icon); ent.client.ps.stats[Defines.STAT_AMMO] = (short) ent.client.pers.inventory[ent.client.ammo_index]; } // // armor // power_armor_type = GameItems.PowerArmorType(ent); if (power_armor_type != 0) { cells = ent.client.pers.inventory[GameItems.ITEM_INDEX(GameItems .FindItem("cells"))]; if (cells == 0) { // ran out of cells for power armor ent.flags &= ~Defines.FL_POWER_ARMOR; GameBase.gi .sound(ent, Defines.CHAN_ITEM, GameBase.gi .soundindex("misc/power2.wav"), 1, Defines.ATTN_NORM, 0); power_armor_type = 0; ; } } index = GameItems.ArmorIndex(ent); if (power_armor_type != 0 && (0 == index || 0 != (GameBase.level.framenum & 8))) { // flash // between // power // armor // and // other // armor // icon ent.client.ps.stats[Defines.STAT_ARMOR_ICON] = (short) GameBase.gi .imageindex("i_powershield"); ent.client.ps.stats[Defines.STAT_ARMOR] = (short) cells; } else if (index != 0) { item = GameItems.GetItemByIndex(index); ent.client.ps.stats[Defines.STAT_ARMOR_ICON] = (short) GameBase.gi .imageindex(item.icon); ent.client.ps.stats[Defines.STAT_ARMOR] = (short) ent.client.pers.inventory[index]; } else { ent.client.ps.stats[Defines.STAT_ARMOR_ICON] = 0; ent.client.ps.stats[Defines.STAT_ARMOR] = 0; } // // pickup message // if (GameBase.level.time > ent.client.pickup_msg_time) { ent.client.ps.stats[Defines.STAT_PICKUP_ICON] = 0; ent.client.ps.stats[Defines.STAT_PICKUP_STRING] = 0; } // // timers // if (ent.client.quad_framenum > GameBase.level.framenum) { ent.client.ps.stats[Defines.STAT_TIMER_ICON] = (short) GameBase.gi .imageindex("p_quad"); ent.client.ps.stats[Defines.STAT_TIMER] = (short) ((ent.client.quad_framenum - GameBase.level.framenum) / 10); } else if (ent.client.invincible_framenum > GameBase.level.framenum) { ent.client.ps.stats[Defines.STAT_TIMER_ICON] = (short) GameBase.gi .imageindex("p_invulnerability"); ent.client.ps.stats[Defines.STAT_TIMER] = (short) ((ent.client.invincible_framenum - GameBase.level.framenum) / 10); } else if (ent.client.enviro_framenum > GameBase.level.framenum) { ent.client.ps.stats[Defines.STAT_TIMER_ICON] = (short) GameBase.gi .imageindex("p_envirosuit"); ent.client.ps.stats[Defines.STAT_TIMER] = (short) ((ent.client.enviro_framenum - GameBase.level.framenum) / 10); } else if (ent.client.breather_framenum > GameBase.level.framenum) { ent.client.ps.stats[Defines.STAT_TIMER_ICON] = (short) GameBase.gi .imageindex("p_rebreather"); ent.client.ps.stats[Defines.STAT_TIMER] = (short) ((ent.client.breather_framenum - GameBase.level.framenum) / 10); } else { ent.client.ps.stats[Defines.STAT_TIMER_ICON] = 0; ent.client.ps.stats[Defines.STAT_TIMER] = 0; } // // selected item // // bugfix rst if (ent.client.pers.selected_item <= 0) ent.client.ps.stats[Defines.STAT_SELECTED_ICON] = 0; else ent.client.ps.stats[Defines.STAT_SELECTED_ICON] = (short) GameBase.gi .imageindex(GameItemList.itemlist[ent.client.pers.selected_item].icon); ent.client.ps.stats[Defines.STAT_SELECTED_ITEM] = (short) ent.client.pers.selected_item; // // layouts // ent.client.ps.stats[Defines.STAT_LAYOUTS] = 0; if (GameBase.deathmatch.value != 0) { if (ent.client.pers.health <= 0 || GameBase.level.intermissiontime != 0 || ent.client.showscores) ent.client.ps.stats[Defines.STAT_LAYOUTS] |= 1; if (ent.client.showinventory && ent.client.pers.health > 0) ent.client.ps.stats[Defines.STAT_LAYOUTS] |= 2; } else { if (ent.client.showscores || ent.client.showhelp) ent.client.ps.stats[Defines.STAT_LAYOUTS] |= 1; if (ent.client.showinventory && ent.client.pers.health > 0) ent.client.ps.stats[Defines.STAT_LAYOUTS] |= 2; } // // frags // ent.client.ps.stats[Defines.STAT_FRAGS] = (short) ent.client.resp.score; // // help icon / current weapon if not shown // if (ent.client.pers.helpchanged != 0 && (GameBase.level.framenum & 8) != 0) ent.client.ps.stats[Defines.STAT_HELPICON] = (short) GameBase.gi .imageindex("i_help"); else if ((ent.client.pers.hand == Defines.CENTER_HANDED || ent.client.ps.fov > 91) && ent.client.pers.weapon != null) ent.client.ps.stats[Defines.STAT_HELPICON] = (short) GameBase.gi .imageindex(ent.client.pers.weapon.icon); else ent.client.ps.stats[Defines.STAT_HELPICON] = 0; ent.client.ps.stats[Defines.STAT_SPECTATOR] = 0; } /* * =============== * G_CheckChaseStats * =============== */ public static void G_CheckChaseStats(edict_t ent) { int i; gclient_t cl; for (i = 1; i <= GameBase.maxclients.value; i++) { cl = GameBase.g_edicts[i].client; if (!GameBase.g_edicts[i].inuse || cl.chase_target != ent) continue; //memcpy(cl.ps.stats, ent.client.ps.stats, sizeof(cl.ps.stats)); System.arraycopy(ent.client.ps.stats, 0, cl.ps.stats, 0, Defines.MAX_STATS); G_SetSpectatorStats(GameBase.g_edicts[i]); } } /* * =============== * G_SetSpectatorStats * =============== */ public static void G_SetSpectatorStats(edict_t ent) { gclient_t cl = ent.client; if (null == cl.chase_target) G_SetStats(ent); cl.ps.stats[Defines.STAT_SPECTATOR] = 1; // layouts are independant in spectator cl.ps.stats[Defines.STAT_LAYOUTS] = 0; if (cl.pers.health <= 0 || GameBase.level.intermissiontime != 0 || cl.showscores) cl.ps.stats[Defines.STAT_LAYOUTS] |= 1; if (cl.showinventory && cl.pers.health > 0) cl.ps.stats[Defines.STAT_LAYOUTS] |= 2; if (cl.chase_target != null && cl.chase_target.inuse) //cl.ps.stats[STAT_CHASE] = (short) (CS_PLAYERSKINS + // (cl.chase_target - g_edicts) - 1); cl.ps.stats[Defines.STAT_CHASE] = (short) (Defines.CS_PLAYERSKINS + cl.chase_target.index - 1); else cl.ps.stats[Defines.STAT_CHASE] = 0; } /** * HelpComputer. Draws the help computer. */ public static void HelpComputer(edict_t ent) { StringBuffer sb = new StringBuffer(256); String sk; if (GameBase.skill.value == 0) sk = "easy"; else if (GameBase.skill.value == 1) sk = "medium"; else if (GameBase.skill.value == 2) sk = "hard"; else sk = "hard+"; // send the layout sb.append("xv 32 yv 8 picn help "); // background sb.append("xv 202 yv 12 string2 \"").append(sk).append("\" "); // skill sb.append("xv 0 yv 24 cstring2 \"").append(GameBase.level.level_name) .append("\" "); // level name sb.append("xv 0 yv 54 cstring2 \"").append(GameBase.game.helpmessage1) .append("\" "); // help 1 sb.append("xv 0 yv 110 cstring2 \"").append(GameBase.game.helpmessage2) .append("\" "); // help 2 sb.append("xv 50 yv 164 string2 \" kills goals secrets\" "); sb.append("xv 50 yv 172 string2 \""); sb.append(Com.sprintf("%3i/%3i %i/%i %i/%i\" ", new Vargs(6) .add(GameBase.level.killed_monsters).add( GameBase.level.total_monsters).add( GameBase.level.found_goals).add( GameBase.level.total_goals).add( GameBase.level.found_secrets).add( GameBase.level.total_secrets))); GameBase.gi.WriteByte(Defines.svc_layout); GameBase.gi.WriteString(sb.toString()); GameBase.gi.unicast(ent, true); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -