📄 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 = ({
"/d/biwu/ouyangfeng",
"/quest/menpaijob/emei/miejue",
"/kungfu/class/emei/zhou",
"/kungfu/class/gaibang/hong",
"/kungfu/class/huashan/feng",
"/kungfu/class/huashan/yue-buqun",
"/kungfu/class/shaolin/du-jie",
"/kungfu/class/shaolin/du-nan",
"/kungfu/class/shaolin/da-mo",
"/kungfu/class/wudang/zhang",
"/kungfu/class/xingxiu/ding",
"/kungfu/class/xueshan/fawang",
"/kungfu/class/xueshan/jiumozhi",
"/quest/menpaijob/shenlong/hong",
"/d/biwu/dongfang",
});
string *middle_npc = ({
"/kungfu/class/btshan/ouyangke",
"/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/shengdi",
"/kungfu/class/xueshan/lingzhi",
"/d/quanzhen/npc/hao",
"/d/quanzhen/npc/ma",
"/d/quanzhen/npc/tan",
"/d/quanzhen/npc/liu",
});
string *low_npc = ({
"/d/taishan/npc/tianmen",
"/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",
"/d/songshan/npc/zuo",
"/d/henshan/npc/moda",
"/d/hengshan/npc/xian",
"/d/qingcheng/npc/hai",
"/kungfu/class/shenlong/su",
"/kungfu/class/shenlong/wugen",
"/d/xingxiu/npc/gushou",
"/d/xingxiu/npc/boshou",
"/d/xingxiu/npc/haoshou",
"/d/xingxiu/npc/caihua",
});
string *misc_npc = ({
"/d/shenlong/npc/dushe",
"/d/shenlong/npc/fushe",
"/d/wudujiao/npc/baidu5",
"/d/wudujiao/npc/chanchu5",
"/d/wudujiao/npc/laohu2",
"/d/wudujiao/npc/qiandu5",
"/d/wudujiao/npc/wandu5",
"/d/wudujiao/npc/wolf2",
"/d/wudujiao/npc/wugong3",
"/d/wudujiao/npc/xiezi3",
"/d/wudujiao/npc/zhangao",
"/d/wudujiao/npc/zhanglang",
"/d/wudujiao/npc/zhizhu3",
});
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",
"/quest/skills2/shop/shops/hammer.c",
"/quest/skills2/shop/shops/sword.c", // 倚天剑
"/d/bwdh/sjsz/obj/yuxiao.c",// : 1, // 玉箫
"/d/shaolin/obj/fumo-dao.c",// : 1, // 伏魔刀
"/d/jinshe/obj/jinshe-jian.c",// : 1, // 金蛇剑
"/d/bwdh/sjsz/obj/eyujian.c",// : 1, // 鳄嘴剪
"/d/bwdh/sjsz/obj/eweibian.c",// : 1, // 鳄尾鞭
"/d/bwdh/sjsz/obj/xuantie-jian.c",// : 1, // 玄铁重剑
"/d/jinshe/obj/jinshe-zhui.c", // : 1, // 金蛇锥
"/kungfu/class/gaibang/obj/yuzhu_zhang.c",// : 1, // 玉竹杖
"/d/bwdh/sjsz/obj/qijue.c",// : 1, // 七绝针
"/d/bwdh/sjsz/obj/yuchang-jian.c",// : 1, // 鱼肠剑
"/d/bwdh/sjsz/obj/zhenwu.c",// : 1, // 真武剑
"/d/bwdh/sjsz/obj/dulong-bian.c", //
"/d/bwdh/sjsz/obj/tulong-dao.c", //
"/d/bwdh/sjsz/obj/fan.c", //
"/d/bwdh/sjsz/obj/jingun.c",//
"/d/bwdh/sjsz/obj/falun5.c",//
"/d/bwdh/sjsz/obj/qixing-jian.c", //
"/d/bwdh/sjsz/obj/zijin-dao.c", //
"/d/bwdh/sjsz/obj/heilong-bian.c ", //
"/d/bwdh/sjsz/obj/songwen-jian.c ", //
"/d/bwdh/sjsz/obj/youlong.c ", //
"/d/shaolin/obj/jingang-zhao.c",//: 1, // 金刚罩
"/d/bwdh/sjsz/obj/wucan-yi.c",// : 1, // 乌蚕衣
"/kungfu/class/taohua/obj/ruanwei.c",// : 1, // 软猬甲
"/d/bwdh/sjsz/obj/xuedao.c",// : 1, // 血刀
"/d/bwdh/sjsz/obj/yuandao.c",// : 1,
"/d/bwdh/sjsz/obj/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","refreshsjsz");
}
}
}
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 + -