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

📄 wl_inter.c

📁 Wolf 3D official source code.
💻 C
📖 第 1 页 / 共 3 页
字号:
		//
		// verification #
		//
		if (!i)
		{
		 temp=(((s->score >> 28)& 0xf)^
			  ((s->score >> 24)& 0xf))+'A';
		 temp1=(((s->score >> 20)& 0xf)^
			   ((s->score >> 16)& 0xf))+'A';
		 temp2=(((s->score >> 12)& 0xf)^
			   ((s->score >> 8)& 0xf))+'A';
		 temp3=(((s->score >> 4)& 0xf)^
			   ((s->score >> 0)& 0xf))+'A';

		 SETFONTCOLOR(0x49,0x29);
		 PrintX = 35*8;
		 buffer[0]=temp;
		 buffer[1]=temp1;
		 buffer[2]=temp2;
		 buffer[3]=temp3;
		 buffer[4]=0;
		 US_Print(buffer);
		 SETFONTCOLOR(15,0x29);
		}
#endif
#endif
		#endif
	}

	VW_UpdateScreen ();

#ifdef SPEAR
	UnCacheLump (HIGHSCORES_LUMP_START,HIGHSCORES_LUMP_END);
	fontnumber = 0;
#endif
}

//===========================================================================


/*
=======================
=
= CheckHighScore
=
=======================
*/

void	CheckHighScore (long score,word other)
{
	word		i,j;
	int			n;
	HighScore	myscore;

	strcpy(myscore.name,"");
	myscore.score = score;
	myscore.episode = gamestate.episode;
	myscore.completed = other;

	for (i = 0,n = -1;i < MaxScores;i++)
	{
		if
		(
			(myscore.score > Scores[i].score)
		||	(
				(myscore.score == Scores[i].score)
			&& 	(myscore.completed > Scores[i].completed)
			)
		)
		{
			for (j = MaxScores;--j > i;)
				Scores[j] = Scores[j - 1];
			Scores[i] = myscore;
			n = i;
			break;
		}
	}

#ifdef SPEAR
	StartCPMusic (XAWARD_MUS);
#else
	StartCPMusic (ROSTER_MUS);
#endif
	DrawHighScores ();

	VW_FadeIn ();

	if (n != -1)
	{
	//
	// got a high score
	//
		PrintY = 76 + (16 * n);
#ifndef SPEAR
		PrintX = 4*8;
		backcolor = BORDCOLOR;
		fontcolor = 15;
		US_LineInput(PrintX,PrintY,Scores[n].name,nil,true,MaxHighName,100);
#else
		PrintX = 16;
		fontnumber = 1;
		VWB_Bar (PrintX-2,PrintY-2,145,15,0x9c);
		VW_UpdateScreen ();
		backcolor = 0x9c;
		fontcolor = 15;
		US_LineInput(PrintX,PrintY,Scores[n].name,nil,true,MaxHighName,130);
#endif
	}
	else
	{
		IN_ClearKeysDown ();
		IN_UserInput(500);
	}

}


#ifndef UPLOAD
#ifndef SPEAR
#ifndef JAPAN
////////////////////////////////////////////////////////
//
// NON-SHAREWARE NOTICE
//
////////////////////////////////////////////////////////
void NonShareware(void)
{
	VW_FadeOut();

	ClearMScreen();
	DrawStripes(10);

	CA_CacheGrChunk(STARTFONT+1);
	fontnumber = 1;

	SETFONTCOLOR(READHCOLOR,BKGDCOLOR);
	PrintX=110;
	PrintY=15;

	#ifdef SPANISH
	US_Print("Atencion");
	#else
	US_Print("Attention");
	#endif

	SETFONTCOLOR(HIGHLIGHT,BKGDCOLOR);
	WindowX=PrintX=40;
	PrintY=60;
	#ifdef SPANISH
	US_Print("Este juego NO es gratis y\n");
	US_Print("NO es Shareware; favor de\n");
	US_Print("no distribuirlo.\n\n");
	#else
	US_Print("This game is NOT shareware.\n");
	US_Print("Please do not distribute it.\n");
	US_Print("Thanks.\n\n");
	#endif
	US_Print("        Id Software\n");

	VW_UpdateScreen ();
	VW_FadeIn();
	IN_Ack();
}
#endif
#endif
#endif

