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

📄 xcp.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// xcp.c // write by JackyBoy@CuteRabbit Studio for SDXL & CCTX 1999/6/1// 为了避免递归太深,请不要设置进入级别超过16级. JackyBoy// Tips:为了不影响可以连续发命令,X系列命令可以将递归进行call_out调用!//      但这只是想法我自己并未去实现它!inherit F_CLEAN_UP;int help();int do_cp(string,string,string,int);string resolvePath(string,int);int main(object me, string arg){	string  path,wild,dest;	int level;	level=15;	seteuid(geteuid(me));	write("X c 命令 v0.1  \nWrite By JackyBoy@CuteRabbit for CCTX & SDXL 1999/6/1\n"+		"主页:http://mud.yn.cninfo.net/jackyboy\n邮件:jackyboy@126.com\n");    if (!arg) return help();    if (sscanf(arg,"-d %s %s",path,dest)!=2)    {    	if(sscanf(arg,"-d%d %s %s",level,path,dest)!=3)    		if(sscanf(arg,"%s %s",path,dest)!=2)    		{    			write ("\n参数解析错误。\n\n");    			return help();    		}    }    else    	level=15;//带-d参数默认级别为所有级    if(level<0) level=1;    if(level>15) level=15;    dest=resolve_path(me->query("cwd"),dest);    //处理path分解出wild    path=resolve_path(me->query("cwd"),path);    write("未解析路径:\t"+path+"\n");    //write("欲复制的目的路径:\t"+dest+"\n");    write("搜索目录级别:\t"+level+"\n");    wild=resolvePath(path,0);    path=resolvePath(path,1);    write("解析后路径:\t"+path+"\n");    write("解析后通配符:\t"+wild+"\n");    write("解析后目标路径:\t"+dest+"\n\n");    do_cp(path,wild,dest,level);    write("\n复制结束。\n");    return 1;}string resolvePath(string path,int op){	string *dn,tmp;	int i;	if(path=="/")//对这个情况特殊处理		return (op)?"/":"*";	dn=explode(path,"/");	if(op)//op为非0表示需要返回路径	{		//dn=dn-({dn[sizeof(dn)-1]});		//tmp=implode(dn,"/")+"/";		//上面的程序不好,不能对同名路径正确处理,比如不能在/log/log文件里搜索		tmp="/";		for(i=0;i<sizeof(dn)-1;i++)		{			//write("合并"+dn[i]+"\n");			tmp+=dn[i]+"/";		}		return tmp;	}	else		return dn[sizeof(dn)-1];}int do_cp(string path,string wild,string dest,int level){	//int i;string *fs;	string file;	reset_eval_cost();//重新设置剩余执行时间,必须设置!	if(dest[sizeof(dest)-1]!='/')//这句必不可少,不然就不能正确生成目标路径    	dest=dest+"/";	if(this_player()->query("env/debug"))		write("开始复制"+path+wild+"到"+dest+"\n");	if(level<0)	{		//write("级别限制,不能再进入。\n");		return 0;	}		foreach(file in get_dir(path+wild))	{		if(file=="."||file=="..")			continue;				switch(file_size(path+file))		{			case -1:				//无法读取该目录,跳过				break;			case -2:				if(file!="."&&file!="..")					do_cp(path+file+"/","*",dest+file+"/",level-1);				break;			default:				assure_file(dest+file);				//write("复制文件:"+path+file+"到"+dest+file+"\n");				cp(path+file,dest+file);		}			}	return 1;}int help(){  write(@HELPX cp 命令 v0.1  Write By JackyBoy@CuteRabbit for CCTX & SDXL 1999/6/2主页:http://mud.yn.cninfo.net/jackyboy邮件:jackyboy@126.com指令格式 : xcp [-d[0-15]] 源路径或文件 目标路径此指令可让你把指定的目录或文件复制到指定的目录去。支持通配符,可以指定复制一定的目录深度。HELP    );    return 1;}

⌨️ 快捷键说明

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