gate.c

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

C
160
字号
//Cracked by Kafei// /d/bwdh/square.c
// 看台
// by sdong 09/25/98

#include <ansi.h>
inherit ROOM;
#define CANGKU "/d/bwdh/sjsz/cangku.c"

string long_desc();
int do_start(string arg);
int do_stop(string arg);
int start(string host,string challenger);
int do_close_men();
int do_open_men(string arg);
void enter_sjsz();

void create()
{
	set("short", HIR"试剑山庄大广场"NOR);
	set("long", (: long_desc :));
	set("invalid_startroom", 1);

	set("no_fight", 1);

	set("exits", ([
		"enter" : "/d/bwdh/sjsz/square",
		"southdown": "/d/bwdh/square",
	]));


//        set("objects", ([
//                __DIR__"npc/seller" : 1,
//        ]));

	setup();
}

void init()
{
}


string long_desc()
{
  	string desc,temp;
	int nRank,i,j;

  	desc  = HIW"

		           /I______________I\\               
		         //||||||||||||||||||\\\\            
		     T\\//IIIIIIIIIIIIIIIIIIIIII\\\\/T       
	             ^^^^"+HIG"||"NOR+HIY"^^^"+HIM"[ 试剑山庄 ]"NOR+HIY"^^^"+HIG"||"+HIY"^^^^         "+HIY"
		         "+HIG"||"NOR+HIY"__________________"+HIG"||"NOR+HIY"             "+HIC"
	  []___[]___[]__|[]___[]___||___[]___[]|__[]___[]___[]
	  |__________________|_|________|_|__________________|"+HIB"
             ||                                          ||
             ||                ___________               ||
             ||               @           @              ||
             ||               |           |              ||
             ||               |           |              ||
             ||               |           |              ||
             ||               |           |              ||
             ||               |           |              ||
             ||_______________|___________|______________||\n\n"NOR;

  	return desc;
}

void enter_sjsz() 
{
	 object me = this_player();
	 object *inv;
	 object *old_basket, *basket;
	 object cangku;
	 int i;

	 inv = all_inventory(me);
	 basket = allocate(sizeof(inv));
	 cangku = find_object(CANGKU);
	 if (! objectp(cangku)) {
		  cangku = load_object(CANGKU);
		  if (!objectp(cangku)) {
				message_vision("$N请告诉 wiz: cangku not found\n", me);
				return;
		  }
	 }

	 for (i=0; i<sizeof(inv); i++) {
				basket[i] = inv[i];
				inv[i]->move(cangku);
				message_vision("$N将一" + inv[i]->query("unit")+ inv[i]->query("name")+"交给小厮。\n", me);
	 }

	 old_basket = cangku->query("basket/" + me->query("id"));
	 if (arrayp(old_basket)) basket = basket + old_basket;
	 cangku->set("basket/" + me->query("id"), basket);
	 return;
}

void out_sjsz() {
	 object player = this_player();
	 object *inv, cangku, *basket;
	 int i;
	 string id;

  cangku = find_object(CANGKU);
  if (! objectp(cangku)) {
	 cangku = load_object(CANGKU);
	 if (!objectp(cangku)) {
		message_vision("$N请告诉 wiz: cangku not found\n", player);
		return 0;
	 }
  }

  basket = cangku->query("basket/"+player->query("id"));

  if (basket) {
	 for (i=0; i<sizeof(basket); i++) {
		if (objectp(basket[i])) {
		  basket[i]->move(player);
		  message_vision("$N从主持人手里拿回一"+
					 basket[i]->query("unit")+
					 basket[i]->query("name")+"。\n", player);
		}
	 }
	 cangku->delete("basket/"+player->query("id"));
  }
  else message_vision("主持人说:$N什么也没存在我这里,可别赖我贪污喔!\n", player);

  return;
}

int valid_leave(object player, string dir) {
    object *inv;
    int i;
    inv = all_inventory(player);

	if ( dir == "enter" )
	 {
		 enter_sjsz();
	 }
	 else if ( dir == "southdown" )
	 {
          for (i=0; i<sizeof(inv); i++) {
                  if (inv[i]->is_character())
                  return notify_fail("你不能带着其他玩家离开。\n");
          }
		 out_sjsz();
	 }

	 player->delete("sjsz/entrance");

	 return ::valid_leave(player, dir);
}



⌨️ 快捷键说明

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