📄 m_cheat.c
字号:
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 + -