修改前下载https://download.csdn.net/download/viviliving/11632564
修改后下载https://download.csdn.net/download/viviliving/11632536
大学时看到大家玩mud,感觉很奇怪,
怎么那个多人对着满屏字母津津有味呢?
mud现在玩的人很少了,大量的字符交互太累,没有几个人能耐心的敲字母了。
以前看了mud编程,感觉很复杂,一堆东西,看完了也没弄出个一二三四
最近看了个帖子灵感一来,在xyj450的基础上改了改,
把原来的长安场景屏蔽掉,只留一个小小的长安乐坊,屏蔽其他出口,新增一些房间,然后把房间之间连接起来
大家参考玩一玩,学习一下,希望看着这些lpc源代码,能自己写一些新的场景和文字小游戏内嵌到长安乐坊里
修改登录后
X X X X X
●○●○●○●○●○●○●○●○●○●○●○●○●X XXXXXXXX
○ ○XX XX
● 西 游 记 ●X XX
○ ○ X XX
● A Journey to the West ●XXX XX
○ ○XX XXXXXXX
●○●○●○●○●○●○●○●○●○●○●○●○●XX XX X
XX XX XX XX X X XX X XX XX
西游记巫师协会版权所有X XX XX
Version 2.01 Copyright 1996-1998 by XYJ Wiz GroupXX XX
XXX XX XX X XX XX XX XXX
天籁妙,山水雅,醉露为酒玉为花。 XXX XX X
若人问我归何处,彩云深处是我家。 XXX XX X
XX XX XX X XXX XXX X XXXXXXXXX
有任何意见,请 email 给 darky(liux@fengyun.hit.edu.cn) XXX
网页地址: http://www.xiyouji.org
http://www.nease.net/~xiyoujib
玩家之窗: http://129.7.2.109:6969
总站地址:xiyouji.org 6666se try Ctrl-RETURN]
[提示:如果按RETURN键后系统没有响应,请试 Ctrl-RETURN]
★【西游记】总 站:209.83.132.67 6666★
★【西游记】大连站:202.118.66.15 6666★/big5):
★【西游记】北京站:168.160.225.39 6666★
★【西游记】珠海站:202.96.132.48 6666★
★【西游记】厦门站:202.101.106.246 6666★
★【西游记】杭州站:202.96.102.6 6666★
★【西游记】哈尔滨:202.118.226.88 6666★
西游记已经运行了十五秒。
目前共有1位玩家在线上。本站共有0位巫师、0位玩家,以及1位在尝试连线。
鉴于学生的主要任务是学习,本游戏不欢迎中小学生来玩。
您是否是中小学学生或年龄更小?(yes/no)
您的英文名字:(新玩家请选择一个您喜欢的名字)这个名字已经被注册,请输入相应密码:
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
你发现事情不大对了,但是又说不上来。
目前权限:(player)
*** help 也许对你很有用。
*** 注意:
为维护和发展本游戏,巫师有时需要监听玩家。所以希望
不要在游戏中谈论不想被别人知道的私事,以免出现尴尬
局面。
你发现事情不大对了,但是又说不上来。
长安乐坊 -
这里是长安城一家有名的娱乐场所。
当夜幕降临后, 这里就格外热闹。
进进出出的客人有达官贵人,南来北往的商旅,浪迹天涯的游子,三五成群的兵士,有时也能看见一些作俗客打扮的僧人或道士。
==============================
二楼:色子
三楼:竹签
四楼:龟房
五楼:斗鸡
六楼:大小点
七楼:诗社
八楼:拱猪
==============================
这里唯一的出口是 up。
南城客栈留言板(Board) [ 没有任何留言 ]
大木桌(Table)
鹅绒靠背躺椅(Chair)
鹅绒扶手躺椅(Chair)
>
> > 二楼:乐府骰点 -
乐坊楼上显得格外热闹,
走廊里人来人往,
几间屋子里人声嘈杂,
骨骰钱币落盘的声音不绝。
看样子,客人们赌得正欢呢。
这里明显的出口是 down、west 和 up。
青漆兽脚案(Table)
小镶玉桌(Table)
圆兽脚案(Table)
> 三楼:乐府摇签 -
乐坊楼上显得格外热闹,
走廊里人来人往,
几间屋子里人声嘈杂,
竹签落地的声音不绝。
看样子,客人们赌得正欢呢。
这里明显的出口是 down、east 和 up。
紫漆仙桌(Table)
圆木桌(Table)
大镶玉桌(Table)
> 四楼:乐府龟兔赛跑 -
乐坊楼上显得格外热闹,
走廊里人来人往,
几间屋子里人声嘈杂,
龟龟加油喝彩的声音不绝。
看样子,客人们赌得正欢呢。
这里明显的出口是 down、north 和 up。
黑镶玉案(Table)
小木案(Table)
黑镶玉桌(Table)
> 五楼:乐府斗鸡 -
乐坊楼上显得格外热闹,
走廊里人来人往,
几间屋子里人声嘈杂,
斗鸡的声音不绝。
看样子,客人们赌得正欢呢。
这里明显的出口是 down、south 和 up。
大镶玉桌(Table)
大兽脚桌(Table)
青漆镶玉桌(Table)
> 六楼:乐府大小点 -
乐坊楼上显得格外热闹,
走廊里人来人往,
几间屋子里人声嘈杂,
斗鸡的声音不绝。
看样子,客人们赌得正欢呢。
这里明显的出口是 down、west 和 up。
圆木案(Table)
圆木案(Table)
黑镶玉案(Table)
> 酸秀才高声朗读道:
杜甫:阁夜
岁暮阴阳催短景 天涯霜雪霁寒霄
五更鼓角声悲壮 三峡星河影动摇
野哭千家闻战伐 夷歌数处起渔樵
卧龙跃马终黄土 人事音书漫寂寥
七楼:乐府诗社 -
高楼之上,
满城繁华尽收眼底。
文人骚客都喜欢在这里品茶吟诗, 谈古论今,
你瞧,不知谁在茶桌上刚刚写好一首诗(poem)。
里边柜台上新贴了张启事(qishi),你不由得走过去看了几眼。
这里明显的出口是 up 和 down。
茶博士(Cha boshi)
酸秀才(Suan xiucai)
白漆仙桌(Table)
> 八楼:乐府红心大战 -
这是一间宽敞明亮的大厅,
厅的正中间是一根圆形的柱子。
柱子上贴满了各种广告:有换房的,有卖家具的,
但其中最多的还是找打牌搭档的广告。
厅的东南西北各有个门,
里面传出“拱啊!”“毙了!” 等的叫声。
这里明显的出口是 north 和 down。
柱子(Zhuzi) [ 没有任何留言 ]
>
修改代码思路如下:
源代码部分
kezhan.c
//changan city
inherit ROOM;
void create ()
{
set ("short", "长安乐坊");
set ("long", @LONG
这里是长安城一家有名的娱乐场所。
当夜幕降临后, 这里就格外热闹。
进进出出的客人有达官贵人,南来北往的商旅,浪迹天涯的游子,三五成群的兵士,有时也能看见一些作俗客打扮的僧人或道士。
==============================
二楼:色子
三楼:竹签
四楼:龟房
五楼:斗鸡
六楼:大小点
七楼:诗社
八楼:拱猪
==============================
LONG);
//set("item_desc", ([" *** " : " *** ", ]));
set("exits",
([ //sizeof() == 4
"up" : __DIR__"clubup1",
//"east" : __DIR__"xuanwu-n2",
]));
set("objects",
([ //sizeof() == 1
// __DIR__"npc/libai" : 1,
"/d/obj/misc/tables" : 1,
"/d/obj/misc/chairs" : 2,
]));
// set("outdoors", "changan");
set("no_clean_up", 0);
setup();
call_other("/obj/board/nancheng_b", "???");
replace_program(ROOM);
}
club.c
//changan city
inherit ROOM;
void create ()
{
set ("short", "长安乐坊");
set ("long", @LONG
这里是长安城一家有名的娱乐场所。
当夜幕降临后, 这里就格外热闹。
进进出出的客人有达官贵人,南来北往的商旅,浪迹天涯的游子,三五成群的兵士,有时也能看见一些作俗客打扮的僧人或道士。
==============================
二楼:色子
三楼:竹签
四楼:龟房
五楼:斗鸡
六楼:大小点
七楼:诗社
八楼:拱猪
==============================
LONG);
//set("item_desc", ([" *** " : " *** ", ]));
set("exits",
([ //sizeof() == 4
"up" : __DIR__"clubup1",
//"east" : __DIR__"xuanwu-n2",
]));
set("objects",
([ //sizeof() == 1
// __DIR__"npc/libai" : 1,
"/d/obj/misc/tables" : 1,
"/d/obj/misc/chairs" : 2,
]));
// set("outdoors", "changan");
set("no_clean_up", 0);
setup();
call_other("/obj/board/nancheng_b", "???");
replace_program(ROOM);
}
clubup1.c
//changan city
inherit ROOM;
void create ()
{
set ("short", "二楼:乐府骰点");
set ("long", @LONG
乐坊楼上显得格外热闹,
走廊里人来人往,
几间屋子里人声嘈杂,
骨骰钱币落盘的声音不绝。
看样子,客人们赌得正欢呢。
LONG);
//set("item_desc", ([" *** " : " *** ", ]));
set("exits",
([ //sizeof() == 4
// "up" : __DIR__"clubpoem",
"up" : __DIR__"clubup2",
"west" : __DIR__"duchang1",
// "east" : __DIR__"duchang2",
// "north" : __DIR__"duchang3",
// "south" : __DIR__"duchang4",
"down" : __DIR__"club",
]));
set("objects",
([ //sizeof() == 1
// __DIR__"npc/libai" : 1,
"/d/obj/misc/tables" : 3,
]));
// set("outdoors", "changan");
set("no_clean_up", 0);
setup();
replace_program(ROOM);
}
clubup2.c
//changan city
inherit ROOM;
void create ()
{
set ("short", "三楼:乐府摇签");
set ("long", @LONG
乐坊楼上显得格外热闹,
走廊里人来人往,
几间屋子里人声嘈杂,
竹签落地的声音不绝。
看样子,客人们赌得正欢呢。
LONG);
//set("item_desc", ([" *** " : " *** ", ]));
set("exits",
([ //sizeof() == 4
// "up" : __DIR__"clubpoem",
"up" : __DIR__"clubup3",
// "west" : __DIR__"duchang1",
"east" : __DIR__"duchang2",
// "north" : __DIR__"duchang3",
// "south" : __DIR__"duchang4",
"down" : __DIR__"clubup1",
]));
set("objects",
([ //sizeof() == 1
// __DIR__"npc/libai" : 1,
"/d/obj/misc/tables" : 3,
]));
// set("outdoors", "changan");
set("no_clean_up", 0);
setup();
replace_program(ROOM);
}
clubup5.c
//changan city
inherit ROOM;
void create ()
{
set ("short", "六楼:乐府大小点");
set ("long", @LONG
乐坊楼上显得格外热闹,
走廊里人来人往,
几间屋子里人声嘈杂,
斗鸡的声音不绝。
看样子,客人们赌得正欢呢。
LONG);
//set("item_desc", ([" *** " : " *** ", ]));
set("exits",
([ //sizeof() == 4
// "up" : __DIR__"clubpoem",
"up" : __DIR__"clubpoem",
"west" : __DIR__"shaizi-room",
// "east" : __DIR__"duchang2",
// "north" : __DIR__"duchang3",
// "south" : __DIR__"duchang4",
"down" : __DIR__"clubup4",
]));
set("objects",
([ //sizeof() == 1
// __DIR__"npc/libai" : 1,
"/d/obj/misc/tables" : 3,
]));
// set("outdoors", "changan");
set("no_clean_up", 0);
setup();
replace_program(ROOM);
}
clubpoem.c
// Room: /u/mon/poem/clubpoem by mon@xyj 7/25/97
inherit ROOM;
#include <ansi.h>;
int POEMS=319;
string author,title,*poem;
string author1,title1,*poem1;
int length,length1,running;
string current,current_all,last,last_all;
string curr_show;
int index,chance;
int poem_index,answerd,ans_curr,ans_last;
void new_poem();
void copy_to_old();
void do_test();
void do_init(object me);
void poem_reward(object me,string arg);
void poem_reward1(object me);
void poem_penalty(object me);
int find_newline();
string mixup(string str);
string enscript(string arg);
void create ()
{
set ("short", "七楼:乐府诗社");
set ("long", @LONG
高楼之上,
满城繁华尽收眼底。
文人骚客都喜欢在这里品茶吟诗, 谈古论今,
你瞧,不知谁在茶桌上刚刚写好一首诗(poem)。
里边柜台上新贴了张启事(qishi),你不由得走过去看了几眼。
LONG);
set("exits", ([ /* sizeof() == 1 */
"down" : __DIR__"clubup5",
//"west" : __DIR__"shaizi-room",
//"east" : __DIR__"puke-room",
"up": __DIR__"club3",
]));
set("objects", ([
__DIR__"npc/teawaiter": 1,
__DIR__"npc/suanxiucai": 1,
//__DIR__"npc/gongsun": 1,
"/d/obj/misc/tables" : 1,
]));
setup();
remove_call_out("do_test");
poem_index=1;
running=0;
}
void init()
{
add_action("do_answer","answer");
add_action("do_look","look");
call_out("do_init",1,this_player());
if(running==0) {
running=1;
new_poem();
copy_to_old();
new_poem();
call_out("do_test",2);
}
}
void do_init(object me)
{
return;
}
int do_answer(string arg)
{
object me=this_player(),ob;
if(!arg) return notify_fail("回答什么?\n");
if(me->is_busy())
return notify_fail("你上一个动作还没有完成。\n");
if( living(me) ) me->receive_damage("sen",5+random(15));
if(objectp(ob=present("cha boshi",this_object()))
&& living(ob)) {
switch(random(2)) {
case 0: message_vision("$N说道:是..."+arg+"?\n",me);
break;
case 1: message_vision("$N答道:"+arg+"?\n",me);
break;
}
arg=replace_string(arg," ","");
arg=replace_string(arg,",","");
arg=replace_string(arg,",","");
if(arg==current&&strlen(current)>2) {
if(ans_curr==1) {
write("别人已经回答过这句诗了。\n");
return 1;
}
ans_curr=1;
//change to a new poem once this one is answered.
index=length-1;
me->set_temp("poem/index",poem_index);
poem_reward(me,current_all);
} else if(arg==last&&strlen(last)>2) {
if(ans_last==1) {
write("别人已经回答过这句诗了。\n");
return 1;
}
ans_last=1;
poem_reward(me,last_all);
} else {
message_vision("茶博士摇了摇头:好象不对吧?\n",me);
me->add_temp("poem/wrong",1);
if(me->query_temp("poem/wrong")>10) poem_penalty(me);
}
} else {
write("现在没有人裁判对错了... :(\n");
}
return 1;
}
void poem_penalty(object me)
{
me->set("sen",-1);
me->set_temp("poem/wrong",0);
return;
}
void poem_reward(object me,string arg)
{
me->set_temp("poem/wrong",0);
message_vision("茶博士点头道:“"+arg+"”不错!不错!\n",me);
poem_reward1(me);
}
void poem_reward1(object me)
{
int dx,pot,lite;
switch(random(3)) {
case 0: dx=4+random(6);
me->add("combat_exp",dx);
write("你的道行增加了!\n");
break;
case 1: pot=3+random(4);
if(me->query("potential")+pot-me->query("learned_points")<=100)
me->add("potential",pot);
write("你的潜能增加了!\n");
break;
case 2: lite=4+random(6);
me->improve_skill("literate",lite);
write("你的读书识字进步了!\n");
break;
}
me->add("poem_answered",1);
dx=me->query("poem_answered");
}
void do_test()
{
int newt;
object ob;
string first,second,quest;
if(objectp(ob=present("cha boshi",this_object()))
&& living(ob)) {
if(strlen(current)>2&&ans_curr==0) {
last=current;
last_all=current_all;
ans_last=0;
}
newt=0;
while(newt==0) {
if(!find_newline()) {
copy_to_old();
new_poem();
} else {
if(sscanf(poem[index],"%s %s",first,second)==2 &&
!sscanf(poem[index],"%*s[") &&
!sscanf(poem[index],"%*s(") &&
!sscanf(poem[index],"%*s□") ) {
if(strlen(first)>2&&strlen(second)>2) {
newt=1;
}
}
}
}
first=replace_string(first," ","");
second=replace_string(second," ","");
current_all=first+" "+second;
ans_curr=0;
if(strlen(first)>=14 && random(3)==0) {
quest=first;
} else if (strlen(second)>=14 && random(2)==0) {
quest=second;
} else {
quest=first+second;
}
current=replace_string(quest,",",""); // the answer
quest=mixup(quest); // the question
curr_show=quest;
switch(random(1)) {
case 0:
tell_room(this_object(),
"茶博士提笔在墙上写道:"+quest+"\n");
break;
}
}
call_out("do_test",60);
return;
}
string mixup(string str)
{
int len=strlen(str)/2,i,j,k,l;
string ans;
for(i=1;i<=random(2)+1;i++) {
j=random(len);
k=random(len);
if(j==k) {
k++;
if(k>=len) k=0;
}
if(j>k) {
l=k; k=j; j=l;
} // so j<k
j=j+j; k=k+k;
if(j>0) ans=str[0..j-1];
else ans="";
ans+=str[k..k+1]+str[j+2..k-1]+str[j..j+1];
if(k<len+len-2) ans+=str[k+2..len+len-1];
str=ans;
}
return str;
}
int do_look(string arg)
{ int i;
if(!arg) return 0;
if(arg=="poem") {
write("\n\n "+author1+":"+title1+"\n");
for (i=0;i<length1;i++) {
write(" "+poem1[i]+"\n");
}
write("\n\n\n");
write("当前题目: "+curr_show+"\n\n");
return 1;
} else if(arg=="qishi") {
write("\n"+@LONG
本社新增猜诗游戏,由茶博士将一句诗词的若干字
颠倒次序,写在墙上。能准确答出(answer)原句者为胜。
例如:茶博士提笔在墙上写道:离离原上草一荣一枯岁
你应该回答:answer 离离原上草一岁一枯荣
LONG);
write("\n\n");
return 1;
} else return 0;
}
void copy_to_old()
{ int i;
object ob;
author1=author;
title1=title;
length1=length;
poem1=({});
last="";
for (i=0;i<length;i++)
poem1+=({poem[i]});
if(objectp(ob=present("suan xiucai",this_object()))
&& random(2)==0 && living(ob)) {
message_vision(({ob->name()+"摇头晃脑地吟诵道:",
ob->name()+"高声朗读道:",
ob->name()+"仿佛在自言自语:"})[random(3)]+"\n",ob);
message_vision("\n "+author1+":"+title1+"\n",ob);
for (i=0;i<length1;i++) {
message_vision(" "+poem1[i]+"\n",ob);
}
message_vision("\n\n",ob);
}
return;
}
void new_poem()
{ string filename,buf;
int i,j,k;
length=0;
while (length==0) {
while((k=(1+random(POEMS)))==poem_index);
filename="/d/ourhome/honglou/poem/poem"+k;
buf=read_file(filename,1,1);
sscanf(buf,"%s:%s",author,title);
i=0;
j=0;
poem=({});
while(buf=read_file(filename,2+i,1)) {
if(strlen(buf)>2) {
buf=replace_string(buf,"\n","");
poem+=({buf});
j++;
}
i++;
}
length=j;
}
poem_index=k;
answerd=0;
index=-1;
chance=3*100/(1+length);
if(length<3) {
chance=100;
}
return;
}
int find_newline()
{
index++;
while(index<length) {
if(random(100)<chance) {
return 1;
} else index++;
}
return 0;
}
string enscript(string arg)
{ string result;
string *color=({BLK,RED,GRN,YEL,BLU,MAG,CYN,WHT,
HIR,HIG,HIY,HIB,HBRED,HBGRN,HBYEL,
HBBLU,HBMAG,BBLK,BRED,BGRN});
int len,i;
len=sizeof(color);
result="";
i=sizeof(arg);
while(i>2) {
if(random(2)==0) {
result=color[random(len)]+NOR+arg[i-2..i-1]+result;
} else {
result=arg[i-2..i-1]+result;
}
i-=2;
}
result=NOR+arg[0..1]+result;
return result;
}
shaizi-room.c出口部分,与楼层对应
set("exits",
([ //sizeof() == 4
//"south" : __DIR__"xiaomuwu",
//"north" : __DIR__"chufang",
//"west" : __DIR__"duchang2",
"east" : __DIR__"clubup5",
//"up" : __DIR__"***",
//"down" : __DIR__"***",
]));
其他duchang1.c duchang2.c duchang3.c duchang4.c出口部分改成对应楼层,不然跑回老场景了,进外太空了
set("exits", ([ /* sizeof() == 1 */
"east" : __DIR__"clubup1",
]));
修改前后的mudxyj的压缩包再我的资源里都有,大家找找