natured.c

来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 1,472 行 · 第 1/4 页

C
1,472
字号
//侠客行100海洋II
//星星(lywin)由前人的natured.c为基础!加入夜间出现的飞贼和通告。2000/5/30

// natured.c
#include <ansi.h>
#define TIME_TICK (time()*60)
#define TIME_TICK1 (time()*60)
//#define TIME_TICK (time()*60-890000000)
//#define TIME_TICK1 (time()*60-900000000)
//#define TIME_TICK ((time()-900000000)*24)
//#define TIME_TICK1 ((time()-900000000)*24)
static int current_day_phase, current_month;
static string ppl;
mapping *day_phase;

string *box_object=({
"/d/city/guangchang",
"/d/city/dangpu",
"/d/city/qianzhuang",
"/d/city/dongmen",
"/d/city/ximen",
"/d/city/dongmen",
"/d/city/beimen",
"/d/city/nanmen",
"/d/dali/center",
"/d/wudang/guangchang",
"/d/quanzhen/damen",
"/d/baituo/dating",
"/d/lingjiu/damen",
"/d/emei/qingyinge",
"/d/mingjiao/shanmen",
"/d/xingxiu/xxh1",
"/d/huashan/zhenyue",
"/d/quanzhou/zhongxin",
"/d/gumu/mumen",
"/d/suzhou/canlangting",
"/d/guiyun/taihu",
"/d/city3/guangchang",
"/d/city/guangchang",
});
string *month_desc = ({
	"「隆冬」:",
	"「寒冬」:",
	"「初春」:",
	"「早春」:",
	"「阳春」:",
	"「初夏」:",
	"「盛夏」:",
	"「仲夏」:",
	"「初秋」:",
	"「高秋」:",
	"「深秋」:",
	"「初冬」:",
});

string *weather_msg = ({
        "天空中万里无云",
        "几朵淡淡的云彩妆点著清朗的天空",
        "白云在天空中飘来飘去",
        "厚厚的云层堆积在天边",
        "天空中乌云密布",
});

mapping *read_table(string file);
void init_day_phase();

void create()
{
//        day_phase = read_table("/adm/etc/nature/day_phase");
//        init_day_phase();
	string get_month, get_day;
	mixed *local;
	local = localtime(TIME_TICK1);
        get_day = CHINESE_D->chinese_number(local[3]);
	get_month = CHINESE_D->chinese_number(local[4]);
	switch(get_month)
	{
		//spring weather
		case "三":
		case "四":
		case "五":
		     switch(random(3))
		     {
			case 0:
			   day_phase = read_table("/adm/etc/nature/spring_rain");
			   break;
			case 1:
			   day_phase = read_table("/adm/etc/nature/spring_sun");
			   break;
			case 2:
			   day_phase = read_table("/adm/etc/nature/spring_wind");
			   break;
		     }
		     break;
		//summer weather
		case "六":
		case "七":
		case "八":
		     switch(random(3))
		     {
			case 0:
			   day_phase = read_table("/adm/etc/nature/summer_rain");
			   break;
			case 1:
			   day_phase = read_table("/adm/etc/nature/summer_sun");
			   break;
			case 2:
			   day_phase = read_table("/adm/etc/nature/summer_wind");
			   break;
		     }
		     break;
		//autumn weather
		case "九":
		case "十":
		case "十一":
		     switch(random(3))
		     {
			case 0:
			   day_phase = read_table("/adm/etc/nature/autumn_rain");
			   break;
			case 1:
			   day_phase = read_table("/adm/etc/nature/autumn_sun");
			   break;
			case 2:
			   day_phase = read_table("/adm/etc/nature/autumn_wind");
			   break;
		     }
		     break;
		//winter weather
                case "零":
		case "二":
		     switch(random(3))
		     {
			case 0:
			   day_phase = read_table("/adm/etc/nature/winter_rain");
			   break;
			case 1:		
			   day_phase = read_table("/adm/etc/nature/winter_sun");
			   break;
			case 2:
			   day_phase = read_table("/adm/etc/nature/winter_wind");
			   break;
		     }
		case "一":
		        if(get_day=="一")
		      { day_phase = read_table("/adm/etc/nature/spring");break;}
		      else switch(random(3))
		     {
			case 0:
			   day_phase = read_table("/adm/etc/nature/winter_rain");
			   break;
			case 1:		
			   day_phase = read_table("/adm/etc/nature/winter_sun");
			   break;
			case 2:
			   day_phase = read_table("/adm/etc/nature/winter_wind");
			   break;
		     }
		        
		     break;
		default:
		     day_phase = read_table("/adm/etc/nature/day_phase");
	}


	init_day_phase();
}
/*
void init_day_phase()
{
        mixed *local;
        int i, t;

        // Get minutes of today.
        local = localtime(TIME_TICK1);
        t = local[2] * 60 + local[1];           // hour * 60 + minutes

        // Find the day phase for now.
        for( i=0; i < sizeof(day_phase); i++)
                if( t >= day_phase[i]["length"] )
                        t -= (int)day_phase[i]["length"];
                else
                        break;

        current_day_phase = (i==0? sizeof(day_phase)-1: i - 1);

        // Since in our time scale, 1 minute == 1 second in RL, so we don't need
        // any conversion before using this number as call_out dalay, if you
        // changed the time scale, be sure to convert it.

        call_out("update_day_phase",
      (int)day_phase[(current_day_phase+1) % sizeof(day_phase)]["length"] - t);
}*/
void init_day_phase()
{
	mixed *local;
	int i, t;


	local = localtime(TIME_TICK1);
	t = local[2] * 60 + local[1];      


	for( i=0; i < sizeof(day_phase); i++)
		if( t >= day_phase[i]["length"] )
			t -= (int)day_phase[i]["length"];
		else
			break;

	current_day_phase = (i==0? sizeof(day_phase)-1: i - 1);
	current_month = local[4];


	remove_call_out("init_day_phase");
	call_out("init_day_phase", 180);


	remove_call_out("update_day_phase");	



	call_out("update_day_phase",
	(int)day_phase[(current_day_phase+1) % sizeof(day_phase)]["length"] - t);
}

