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

📄 m_cheat.c

📁 The source code of Doom legacy for windows
💻 C
📖 第 1 页 / 共 3 页
字号:
        else        if (cht_CheckCheat(&cheat_mypos, ev->data1))        {            //plyr->message = buf;            CONS_Printf (va("ang=%i;x,y=(%i,%i)\n",                  players[statusbarplayer].mo->angle / ANGLE_1,                  players[statusbarplayer].mo->x >> FRACBITS,                  players[statusbarplayer].mo->y >> FRACBITS));        }        else        //added:28-02-98: new fly cheat using jump key        if (cht_CheckCheat(&cheat_fly_around, ev->data1))        {            plyr->cheats ^= CF_FLYAROUND;            if (plyr->cheats & CF_FLYAROUND)                //plyr->message = "FLY MODE ON : USE JUMP KEY";                msg = "FLY MODE ON : USE JUMP KEY\n";            else                //plyr->message = "FLY MODE OFF";                msg = "FLY MODE OFF\n";        }        // 'clev' change-level cheat        if (cht_CheckCheat(&cheat_clev, ev->data1))        {            char              buf[3];            int               epsd;            int               map;            cht_GetParam(&cheat_clev, buf);            if (gamemode == commercial)            {                epsd = 0;                map = (buf[0] - '0')*10 + buf[1] - '0';            }            else            {                epsd = buf[0] - '0';                map = buf[1] - '0';                // added 3-1-98                if (epsd < 1)                    return false;            }            // Catch invalid maps.            //added:08-01-98:moved if (epsd<1)...  up            if (map < 1)                return false;            // Ohmygod - this is not going to work.            if ( (gamemode == retail) &&                 ((epsd > 4) || (map > 9)) )                return false;            if ( (gamemode == registered) &&                 ((epsd > 3) || (map > 9)) )                return false;            if ((gamemode == shareware) &&                ((epsd > 1) || (map > 9)) )                return false;            if ((gamemode == commercial) &&                (( epsd > 1) || (map > 34)) )                return false;            // So be it.            //plyr->message = STSTR_CLEV;            msg = STSTR_CLEV;            G_DeferedInitNew(gameskill, G_BuildMapName(epsd, map),false);        }        // append a newline to the original doom messages        if (msg)            CONS_Printf("%s\n",msg);    }    return false;}// command that can be typed at the console !void Command_CheatNoClip_f (void){    player_t*   plyr;    if (multiplayer)        return;    plyr = &players[consoleplayer];    plyr->cheats ^= CF_NOCLIP;    if (plyr->cheats & CF_NOCLIP)        CONS_Printf (STSTR_NCON);    else        CONS_Printf (STSTR_NCOFF);}void Command_CheatGod_f (void){    player_t*   plyr;    if (multiplayer)        return;    plyr = &players[consoleplayer];    plyr->cheats ^= CF_GODMODE;    if (plyr->cheats & CF_GODMODE)    {        if (plyr->mo)            plyr->mo->health = god_health;        plyr->health = god_health;        CONS_Printf ("%s\n", STSTR_DQDON);    }    else        CONS_Printf ("%s\n", STSTR_DQDOFF);}void Command_CheatGimme_f (void){    char*     s;    int       i,j;    player_t* plyr;    if (multiplayer)        return;    if (COM_Argc()<2)    {        CONS_Printf ("gimme [health] [ammo] [armor] ...\n");        return;    }    plyr = &players[consoleplayer];    for (i=1; i<COM_Argc(); i++)    {        s = COM_Argv(i);        if (!strncmp(s,"health",6))        {            if (plyr->mo)                plyr->mo->health = god_health;            plyr->health = god_health;            CONS_Printf("got health\n");        }        else        if (!strncmp(s,"ammo",4))        {            for (j=0;j<NUMAMMO;j++)                plyr->ammo[j] = plyr->maxammo[j];            CONS_Printf("got ammo\n");        }        else        if (!strncmp(s,"armor",5))        {            plyr->armorpoints = idfa_armor;            plyr->armortype = idfa_armor_class;            CONS_Printf("got armor\n");        }        else        if (!strncmp(s,"keys",4))        {            plyr->cards = it_allkeys;            CONS_Printf("got keys\n");        }        else        if (!strncmp(s,"weapons",7))        {            for (j=0;j<NUMWEAPONS;j++)                plyr->weaponowned[j] = true;            for (j=0;j<NUMAMMO;j++)                plyr->ammo[j] = plyr->maxammo[j];            CONS_Printf("got weapons\n");        }        else        //        // WEAPONS        //        if (!strncmp(s,"chainsaw",8))        {            plyr->weaponowned[wp_chainsaw] = true;            CONS_Printf("got chainsaw\n");        }        else        if (!strncmp(s,"shotgun",7))        {            plyr->weaponowned[wp_shotgun] = true;            plyr->ammo[am_shell] = plyr->maxammo[am_shell];            CONS_Printf("got shotgun\n");        }        else        if (!strncmp(s,"supershotgun",12))        {            if (gamemode == commercial) // only in Doom2            {                plyr->weaponowned[wp_supershotgun] = true;                plyr->ammo[am_shell] = plyr->maxammo[am_shell];                CONS_Printf("got super shotgun\n");            }        }        else        if (!strncmp(s,"rocket",6))        {            plyr->weaponowned[wp_missile] = true;            plyr->ammo[am_misl] = plyr->maxammo[am_misl];            CONS_Printf("got rocket launcher\n");        }        else        if (!strncmp(s,"plasma",6))        {            plyr->weaponowned[wp_plasma] = true;            plyr->ammo[am_cell] = plyr->maxammo[am_cell];            CONS_Printf("got plasma\n");        }        else        if (!strncmp(s,"bfg",3))        {            plyr->weaponowned[wp_bfg] = true;            plyr->ammo[am_cell] = plyr->maxammo[am_cell];            CONS_Printf("got bfg\n");        }        else        if (!strncmp(s,"chaingun",8))        {            plyr->weaponowned[wp_chaingun] = true;            plyr->ammo[am_clip] = plyr->maxammo[am_clip];            CONS_Printf("got chaingun\n");        }        else        //        // SPECIAL ITEMS        //        if (!strncmp(s,"berserk",7))        {            if (!plyr->powers[pw_strength])                P_GivePower( plyr, pw_strength);            CONS_Printf("got berserk strength\n");        }        //22/08/99: added by Hurdler        else        if (!strncmp(s,"map",3))        {            am_cheating = 1;            CONS_Printf("got map\n");        }        //        else        if (!strncmp(s,"fullmap",7))        {            am_cheating = 2;            CONS_Printf("got map and things\n");        }        else            CONS_Printf ("can't give '%s' : unknown\n", s);    }}// heretic cheat#define CHEAT_ENCRYPT(a) SCRAMBLE(a)typedef struct Cheat_s{        void (*func)(player_t *player, struct Cheat_s *cheat);        byte *sequence;        byte *pos;        int args[2];        int currentArg;} Cheat_t;static boolean CheatAddKey(Cheat_t *cheat, byte key, boolean *eat);static void CheatGodFunc(player_t *player, Cheat_t *cheat);static void CheatNoClipFunc(player_t *player, Cheat_t *cheat);static void CheatWeaponsFunc(player_t *player, Cheat_t *cheat);static void CheatPowerFunc(player_t *player, Cheat_t *cheat);static void CheatHealthFunc(player_t *player, Cheat_t *cheat);static void CheatKeysFunc(player_t *player, Cheat_t *cheat);//static void CheatSoundFunc(player_t *player, Cheat_t *cheat);static void CheatTickerFunc(player_t *player, Cheat_t *cheat);static void CheatArtifact1Func(player_t *player, Cheat_t *cheat);static void CheatArtifact2Func(player_t *player, Cheat_t *cheat);static void CheatArtifact3Func(player_t *player, Cheat_t *cheat);static void CheatWarpFunc(player_t *player, Cheat_t *cheat);static void CheatChickenFunc(player_t *player, Cheat_t *cheat);static void CheatMassacreFunc(player_t *player, Cheat_t *cheat);static void CheatIDKFAFunc(player_t *player, Cheat_t *cheat);static void CheatIDDQDFunc(player_t *player, Cheat_t *cheat);// Toggle god modestatic byte CheatGodSeq[] ={        CHEAT_ENCRYPT('q'),        CHEAT_ENCRYPT('u'),        CHEAT_ENCRYPT('i'),        CHEAT_ENCRYPT('c'),        CHEAT_ENCRYPT('k'),        CHEAT_ENCRYPT('e'),        CHEAT_ENCRYPT('n'),        0xff};// Toggle no clipping modestatic byte CheatNoClipSeq[] ={        CHEAT_ENCRYPT('k'),        CHEAT_ENCRYPT('i'),        CHEAT_ENCRYPT('t'),        CHEAT_ENCRYPT('t'),        CHEAT_ENCRYPT('y'),        0xff};// Get all weapons and ammostatic byte CheatWeaponsSeq[] ={        CHEAT_ENCRYPT('r'),        CHEAT_ENCRYPT('a'),        CHEAT_ENCRYPT('m'),        CHEAT_ENCRYPT('b'),        CHEAT_ENCRYPT('o'),        0xff};// Toggle tome of powerstatic byte CheatPowerSeq[] ={        CHEAT_ENCRYPT('s'),        CHEAT_ENCRYPT('h'),        CHEAT_ENCRYPT('a'),        CHEAT_ENCRYPT('z'),        CHEAT_ENCRYPT('a'),        CHEAT_ENCRYPT('m'),        0xff, 0};// Get full healthstatic byte CheatHealthSeq[] ={        CHEAT_ENCRYPT('p'),        CHEAT_ENCRYPT('o'),        CHEAT_ENCRYPT('n'),        CHEAT_ENCRYPT('c'),        CHEAT_ENCRYPT('e'),        0xff};// Get all keysstatic byte CheatKeysSeq[] ={        CHEAT_ENCRYPT('s'),        CHEAT_ENCRYPT('k'),        CHEAT_ENCRYPT('e'),        CHEAT_ENCRYPT('l'),        0xff, 0};// Toggle tickerstatic byte CheatTickerSeq[] ={        CHEAT_ENCRYPT('t'),        CHEAT_ENCRYPT('i'),        CHEAT_ENCRYPT('c'),        CHEAT_ENCRYPT('k'),        CHEAT_ENCRYPT('e'),        CHEAT_ENCRYPT('r'),        0xff, 0};// Get an artifact 1st stage (ask for type)static byte CheatArtifact1Seq[] ={        CHEAT_ENCRYPT('g'),        CHEAT_ENCRYPT('i'),        CHEAT_ENCRYPT('m'),        CHEAT_ENCRYPT('m'),        CHEAT_ENCRYPT('e'),        0xff};// Get an artifact 2nd stage (ask for count)static byte CheatArtifact2Seq[] ={        CHEAT_ENCRYPT('g'),        CHEAT_ENCRYPT('i'),

⌨️ 快捷键说明

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