/** * Cmd_Drop_f * * Drop an inventory item. */ public static void Drop_f(edict_t ent) { int index; gitem_t it; string s; s = Cmd.Args(); it = GameItems.FindItem(s); if (it == null) { SV_GAME.PF_cprintfhigh(ent, "unknown item: " + s + "\n"); return; } if (it.drop == null) { SV_GAME.PF_cprintf(ent, Defines.PRINT_HIGH, "Item is not dropable.\n"); return; } index = GameItems.ITEM_INDEX(it); if (0 == ent.client.pers.inventory[index]) { SV_GAME.PF_cprintfhigh(ent, "Out of item: " + s + "\n"); return; } it.drop.drop(ent, it); }
public static void God_f(edict_t ent) { String msg; if (GameBase.deathmatch.value != 0 && GameBase.sv_cheats.value == 0) { SV_GAME.PF_cprintfhigh(ent, "You must run the server with '+set cheats 1' to enable this command.\\n"); return; } ent.flags ^= Defines.FL_GODMODE; if (0 == (ent.flags & Defines.FL_GODMODE)) { msg = "godmode OFF\\n"; } else { msg = "godmode ON\\n"; } SV_GAME.PF_cprintf(ent, Defines.PRINT_HIGH, msg); }
public void cprintf(edict_t ent, int printlevel, string s) { SV_GAME.PF_cprintf(ent, printlevel, s); }
/** * Cmd_Give_f * * Give items to a client. */ public static void Give_f(edict_t ent) { string name; gitem_t it; int index; int i; bool give_all; edict_t it_ent; if (GameBase.deathmatch.value != 0 && GameBase.sv_cheats.value == 0) { SV_GAME.PF_cprintfhigh(ent, "You must run the server with '+set cheats 1' to enable this command.\n"); return; } name = Cmd.Args(); if (0 == Lib.Q_stricmp(name, "all")) { give_all = true; } else { give_all = false; } if (give_all || 0 == Lib.Q_stricmp(Cmd.Argv(1), "health")) { if (Cmd.Argc() == 3) { ent.health = Lib.atoi(Cmd.Argv(2)); } else { ent.health = ent.max_health; } if (!give_all) { return; } } if (give_all || 0 == Lib.Q_stricmp(name, "weapons")) { for (i = 1; i < GameBase.game.num_items; i++) { it = GameItemList.itemlist[i]; if (null == it.pickup) { continue; } if (0 == (it.flags & Defines.IT_WEAPON)) { continue; } ent.client.pers.inventory[i] += 1; } if (!give_all) { return; } } if (give_all || 0 == Lib.Q_stricmp(name, "ammo")) { for (i = 1; i < GameBase.game.num_items; i++) { it = GameItemList.itemlist[i]; if (null == it.pickup) { continue; } if (0 == (it.flags & Defines.IT_AMMO)) { continue; } GameItems.Add_Ammo(ent, it, 1000); } if (!give_all) { return; } } if (give_all || Lib.Q_stricmp(name, "armor") == 0) { gitem_armor_t info; it = GameItems.FindItem("Jacket Armor"); ent.client.pers.inventory[GameItems.ITEM_INDEX(it)] = 0; it = GameItems.FindItem("Combat Armor"); ent.client.pers.inventory[GameItems.ITEM_INDEX(it)] = 0; it = GameItems.FindItem("Body Armor"); info = (gitem_armor_t)it.info; ent.client.pers.inventory[GameItems.ITEM_INDEX(it)] = info.max_count; if (!give_all) { return; } } if (give_all || Lib.Q_stricmp(name, "Power Shield") == 0) { it = GameItems.FindItem("Power Shield"); it_ent = GameUtil.G_Spawn(); it_ent.classname = it.classname; GameItems.SpawnItem(it_ent, it); GameItems.Touch_Item.touch(it_ent, ent, GameBase.dummyplane, null); if (it_ent.inuse) { GameUtil.G_FreeEdict(it_ent); } if (!give_all) { return; } } if (give_all) { for (i = 1; i < GameBase.game.num_items; i++) { it = GameItemList.itemlist[i]; if (it.pickup != null) { continue; } if ((it.flags & (Defines.IT_ARMOR | Defines.IT_WEAPON | Defines.IT_AMMO)) != 0) { continue; } ent.client.pers.inventory[i] = 1; } return; } it = GameItems.FindItem(name); if (it == null) { name = Cmd.Argv(1); it = GameItems.FindItem(name); if (it == null) { SV_GAME.PF_cprintf(ent, Defines.PRINT_HIGH, "unknown item\n"); return; } } if (it.pickup == null) { SV_GAME.PF_cprintf(ent, Defines.PRINT_HIGH, "non-pickup item\n"); return; } index = GameItems.ITEM_INDEX(it); if ((it.flags & Defines.IT_AMMO) != 0) { if (Cmd.Argc() == 3) { ent.client.pers.inventory[index] = Lib.atoi(Cmd.Argv(2)); } else { ent.client.pers.inventory[index] += it.quantity; } } else { it_ent = GameUtil.G_Spawn(); it_ent.classname = it.classname; GameItems.SpawnItem(it_ent, it); GameItems.Touch_Item.touch(it_ent, ent, GameBase.dummyplane, null); if (it_ent.inuse) { GameUtil.G_FreeEdict(it_ent); } } }
public static void Say_f(edict_t ent, Boolean team, Boolean arg0) { Int32 i, j; edict_t other; String text; gclient_t cl; if (Cmd.Argc() < 2 && !arg0) { return; } if (0 == (( Int32 )(GameBase.dmflags.value) & (Defines.DF_MODELTEAMS | Defines.DF_SKINTEAMS))) { team = false; } if (team) { text = "(" + ent.client.pers.netname + "): "; } else { text = "" + ent.client.pers.netname + ": "; } if (arg0) { text += Cmd.Argv(0); text += " "; text += Cmd.Args(); } else { if (Cmd.Args().StartsWith("\\\"")) { text += Cmd.Args().Substring(1, Cmd.Args().Length - 1); } else { text += Cmd.Args(); } } if (text.Length > 150) { text = text.Substring(0, 150); } text += "\\n"; if (GameBase.flood_msgs.value != 0) { cl = ent.client; if (GameBase.level.time < cl.flood_locktill) { SV_GAME.PF_cprintfhigh(ent, "You can't talk for " + ( Int32 )(cl.flood_locktill - GameBase.level.time) + " more seconds\\n"); return; } i = ( Int32 )(cl.flood_whenhead - GameBase.flood_msgs.value + 1); if (i < 0) { i = (10) + i; } if (cl.flood_when[i] != 0 && GameBase.level.time - cl.flood_when[i] < GameBase.flood_persecond.value) { cl.flood_locktill = GameBase.level.time + GameBase.flood_waitdelay.value; SV_GAME.PF_cprintf(ent, Defines.PRINT_CHAT, "Flood protection: You can't talk for " + ( Int32 )GameBase.flood_waitdelay.value + " seconds.\\n"); return; } cl.flood_whenhead = (cl.flood_whenhead + 1) % 10; cl.flood_when[cl.flood_whenhead] = GameBase.level.time; } if (Globals.dedicated.value != 0) { SV_GAME.PF_cprintf(null, Defines.PRINT_CHAT, "" + text + ""); } for (j = 1; j <= GameBase.game.maxclients; j++) { other = GameBase.g_edicts[j]; if (!other.inuse) { continue; } if (other.client == null) { continue; } if (team) { if (!GameUtil.OnSameTeam(ent, other)) { continue; } } SV_GAME.PF_cprintf(other, Defines.PRINT_CHAT, "" + text + ""); } }