void update_day_phase()
{
int rand;
object ob,room;
string newroom;
        remove_call_out("update_day_phase");

        current_day_phase = (++current_day_phase) % sizeof(day_phase);
        switch (day_phase[current_day_phase]["outcolor"])
        {
              case "BLK":
                   message("channel:chat", HIG"【窗外】"BLK + day_phase[current_day_phase]["time_msg"] + "\n"NOR, users());
       rand=random(sizeof(box_object));
       ob=new("/d/migong/obj/npc1");
newroom=box_object[rand];
room=load_object(newroom);
if (room && ob && random(2)==0)
{
ob->move(room);
message("channel:chat",HIW"【江湖通告】:"
+ob->query("name")+"("+ob->query("id")+HIW")再次来到了海洋II,目前位置在"+environment(ob)->query("short")+HIW"!\n"NOR,users());
}
if (room && ob && random(2)==1)
{
ob->move(room);
message("channel:chat",HIW"【江湖通告】:"
+ob->query("name")+"("+ob->query("id")+HIW")再次来到了海洋II,目前位置在"+environment(ob)->query("short")+HIW"!\n"NOR,users());
}
if (room && ob && random(2)==0)
{
ob->move(room);
message("channel:chat",HIW"【江湖通告】:"
+ob->query("name")+"("+ob->query("id")+HIW")再次来到了海洋II,目前位置在"+environment(ob)->query("short")+HIW"!\n"NOR,users());
}
if (room && ob && random(2)==1)
{
ob->move(room);
message("channel:chat",HIW"【江湖通告】:"
+ob->query("name")+"("+ob->query("id")+HIW")再次来到了海洋II,目前位置在"+environment(ob)->query("short")+HIW"!\n"NOR,users());
}
                   break;
              case "RED":
                   message("channel:chat", HIG"【窗外】"RED + day_phase[current_day_phase]["time_msg"] + "\n"NOR, users());
       rand=random(sizeof(box_object));
       ob=new("/d/migong/obj/npc1");
newroom=box_object[rand];
room=load_object(newroom);
if (room && ob && random(2)==0)
{
ob->move(room);
message("channel:chat",HIW"【江湖通告】:"
+ob->query("name")+"("+ob->query("id")+HIW")再次来到了海洋II,目前位置在"+environment(ob)->query("short")+HIW"!\n"NOR,users());
}
if (room && ob && random(2)==1)
{
ob->move(room);
message("channel:chat",HIW"【江湖通告】:"
+ob->query("name")+"("+ob->query("id")+HIW")再次来到了海洋II,目前位置在"+environment(ob)->query("short")+HIW"!\n"NOR,users());
}
if (room && ob && random(2)==0)
{
ob->move(room);
message("channel:chat",HIW"【江湖通告】:"
+ob->query("name")+"("+ob->query("id")+HIW")再次来到了海洋II,目前位置在"+environment(ob)->query("short")+HIW"!\n"NOR,users());
}
if (room && ob && random(2)==1)
{
ob->move(room);
message("channel:chat",HIW"【江湖通告】:"
+ob->query("name")+"("+ob->query("id")+HIW")再次来到了海洋II,目前位置在"+environment(ob)->query("short")+HIW"!\n"NOR,users());
}

                   break;
              case "HIR":
                   message("channel:chat", HIG"【窗外】"HIR + day_phase[current_day_phase]["time_msg"] + "\n"NOR, users());
       rand=random(sizeof(box_object));
       ob=new("/d/migong/obj/npc1");
newroom=box_object[rand];
room=load_object(newroom);
if (room && ob && random(2)==0)
{
ob->move(room);
message("channel:chat",HIW"【江湖通告】:"
+ob->query("name")+"("+ob->query("id")+HIW")再次来到了海洋II,目前位置在"+environment(ob)->query("short")+HIW"!\n"NOR,users());
}

if (room && ob && random(2)==1)
{
ob->move(room);
message("channel:chat",HIW"【江湖通告】:"
+ob->query("name")+"("+ob->query("id")+HIW")再次来到了海洋II,目前位置在"+environment(ob)->query("short")+HIW"!\n"NOR,users());
}
if (room && ob && random(2)==0)
{
ob->move(room);
message("channel:chat",HIW"【江湖通告】:"
+ob->query("name")+"("+ob->query("id")+HIW")再次来到了海洋II,目前位置在"+environment(ob)->query("short")+HIW"!\n"NOR,users());
}
if (room && ob && random(2)==1)
{
ob->move(room);
message("channel:chat",HIW"【江湖通告】:"
+ob->query("name")+"("+ob->query("id")+HIW")再次来到了海洋II,目前位置在"+environment(ob)->query("short")+HIW"!\n"NOR,users());
}

                   break;
              case "GRN":
                   message("channel:chat", HIG"【窗外】"GRN + day_phase[current_day_phase]["time_msg"] + "\n"NOR, users());
       rand=random(sizeof(box_object));
       ob=new("/d/migong/obj/npc1");
newroom=box_object[rand];
room=load_object(newroom);
if (room && ob && random(2)==0)
{
ob->move(room);
message("channel:chat",HIW"【江湖通告】:"
+ob->query("name")+"("+ob->query("id")+HIW")再次来到了海洋II,目前位置在"+environment(ob)->query("short")+HIW"!\n"NOR,users());
}
if (room && ob && random(2)==1)
{
ob->move(room);
message("channel:chat",HIW"【江湖通告】:"
+ob->query("name")+"("+ob->query("id")+HIW")再次来到了海洋II,目前位置在"+environment(ob)->query("short")+HIW"!\n"NOR,users());
} 
if (room && ob && random(2)==0)
{
ob->move(room);
message("channel:chat",HIW"【江湖通告】:"
+ob->query("name")+"("+ob->query("id")+HIW")再次来到了海洋II,目前位置在"+environment(ob)->query("short")+HIW"!\n"NOR,users());
}
if (room && ob && random(2)==1)
{
ob->move(room);
message("channel:chat",HIW"【江湖通告】:"
+ob->query("name")+"("+ob->query("id")+HIW")再次来到了海洋II,目前位置在"+environment(ob)->query("short")+HIW"!\n"NOR,users());
}

                   break;
              case "HIG":
                   message("channel:chat", HIG"【窗外】"HIG + day_phase[current_day_phase]["time_msg"] + "\n"NOR, users());
        rand=random(sizeof(box_object));
       ob=new("/d/migong/obj/npc1");
newroom=box_object[rand];

⌨️ 快捷键说明

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