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 + -
显示快捷键?