Beispiel #1
0
        /**
         * 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);
        }
Beispiel #2
0
        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);
 }
Beispiel #4
0
        /**
         * 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);
                }
            }
        }
Beispiel #5
0
        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 + "");
            }
        }