📄 control.c
字号:
//Cracked by Kafei
// Control panel for Group BWDH
// Apache 10/98
// changed by sdong 10/03/98 for fixing some bugs
#include <ansi.h>
inherit NPC;
int reset();
int auto_check();
#define BOARD __DIR__"npc/bwboard"
#define CANGKU "/d/bwdh/sjsz/cangku"
// I put all possible npcs at here!
string *high_npc = ({
"/kungfu/class/baituo/feng",
"/kungfu/class/emei/miejue",
"/kungfu/class/emei/zhou",
"/kungfu/class/gaibang/hong",
"/kungfu/class/huashan/ailao",
"/kungfu/class/huashan/gaolao",
"/kungfu/class/shaolin/du-jie",
"/kungfu/class/shaolin/du-nan",
"/kungfu/class/shaolin/du-e",
"/kungfu/class/wudang/zhang",
"/kungfu/class/xingxiu/ding",
"/kungfu/class/xuedao/laozu",
"/kungfu/class/xueshan/jiumo",
"/kungfu/class/xueshan/jinlun",
"/kungfu/class/shenlong/hong",
});
string *middle_npc = ({
"/kungfu/class/baituo/ke",
"/kungfu/class/emei/jingxuan",
"/kungfu/class/gaibang/jian",
"/kungfu/class/shaolin/xuan-ci",
"/kungfu/class/shaolin/xuan-bei",
"/kungfu/class/shaolin/xuan-nan",
"/kungfu/class/shaolin/xuan-ku",
"/kungfu/class/wudang/mo",
"/kungfu/class/wudang/yu",
"/kungfu/class/wudang/yin",
"/kungfu/class/wudang/song",
"/kungfu/class/wudang/zhang",
"/kungfu/class/xingxiu/zhaixing",
"/kungfu/class/xuedao/shendi",
"/kungfu/class/xueshan/ling-zhi",
"/kungfu/class/quanzhen/hao",
"/kungfu/class/quanzhen/ma",
"/kungfu/class/quanzhen/tan",
"/kungfu/class/quanzhen/liu",
});
string *low_npc = ({
"/kungfu/class/baituo/ma",
"/kungfu/class/emei/fang",
"/kungfu/class/gaibang/kongkong",
"/kungfu/class/shaolin/hui-kong",
"/kungfu/class/xingxiu/azi",
"/kungfu/class/wudang/daotong",
"/kungfu/class/emei/li",
"/kungfu/class/emei/bei",
"/kungfu/class/emei/fang",
"/kungfu/class/xueshan/gongcang",
"/kungfu/class/xuedao/baoxiang",
"/d/shenlong/npc/hei.c",
"/d/shenlong/npc/bai.c",
"/d/shenlong/npc/huang.c",
"/d/shenlong/npc/fang.c",
"/d/xingxiu/npc/gushou.c",
"/d/xingxiu/npc/boshou.c",
"/d/xingxiu/npc/haoshou.c",
"/d/xingxiu/npc/xxdizi",
});
string *misc_npc = ({
"/clone/beast/laohu",
"/clone/beast/xbaozi.c",
"/clone/beast/zsnake.c",
"/d/zhongnan/bigbear.c",
"/d/changbai/npc/yu",
"/kungfu/class/shenlong/xu",
"/d/xixia/npc/eshen",
"/d/xixia/npc/shiwei",
"/d/taishan/npc/jiang",
"/d/taishan/npc/meng-mian",
"/d/quanzhou/npc/langren",
"/d/huanghe/npc/liang-ziweng",
"/d/wudang/npc/baibian",
});
string *special_weapon = ({
"/d/bwdh/sjsz/obj/hunterbow.c",
"/d/bwdh/sjsz/obj/arrow.c",
"/d/bwdh/sjsz/obj/dantou.c",
"/d/bwdh/sjsz/obj/huoyao.c",
"/clone/weapon/xiangmo-chu.c",
"/clone/weapon/yitian-jian.c", // 倚天剑
"/clone/unique/yuxiao.c",// : 1, // 玉箫
"/clone/unique/fumo-dao.c",// : 1, // 伏魔刀
"/clone/unique/jinshe-jian.c",// : 1, // 金蛇剑
"/clone/unique/eyujian.c",// : 1, // 鳄嘴剪
"/clone/unique/eweibian.c",// : 1, // 鳄尾鞭
"/clone/unique/xuantie-jian.c",// : 1, // 玄铁重剑
"/d/huashan/obj/jinshe-zhui.c", // : 1, // 金蛇锥
"/clone/unique/yuzhu-zhang.c",// : 1, // 玉竹杖
"/clone/weapon/qijue.c",// : 1, // 七绝针
"/clone/unique/yuchang-jian.c",// : 1, // 鱼肠剑
"/clone/unique/zhenwu.c",// : 1, // 真武剑
"/clone/unique/dulong-bian.c", //
"/clone/unique/tulong-dao.c", //
"/clone/unique/fan.c", //
"/clone/weapon/jingun.c",//
"/clone/weapon/falun5.c",//
"/clone/weapon/qixing-jian.c", //
"/clone/weapon/zijin-dao.c", //
"/clone/weapon/heilong-bian.c ", //
"/clone/weapon/songwen-jian.c ", //
"/clone/weapon/youlong.c ", //
"/d/shaolin/obj/jingang-zhao.c",//: 1, // 金刚罩
"/d/xueshan/obj/wucan-yi.c",// : 1, // 乌蚕衣
"/d/taohua/obj/ruanwei-jia.c",// : 1, // 软猬甲
"/clone/unique/xuedao.c",// : 1, // 血刀
"/clone/unique/yuandao.c",// : 1,
"/clone/unique/yangdao.c",// : 1,
});
void move_npc(object npc);
int update(int n, int result);
void sort_rank();
void clean_sjsz();
int do_judge(string arg);
int do_fire(string arg);
int do_clean(string arg);
int do_challenge(string arg);
void auto_check(int nCounts);
int do_duet(string arg);
void do_challenge(string arg);
void do_accept(string arg);
int do_goon();
int do_auto_teamup(string arg);
void move_me(object me, string place);
void nude(object obj);
void my_destruct(object obj);
void full_all(object me);
void move_me(object me, string place);
int update_room (string file);
int refresh_room (string file);
void make_weapon(object npc);
void make_npc(object room);
void refresh_sjsz();
void auto_check();
void clean_sjsz();
int do_back_stuff(string id);
void create() {
set_name("群英会大主持", ({ "da zhuchi","zhuchi","host" }));
set("unit", "座");
set("long", "他就是天下英雄报名参加群英会团体比武大赛的总主持人。
他手持一个牌子,上书:
报名指令:
teamup 队名 玩家1 玩家2 ... ... 玩家19 (报名组队,每队最少三人,最多允许20人一队。队名可以带颜色)
例如: teamup $HIW$飞虎队$NOR$ sdong sdon sdo
or baoming 队名 玩家1 玩家2 ... ... 玩家19 (报名组队,每队最少三人,最多允许20人一队。队名可以带颜色)
例如: baoming $HIW$飞虎队$NOR$ sdong sdon sdo
dismiss n (解散第N队)
kickout id (开除某玩家出队)
challenge n (挑战第N队)
accept n(接受第N队挑战)
clean id(清除玩家比武记录)
help sjsz
\n");
/*
set("no_get", 1);
set("chat_chance", 240);
set("chat_msg", ({
(: auto_check :),
}) );
*/
/*
set("chat_chance_combat", 240);
set("chat_msg_combat", ({
(: auto_check :),
}) );
*/
set("inquiry", ([
"试剑山庄": "试剑山庄是闻名遐迩的武林圣地。各路英雄都争相来这里比武。",
"sjsz": "试剑山庄是闻名遐迩的武林圣地。各路英雄都争相来这里比武。",
"baoming": "baoming 队名 玩家1 玩家2 ... ... 玩家19 (报名组队,每队最少三人,最多允许20人一队。队名可以带颜色)",
"join": "baoming 队名 玩家1 玩家2 ... ... 玩家19 (报名组队,每队最少三人,最多允许20人一队。队名可以带颜色)",
//"askback": "askback",
]));
setup();
}
void init() {
object me = this_player();
//add_action("do_back_stuff", "askback");
if( !query("bwdh") || me->query("judge") || wizardp(me) )
{
add_action("do_add", "add");
add_action("do_add", "teamup");
add_action("do_discard", "dismiss");
add_action("do_discard", "discard");
add_action("do_challenge", "challenge");
add_action("do_accept", "accept");
add_action("do_fire", "kickout");
add_action("do_clean", "clean");
add_action("do_auto_teamup", "auto");
if( me->query("judge") || wizardp(me) )
{
add_action("do_assign", "assign");
add_action("do_judge", "judge");
add_action("do_duet", "duet");
add_action("do_goon", "goon");
add_action("do_start","start");
add_action("do_stop","stop");
add_action("do_refresh","refresh");
}
}
}
int do_start(string arg)
{
object me = this_player();
if( query("bwdh") ) return notify_fail("比武已经开始了。\n");
message_vision(HIR"$N宣布群英会现在开始!\n"NOR,me);
CHANNEL_D->do_channel(me, "chat", HIR"宣布群英会现在开始!\n"NOR);
set("bwdh",1);
return 1;
}
int do_stop(string arg)
{
object me = this_player();
if( !query("bwdh") ) return notify_fail("比武还没开始呢。\n");
delete("bwdh");
message_vision(HIR"宣布群英会结束!\n"NOR,me);
CHANNEL_D->do_channel(me, "chat", HIR"宣布群英会结束!\n"NOR);
return 1;
}
void full_all(object me)
{
if( !living(me) ) me->revive(0);
me->set("eff_jing", (int)me->query("max_jing"));
me->set("jing", (int)me->query("max_jing"));
me->set("eff_qi", (int)me->query("max_qi"));
me->set("qi", (int)me->query("max_qi"));
me->set("jingli", (int)me->query("max_jingli"));
me->set("neili", (int)me->query("max_neili"));
me->set("food", (int)me->max_food_capacity());
me->set("water", (int)me->max_water_capacity());
me->remove_all_killer();
me->clear_condition();
}
int do_back_stuff(string id)
{
object *inv, cangku, *basket;
int i;
object player=this_player();
cangku = find_object(CANGKU);
if (! objectp(cangku)) {
cangku = load_object(CANGKU);
if (!objectp(cangku)) {
message_vision("$N请告诉 wiz: cangku not found\n", player);
return 1;
}
}
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 1;
}
void my_destruct(object obj)
{
int i;
object *inv;
string err;
if (obj && objectp(obj) ) {
inv = all_inventory(obj);
i = sizeof(inv);
while(i--)
{
if( inv[i] && objectp(inv[i]) && userp(inv[i]) )
{
call_out("move_me",1+random(4),inv[i],"/d/bwdh/sjsz/kantai_w1.c");
if( !living(inv[i]) ) inv[i]->revive(1);
full_all(inv[i]);
nude(inv[i]);
}
else
{
if(inv[i] && objectp(inv[i]))
{
my_destruct(inv[i]);
}
}
}
if( userp(obj) )
{
call_out("move_me",1+random(4),obj,"/d/bwdh/sjsz/kantai_w1.c");
if( !living(obj) )obj->revive(1);
full_all(obj);
nude(obj);
}
else destruct(obj);
}
}
void nude(object obj)
{
int i;
object *inv;
if (obj && objectp(obj) ) {
inv = all_inventory(obj);
i = sizeof(inv);
while(i--)
{
if( inv[i] && objectp(inv[i]) && userp(inv[i]) )
{
call_out("move_me",1+random(4),inv[i],"/d/bwdh/sjsz/kantai_w1.c");
if( !living(inv[i]) ) inv[i]->revive(1);
full_all(inv[i]);
nude(inv[i]);
}
else
{
if(inv[i] && objectp(inv[i]))
{
return my_destruct(inv[i]);
//destruct(inv[i]);
}
}
}
}
}
void move_me(object me, string place)
{
object obj;
if( !me || !objectp(me) || !userp(me) )return;
nude(me);
full_all(me);
if ( (obj = find_object(place)) && obj && objectp(obj) ) {
me->set("sjsz/fighting",1);
me->move(obj);
}
else if ( (obj = load_object(place)) && obj && objectp(obj) ) {
me->set("sjsz/fighting",1);
me->move(obj);
}
}
int update_player(object me)
{
object env, link_ob, obj;
env = environment(me);
// Save the data and exec the player to his/her link object.
me->save();
// First, create the new body.
link_ob = me->query_temp("link_ob");
obj = LOGIN_D->make_body(link_ob);
if (!obj) return 0;
exec(link_ob, me);
destruct(me);
// Restore new body and exec to it via enter_world in LOGIN_D
obj->restore();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -