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

📄 convert.c

📁 早期freebsd实现
💻 C
字号:
/* *	Convert Phantasia 3.3.1 and 3.3.1+ characs file format to 3.3.2 * */#include "include.h"#include "oldplayer.h"struct oldplayer	Oldplayer;		/* old format structure */struct player	Newplayer;			/* new format structure */char	Oldpfile[] = DEST/characs";		/* old format file */char	Newpfile[] = DEST/newcharacs";		/* new format file *//************************************************************************// FUNCTION NAME: main()// FUNCTION: convert old Phantasia player file to new format// AUTHOR: C. Robertson, 9/1/85  E. A. Estes, 3/12/86// ARGUMENTS: none// RETURN VALUE: none// MODULES CALLED: time(), exit(), fread(), fopen(), srandom(), floor(), /	random(), strcmp(), fwrite(), strcpy(), fclose(), fprintf()// GLOBAL INPUTS: _iob[], Oldplayer, Newplayer// GLOBAL OUTPUTS: Oldplayer, Newplayer// DESCRIPTION:/	Read in old player structures and write out to new file in/	new format./	Old player file is unmodified./	New file is "DEST/newcharacs"./	#define PHANTPLUS to convert from 3.3.1+.//************************************************************************/main(){FILE	*oldcharac, *newcharac;		/* to open old and new files */    if ((oldcharac = fopen(Oldpfile, "r")) == NULL)	{	fprintf(stderr, "Cannot open original character file!\n");	exit(1);	}    if ((newcharac = fopen(Newpfile, "w")) == NULL)	{	fprintf(stderr, "Cannot create new character file!\n");	exit(1);	}    srandom((unsigned) time((long *) NULL));	/* prime random numbers */    while (fread((char *) &Oldplayer, sizeof(struct oldplayer), 1, oldcharac) == 1)	/* read and convert old structures into new */	{	Newplayer.p_experience = Oldplayer.o_experience;	Newplayer.p_level = (double) Oldplayer.o_level;	Newplayer.p_strength =  Oldplayer.o_strength;	Newplayer.p_sword =  Oldplayer.o_sword;	Newplayer.p_might =  0.0;		/* game will calculate */	Newplayer.p_energy =  Oldplayer.o_energy;	Newplayer.p_maxenergy =  Oldplayer.o_maxenergy;	Newplayer.p_shield =  Oldplayer.o_shield;	Newplayer.p_quickness = (double) Oldplayer.o_quickness;	Newplayer.p_quksilver = (double) Oldplayer.o_quksilver;	Newplayer.p_speed = 0.0;		/* game will calculate */	Newplayer.p_magiclvl = Oldplayer.o_magiclvl;	Newplayer.p_mana = Oldplayer.o_mana;	Newplayer.p_brains = Oldplayer.o_brains;	Newplayer.p_poison = Oldplayer.o_poison;	Newplayer.p_gold = Oldplayer.o_gold;	Newplayer.p_gems = Oldplayer.o_gems;	Newplayer.p_sin = Oldplayer.o_sin;	Newplayer.p_x = Oldplayer.o_x;	Newplayer.p_y = Oldplayer.o_y;	Newplayer.p_1scratch = Oldplayer.o_1scratch;	Newplayer.p_2scratch = Oldplayer.o_2scratch;	Newplayer.p_ring.ring_type = Oldplayer.o_ring.ring_type;	Newplayer.p_ring.ring_duration = Oldplayer.o_ring.ring_duration;	Newplayer.p_ring.ring_inuse = FALSE;	Newplayer.p_age = (long) Oldplayer.o_degenerated * N_AGE;	Newplayer.p_degenerated = Oldplayer.o_degenerated + 1;	/* convert character type into character type and special type */	if (Oldplayer.o_type < 0)	    /* player with crown */	    Oldplayer.o_type = -Oldplayer.o_type;	if (Oldplayer.o_type == 99)	    /* valar */	    {	    Newplayer.p_specialtype = SC_VALAR;	    Newplayer.p_type = (short) ROLL(C_MAGIC, C_EXPER - C_MAGIC + 1);	    Newplayer.p_lives = Oldplayer.o_ring.ring_duration;	    }	else if (Oldplayer.o_type == 90)	    /* ex-valar */	    {	    Newplayer.p_specialtype = SC_EXVALAR;	    Newplayer.p_type = (short) ROLL(C_MAGIC, C_EXPER - C_MAGIC + 1);	    Newplayer.p_lives = 0;	    }	else if (Oldplayer.o_type > 20)	    /* council of wise */	    {	    Newplayer.p_specialtype = SC_COUNCIL;	    Newplayer.p_type = Oldplayer.o_type - 20;	    Newplayer.p_lives = Oldplayer.o_ring.ring_duration;	    }	else if (Oldplayer.o_type > 10)	    /* king */	    {	    Newplayer.p_specialtype = SC_KING;	    Newplayer.p_type = Oldplayer.o_type - 10;	    Newplayer.p_lives = 0;	    }	else	    /* normal player */	    {	    Newplayer.p_specialtype = SC_NONE;	    Newplayer.p_type = Oldplayer.o_type;	    Newplayer.p_lives = 0;	    }	Newplayer.p_lives = 0;	Newplayer.p_crowns = Oldplayer.o_crowns;	Newplayer.p_charms = Oldplayer.o_charms;	Newplayer.p_amulets = Oldplayer.o_amulets;	Newplayer.p_holywater = Oldplayer.o_holywater;	Newplayer.p_lastused = Oldplayer.o_lastused;	/* convert status and name into status */	Newplayer.p_status = Oldplayer.o_status + S_OFF;	if (strcmp(Oldplayer.m_name, "<null>") == 0)	    /* unused recored */	    Newplayer.p_status = S_NOTUSED;	if (Oldplayer.o_quickness < 0)	    /* hung up player */	    {	    Newplayer.p_quickness = (double) Oldplayer.o_tampered;	    Oldplayer.o_tampered = T_OFF;	    Newplayer.p_status = S_HUNGUP;	    }	Newplayer.p_tampered = Oldplayer.o_tampered + T_OFF;	Newplayer.p_istat = I_OFF;	Newplayer.p_palantir = Oldplayer.o_palantir;	Newplayer.p_blessing = Oldplayer.o_blessing;	Newplayer.p_virgin = Oldplayer.o_virgin;	Newplayer.p_blindness = Oldplayer.o_blindness;	strcpy(Newplayer.p_name, Oldplayer.o_name);	strcpy(Newplayer.p_password, Oldplayer.o_password);	strcpy(Newplayer.p_login, Oldplayer.o_login);	/* write new structure */	fwrite((char *) &Newplayer, sizeof(Newplayer), 1, newcharac);	}    fclose(oldcharac);		/* close files */    fclose(newcharac);    exit(0);}/**//************************************************************************// FUNCTION NAME: drandom()// FUNCTION: return a random number between 0.0 < 1.0// AUTHOR: E. A. Estes, 2/7/86// ARGUMENTS: none// RETURN VALUE: random number// MODULES CALLED: random()// GLOBAL INPUTS: none// GLOBAL OUTPUTS: none// DESCRIPTION:/	Return a random number.//************************************************************************/doubledrandom(){    if (sizeof(int) != 2)	return((double) (random() & 0x7fff) / 32768.0);    else	return((double) random() / 32768.0);}

⌨️ 快捷键说明

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