#ifdef SPEAR
#ifndef SPEARDEMO
////////////////////////////////////////////////////////
//
// COPY PROTECTION FOR FormGen
//
////////////////////////////////////////////////////////
char 	far CopyProFailedStrs[][100] = {
			STR_COPY1,
			STR_COPY2,

			STR_COPY3,
			STR_COPY4,

			STR_COPY5,
			STR_COPY6,

			STR_COPY7,
			STR_COPY8,

			STR_COPY9,
			"",

			STR_COPY10,
			STR_COPY11,

			STR_COPY12,
			"",

			STR_COPY13,
			"",

			STR_COPY14,
			""
			},

		far BackDoorStrs[5][16] = {
			"a spoon?",
			"bite me!",
			"joshua",
			"pelt",
#ifdef BETA
			"beta"
#else
			"snoops"
#endif
			},

		far GoodBoyStrs[10][40] = {
			"...is the CORRECT ANSWER!",
			"",

			"Consider yourself bitten, sir.",
			"",

			"Greetings Professor Falken, would you",
			"like to play Spear of Destiny?",

			"Do you have any gold spray paint?",
			"",

#ifdef BETA
			"Beta testing approved.",
#else
			"I wish I had a 21\" monitor...",
#endif
			""
			},

		far bossstrs[4][24] = {
			"DEATH KNIGHT",
			"BARNACLE WILHELM",
			"UBERMUTANTUBER MUTANT",
			"TRANS GROSSE"
			},

		far WordStr[5][20] = {
			"New Game",
			"Sound...F4",
			"Control...F6",
			"Change View...F5",
			"Quit...F10"},

		far	WordCorrect[5][2] = {"3","4","4","5","5"},

		far MemberStr[10][40] = {
			STR_COPY15,
			"",

			STR_COPY16,
			"",

			STR_COPY17,
			STR_COPY18,

			STR_COPY19,
			STR_COPY20,

			STR_COPY21,
			STR_COPY22},

		far MemberCorrect[5][24] = {
			"adrian carmack",
			"john carmackjohn romero",
			"tom hall",
			"jay wilbur",
			"kevin cloud"},

		far DosMessages[9][80] = {
			STR_NOPE1,
			STR_NOPE2,
			STR_NOPE3,
			STR_NOPE4,
			STR_NOPE5,
			STR_NOPE6,
			STR_NOPE7,
			STR_NOPE8,
			STR_NOPE9},

		far MiscTitle[4][20] = {
			"BLOOD TEST",
			"STRAIGHT-LACED",
			"QUITE SHAPELY",
			"I AM WHAT I AMMO"
			},

		far MiscStr[12][40] = {
			STR_MISC1,
			STR_MISC2,
			"",

			STR_MISC3,
			STR_MISC4,
			"",

			STR_MISC5,
			STR_MISC6,
			"",

			STR_MISC7,
			STR_MISC8,
			STR_MISC9
			},

		far MiscCorrect[4][5] = {"ss","8",STR_STAR,"45"};


int  BackDoor(char *s)
{
	int i;


	strlwr(s);

	for (i=0;i<5;i++)
		if (!_fstrcmp(s,BackDoorStrs[i]))
		{
			SETFONTCOLOR(14,15);
			fontnumber = 0;
			PrintY = 175;
			VWB_DrawPic (0,20*8,COPYPROTBOXPIC);
			US_CPrint(GoodBoyStrs[i*2]);
			US_CPrint(GoodBoyStrs[i*2+1]);
			VW_UpdateScreen();
			return 1;
		}

	return 0;
}


void CopyProtection(void)
{
#define TYPEBOX_Y		177
#define TYPEBOX_BKGD	0x9c
#define PRINTCOLOR		HIGHLIGHT

	int	i,match,whichboss,bossnum,try,whichline,enemypicked[4]={0,0,0,0},
		bosses[4] = { BOSSPIC1PIC,BOSSPIC2PIC,BOSSPIC3PIC,BOSSPIC4PIC },
		whichone,whichpicked[4]={0,0,0,0},quiztype,whichmem,
		memberpicked[5]={0,0,0,0,0},wordpicked[5]={0,0,0,0,0},whichword;

	char	inputbuffer[20],
			message[80];

	enum
	{
		debriefing,
		checkmanual,
		staffquiz,
		miscquiz,

		totaltypes
	};



	try = 0;
	VW_FadeOut();
	CA_CacheGrChunk(C_BACKDROPPIC);
	CacheLump(COPYPROT_LUMP_START,COPYPROT_LUMP_END);
	CA_CacheGrChunk(STARTFONT+1);
	CA_LoadAllSounds();
	StartCPMusic(COPYPRO_MUS);
	US_InitRndT(true);

	while (try<3)
	{
		fontnumber = 1;
		SETFONTCOLOR(PRINTCOLOR-2,15);
		VWB_DrawPic (0,0,C_BACKDROPPIC);
		VWB_DrawPic (0,0,COPYPROTTOPPIC);
		VWB_DrawPic (0,20*8,COPYPROTBOXPIC);
		WindowX = WindowY = 0;
		WindowW = 320;
		WindowH = 200;
		PrintY = 65;

		quiztype = US_RndT()%totaltypes;
		switch(quiztype)
		{
			//
			// BOSSES QUIZ
			//
			case debriefing:
				PrintX = 0;
				US_Print(STR_DEBRIEF);
				SETFONTCOLOR(PRINTCOLOR,15);

				while (enemypicked[whichboss = US_RndT()&3]);
				enemypicked[whichboss] = 1;
				bossnum = bosses[whichboss];
				VWB_DrawPic(128,60,bossnum);
				fontnumber = 0;
				PrintY = 130;
				US_CPrint(STR_ENEMY1"\n");
				US_CPrint(STR_ENEMY2"\n\n");

				VW_UpdateScreen();
				VW_FadeIn();

				PrintX = 100;
				fontcolor = 15;
				backcolor = TYPEBOX_BKGD;
				inputbuffer[0] = 0;
				PrintY = TYPEBOX_Y;
				fontnumber = 1;
				US_LineInput(PrintX,PrintY,inputbuffer,nil,true,20,100);

				match = 0;
				for (i=0;i<_fstrlen(bossstrs[whichboss]);i++)
					if (!_fstrnicmp(inputbuffer,bossstrs[whichboss]+i,strlen(inputbuffer)) &&
						strlen(inputbuffer)>3)
						match = 1;

				match += BackDoor(inputbuffer);
				break;

			//
			// MANUAL CHECK
			//
			case checkmanual:
				while (wordpicked[whichword = US_RndT()%5]);
				wordpicked[whichword] = 1;
				US_CPrint(STR_CHECKMAN);
				SETFONTCOLOR(PRINTCOLOR,15);
				PrintY += 25;
				US_CPrint(STR_MAN1);
				US_CPrint(STR_MAN2);
				_fstrcpy(message,STR_MAN3" \"");
				_fstrcat(message,WordStr[whichword]);
				_fstrcat(message,"\" "STR_MAN4);
				US_CPrint(message);
				VW_UpdateScreen();
				VW_FadeIn();

				PrintX = 146;
				fontcolor = 15;
				backcolor = TYPEBOX_BKGD;
				inputbuffer[0] = 0;
				PrintY = TYPEBOX_Y;
				US_LineInput(PrintX,PrintY,inputbuffer,nil,true,6,100);

				strlwr(inputbuffer);
				match = 1-(_fstrcmp(inputbuffer,WordCorrect[whichword])!=0);
				match += BackDoor(inputbuffer);
				break;

			//
			// STAFF QUIZ
			//
			case staffquiz:
				while (memberpicked[whichmem = US_RndT()%5]);
				memberpicked[whichmem] = 1;
				US_CPrint(STR_ID1);
				SETFONTCOLOR(PRINTCOLOR,15);
				PrintY += 25;
				US_CPrint(MemberStr[whichmem*2]);
				US_CPrint(MemberStr[whichmem*2+1]);
				VW_UpdateScreen();
				VW_FadeIn();

				PrintX = 100;
				fontcolor = 15;
				backcolor = TYPEBOX_BKGD;
				inputbuffer[0] = 0;
				PrintY = TYPEBOX_Y;
				US_LineInput(PrintX,PrintY,inputbuffer,nil,true,20,120);

				strlwr(inputbuffer);
				match = 0;
				for (i=0;i<_fstrlen(MemberCorrect[whichmem]);i++)
					if (!_fstrnicmp(inputbuffer,MemberCorrect[whichmem]+i,strlen(inputbuffer)) &&
						strlen(inputbuffer)>2)
							match = 1;
				match += BackDoor(inputbuffer);
				break;

			//
			// MISCELLANEOUS QUESTIONS
			//
			case miscquiz:
				while (whichpicked[whichone = US_RndT()&3]);
				whichpicked[whichone] = 1;
				US_CPrint(MiscTitle[whichone]);
				SETFONTCOLOR(PRINTCOLOR,15);
				PrintY += 25;
				US_CPrint(MiscStr[whichone*3]);
				US_CPrint(MiscStr[whichone*3+1]);
				US_CPrint(MiscStr[whichone*3+2]);
				VW_UpdateScreen();
				VW_FadeIn();

				PrintX = 146;
				fontcolor = 15;
				backcolor = TYPEBOX_BKGD;
				inputbuffer[0] = 0;
				PrintY = TYPEBOX_Y;
				US_LineInput(PrintX,PrintY,inputbuffer,nil,true,6,100);

				strlwr(inputbuffer);
				match = 1-(_fstrcmp(inputbuffer,MiscCorrect[whichone])!=0);
				match += BackDoor(inputbuffer);
				break;
			}

		//
		// IF NO MATCH, WE'VE GOT A (MINOR) PROBLEM!
		//

		if (!match)
		{
			whichline = 2*(US_RndT()%9);
			SETFONTCOLOR(14,15);
			fontnumber = 0;
			PrintY = 175;
			VWB_DrawPic (0,20*8,COPYPROTBOXPIC);
			US_CPrint(CopyProFailedStrs[whichline]);
			US_CPrint(CopyProFailedStrs[whichline+1]);

			VW_UpdateScreen();
			SD_PlaySound(NOWAYSND);
			IN_UserInput(TickBase*3);
			VW_FadeOut();
			try++;
		}
		else
		{
			int start;


			SD_PlaySound(BONUS1UPSND);
			SD_WaitSoundDone();
			UNCACHEGRCHUNK (STARTFONT+1);
			UNCACHEGRCHUNK (C_BACKDROPPIC);
			UnCacheLump (COPYPROT_LUMP_START,COPYPROT_LUMP_END);

			switch(SoundMode)
			{
				case sdm_Off: return;
				case sdm_PC: start = STARTPCSOUNDS; break;
				case sdm_AdLib: start = STARTADLIBSOUNDS;
			}

			for (i=0;i<NUMSOUNDS;i++,start++)
				MM_FreePtr ((memptr *)&audiosegs[start]);
			return;
		}
	}

	ClearMemory();
	ShutdownId();

	_fstrcpy(message,DosMessages[US_RndT()%9]);

	_AX = 3;
	geninterrupt(0x10);

	printf("%s\n",message);
	exit(1);
}

#endif // SPEARDEMO
#endif // SPEAR
//===========================================================================

⌨️ 快捷键说明

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