⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 copyskill.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
/* 本程序出自《终极地狱》的一个巫师命令,可以把对象的所有武功和状态复制。对没有CALL命令的底等级巫师有很大用处。*/ 
#include <ansi.h>//继承颜色

inherit F_CLEAN_UP;

private int copy_skill(object me, object ob);//定义一个私有函数
int help();//定义HELP函数

int main(object me, string arg)
{
object ob;

if (! arg)//没有参数时就调用HELP函数
{
help();
return 1;
}

if (! objectp(ob = present(arg, environment(me))))//判断对象是否在身旁
return notify_fail("你眼前没有这个人。\n");

if (! wizardp(me))//判断是否是巫师
return notify_fail("只有巫师才可以复制别人的武功。\n");

copy_skill(me, ob);//开始调用函数COPY武功和状态
message_vision(HIM "$N口中念念有词,只见一道红光笼罩了$N和$n。\n" NOR,
me, ob);//显示出状态
return 1;
}

private int copy_skill(object me, object ob)
{
mapping hp_status, skill_status, map_status, prepare_status;
mapping my;
string *sname, *mname, *pname;
int i, temp;

if (mapp(skill_status = me->query_skills()))//判断自己是否有功夫,如有将用这个函数全部删除
{
skill_status = me->query_skills();
sname = keys(skill_status);//传回所有自己的功夫阵列

temp = sizeof(skill_status);
for (i = 0; i < temp; i++)
me->delete_skill(sname[i]);//删除自己所有功夫
}

if (mapp(skill_status = ob->query_skills()))//判断对象是否有功夫,如有将用这个函数复制全部功夫
{
skill_status = ob->query_skills();
sname = keys(skill_status);//传回所有对象功夫阵列

for (i = 0; i < sizeof(skill_status); i++)
me->set_skill(sname[i], skill_status[sname[i]]);//为自己复制所有功夫
}

if (mapp(map_status = me->query_skill_map()))//判断自己是否有已装配的基本功夫
{
mname = keys(map_status);

temp = sizeof(map_status);
for (i = 0; i < temp; i++)
me->map_skill(mname[i]);
}

if (mapp(map_status = ob->query_skill_map()))//判断对象所装配的基本功夫,如有将用这个函数复制
{
mname = keys(map_status);

for(i = 0; i < sizeof(map_status); i++)
me->map_skill(mname[i], map_status[mname[i]]);
}

if (mapp(prepare_status = me->query_skill_prepare()))//判断自己是否有已装配的特殊功夫
{
pname = keys(prepare_status);

temp = sizeof(prepare_status);
for(i = 0; i < temp; i++)
me->prepare_skill(pname[i]);
}

if (mapp(prepare_status = ob->query_skill_prepare()))//判断对象所装配的特殊功夫,如有将用这个函数复制
{
pname = keys(prepare_status);

for(i = 0; i < sizeof(prepare_status); i++)
me->prepare_skill(pname[i], prepare_status[pname[i]]);
}

hp_status = ob->query_entire_dbase();//得到对象现有状态
my = me->query_entire_dbase();//得到自己现有状态

my["str"] = hp_status["str"];//开始复制状态
my["int"] = hp_status["int"];
my["con"] = hp_status["con"];
my["dex"] = hp_status["dex"];

my["max_qi"] = hp_status["max_qi"];
my["eff_qi"] = hp_status["eff_qi"];
my["qi"] = hp_status["qi"];
my["max_jing"] = hp_status["max_jing"];
my["eff_jing"] = hp_status["eff_jing"];
my["jing"] = hp_status["jing"];
my["max_neili"] = hp_status["max_neili"];
my["neili"] = hp_status["neili"];
my["jiali"] = hp_status["jiali"];
my["combat_exp"] = hp_status["combat_exp"];//结束复制状态

me->reset_action();//更新身体
return 1;
}

int help()//帮助函数
{
write( @TEXT
指令格式:copyskill 对象

这个指令让你复制对象的战斗经验和所有的武功技能。
TEXT
);
return 1 ;
}

⌨️ 快捷键说明

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