📄 skills.c
字号:
//Cracked by Roath// skills.c#include <ansi.h>inherit F_CLEAN_UP;string *skill_level_desc = ({ BLU "初学乍练" NOR, BLU "初窥门径" NOR, BLU "粗通皮毛" NOR, HIB "略知一二" NOR, HIB "半生不熟" NOR, HIB "马马虎虎" NOR, YEL "略有小成" NOR, YEL "已有小成" NOR, YEL "渐入佳境" NOR, YEL "驾轻就熟" NOR, YEL "了然于胸" NOR, YEL "出类拔萃" NOR, CYN "略有大成" NOR, CYN "已有大成" NOR, CYN "心领神会" NOR, CYN "无可匹敌" NOR, CYN "神乎其技" NOR, HIC "出神入化" NOR, HIC "豁然贯通" NOR, HIC "登峰造极" NOR, HIC "技冠群雄" NOR, HIC "举世无双" NOR, HIC "一代宗师" NOR, HIC "震古铄今" NOR, HIC "傲视群雄" NOR, HIC "所向披靡" NOR, HIC "惊世骇俗" NOR, HIY "独步天下" NOR, HIY "深不可测" NOR, HIY "返朴归真" NOR, HIY "天下无敌" NOR});string *knowledge_level_desc = ({ BLU "新学乍用" NOR, BLU "不甚了了" NOR, BLU "不知端倪" NOR, HIB "平淡无奇" NOR, HIB "司空见惯" NOR, HIB "初窥门径" NOR, MAG "略知一二" NOR, MAG "茅塞顿开" NOR, MAG "略识之无" NOR, YEL "滚瓜烂熟" NOR, YEL "马马虎虎" NOR, YEL "轻车熟路" NOR, HIM "运用自如" NOR, HIM "触类旁通" NOR, HIM "深入浅出" NOR, CYN "已有小成" NOR, CYN "心领神会" NOR, CYN "了然於胸" NOR, CYN "见多识广" NOR, CYN "无所不通" NOR, CYN "卓尔不群" NOR, HIC "满腹经纶" NOR, HIC "豁然贯通" NOR, HIC "博古通今" NOR, HIC "博大精深" NOR, HIC "超群绝伦" NOR, HIC "举世无双" NOR, HIY "独步天下" NOR, HIY "震古铄今" NOR, HIY "超凡入圣" NOR, HIY "深不可测" NOR});string skill_level(string, int);int main(object me, string arg){ object ob,*list, couple_ob; mapping skl, lrn, map; string *sname, *mapped,target,cardname; string *sk; int i,j,marry_flag;; seteuid(getuid()); if(!arg) ob = me; else{ ob = present(arg, environment(me)); if (!ob) ob = find_player(arg); if (!ob) ob = find_living(arg); if (!ob) ob = LOGIN_D->find_body(arg); if (!ob || !me->visible(ob)) return notify_fail("你要察看谁的技能?\n"); } target = (string) me->query("couple/couple_id"); if(stringp(target)) couple_ob = find_player(target); if( ob!=me && !wizardp(me) && !ob->is_apprentice_of(me) && !me->is_apprentice_of(ob) && ob!=couple_ob && !ob->query("skill_public") && !ob->query("pubmaster") ) return notify_fail("只有管理或有师徒关系的人能察看他人的技能。\n"); if (me->is_busy()) return notify_fail("你正忙着呢!\n"); skl = ob->query_skills(); if(!sizeof(skl)) { write( (ob==me ? "你" : ob->name()) + "目前并没有学会任何技能。\n"); return 1; }me->start_busy(1); write( "[44;1m[1;33m"+(ob==me ? "你" : ob->name()) +"[44;1m[1;33m目前所学过的技能:(共"+chinese_number(sizeof(skl))+"项技能) [37;0m\n\n"); sname = sort_array( keys(skl), (: strcmp :) ); map = ob->query_skill_map(); if( mapp(map) ) mapped = values(map); if( !mapped ) mapped = ({}); lrn = ob->query_learned(); if( !mapp(lrn) ) lrn = ([]); j=0; sk = keys(skl); for(i=0; i<sizeof(skl); i++) { if( skl[sk[i]]<=0 ) { map_delete(skl, sk[i]); me->map_skill("unarmed"); me->map_skill("hammer"); me->map_skill("blade"); me->map_skill("sword"); me->map_skill("staff"); me->map_skill("club"); me->map_skill("throwing"); me->map_skill("parry"); me->map_skill("dodge"); me->map_skill("magic"); me->map_skill("spells"); me->map_skill("leg"); me->map_skill("axe"); me->map_skill("array"); me->map_skill("whip"); me->map_skill("finger"); me->map_skill("hand"); me->map_skill("cuff"); me->map_skill("claw"); me->map_skill("strike"); me->map_skill("force"); me->prepare_skill("unarmed"); me->prepare_skill("hammer"); me->prepare_skill("blade"); me->prepare_skill("sword"); me->prepare_skill("staff"); me->prepare_skill("club"); me->prepare_skill("throwing"); me->prepare_skill("parry"); me->prepare_skill("dodge"); me->prepare_skill("magic"); me->prepare_skill("spells"); me->prepare_skill("leg"); me->prepare_skill("axe"); me->prepare_skill("array"); me->prepare_skill("whip"); me->prepare_skill("finger"); me->prepare_skill("hand"); me->prepare_skill("cuff"); me->prepare_skill("claw"); me->prepare_skill("strike"); me->reset_action();return notify_fail(HIR"你的武功有问题!请重新enable所有武功\n"NOR);}} for(i=0; i<sizeof(skl); i++) { if(SKILL_D(sname[i])->type()=="knowledge"){ j=j+1; } } if(j>0) { printf("[32m┌[42m%21s [40m[32m──────────────────────┐[37;0m\n", "[37m"+chinese_number(j)+"项知识");} for(i=0; i<sizeof(skl); i++) { if(SKILL_D(sname[i])->type()=="knowledge"){ printf("[32m│[37;0m%s%s%-40s" NOR " - %-10s %3d/%6d[32m│[37;0m\n", (member_array(sname[i], mapped)==-1? " ": "[1;32m□[37;0m"), ((lrn[sname[i]] >= (skl[sname[i]]+1) * (skl[sname[i]]+1)) ? HIM : ""), (to_chinese(sname[i]) + " (" + sname[i] + ")"), skill_level(SKILL_D(sname[i])->type(), skl[sname[i]]), skl[sname[i]], (int)lrn[sname[i]] ); } } if(j>0) { write("[32m└────────────────────────────────┘[37;0m\n");} j=0; for(i=0; i<sizeof(skl); i++) { if(SKILL_D(sname[i])->type() != "knowledge" && (sname[i] == "force" || sname[i] == "cuff" || sname[i] == "strike" || sname[i] == "finger" || sname[i] == "claw" || sname[i] == "hand" || sname[i] == "array" || sname[i] == "sword" || sname[i] == "blade" || sname[i] == "club" || sname[i] == "pike" || sname[i] == "staff" || sname[i] == "stick" || sname[i] == "hook" || sname[i] == "dodge" || sname[i] == "parry" || sname[i] == "whip" || sname[i] == "hammer" || sname[i] == "begging" || sname[i] == "training" || sname[i] == "checking" || sname[i] == "digging" || sname[i] == "leg" || sname[i] == "feixing-shu" || sname[i] == "archery" || sname[i] == "throwing" || sname[i] == "jinshe-zhuifa" || sname[i] == "axe" || sname[i] == "unarmed" )){ j=j+1; } } if(j>0) { printf("[32m┌[42m%21s [40m[32m──────────────────────┐[37;0m\n", "[37m"+chinese_number(j)+"项基本功夫");} for(i=0; i<sizeof(skl); i++) { if(SKILL_D(sname[i])->type() != "knowledge" && (sname[i] == "force" || sname[i] == "cuff" || sname[i] == "strike" || sname[i] == "finger" || sname[i] == "claw" || sname[i] == "hand" || sname[i] == "array" || sname[i] == "sword" || sname[i] == "blade" || sname[i] == "club" || sname[i] == "pike" || sname[i] == "staff" || sname[i] == "stick" || sname[i] == "hook" || sname[i] == "dodge" || sname[i] == "parry" || sname[i] == "whip" || sname[i] == "hammer" || sname[i] == "begging" || sname[i] == "training" || sname[i] == "checking" || sname[i] == "digging" || sname[i] == "leg" || sname[i] == "feixing-shu" || sname[i] == "archery" || sname[i] == "throwing" || sname[i] == "jinshe-zhuifa" || sname[i] == "axe" || sname[i] == "unarmed" )){ printf("[32m│[37;0m%s%s%-40s" NOR " - %-10s %3d/%6d[32m│[37;0m\n", (member_array(sname[i], mapped)==-1? " ": "[1;32m□[37;0m"), ((lrn[sname[i]] >= (skl[sname[i]]+1) * (skl[sname[i]]+1)) ? HIM : ""), (to_chinese(sname[i]) + " (" + sname[i] + ")"), skill_level(SKILL_D(sname[i])->type(), skl[sname[i]]), skl[sname[i]], (int)lrn[sname[i]] ); } } if(j>0) { write("[32m└────────────────────────────────┘[37;0m\n");} j=0; for(i=0; i<sizeof(skl); i++) { if(SKILL_D(sname[i])->type() != "knowledge" && (sname[i] != "force" && sname[i] != "cuff" && sname[i] != "strike" && sname[i] != "finger" && sname[i] != "claw" && sname[i] != "hand" && sname[i] != "kick" && sname[i] != "sword" && sname[i] != "blade" && sname[i] != "club" && sname[i] != "pike" && sname[i] != "staff" && sname[i] != "stick" && sname[i] != "hook" && sname[i] != "dodge" && sname[i] != "parry" && sname[i] != "whip" && sname[i] != "hammer" && sname[i] != "begging" && sname[i] != "training" && sname[i] != "checking" && sname[i] != "digging" && sname[i] != "swimming" && sname[i] != "feixing-shu" && sname[i] != "archery" && sname[i] != "throwing" && sname[i] != "jinshe-zhuifa" && sname[i] != "axe" && sname[i] != "unarmed" )){ j=j+1; } } if(j>0) { printf("[32m┌[42m%21s [40m[32m──────────────────────┐[37;0m\n", "[37m"+chinese_number(j)+"项特殊功夫");} for(i=0; i<sizeof(skl); i++) { if(SKILL_D(sname[i])->type() != "knowledge" && (sname[i] != "force" && sname[i] != "cuff" && sname[i] != "strike" && sname[i] != "finger" && sname[i] != "claw" && sname[i] != "hand" && sname[i] != "kick" && sname[i] != "sword" && sname[i] != "blade" && sname[i] != "club" && sname[i] != "pike" && sname[i] != "staff" && sname[i] != "stick" && sname[i] != "hook" && sname[i] != "dodge" && sname[i] != "parry" && sname[i] != "whip" && sname[i] != "hammer" && sname[i] != "begging" && sname[i] != "training" && sname[i] != "checking" && sname[i] != "digging" && sname[i] != "swimming" && sname[i] != "feixing-shu" && sname[i] != "archery" && sname[i] != "throwing" && sname[i] != "jinshe-zhuifa" && sname[i] != "axe" && sname[i] != "unarmed" && sname[i] != "leg" )){ printf("[32m│[37;0m%s%s%-40s" NOR " - %-10s %3d/%6d[32m│[37;0m\n", (member_array(sname[i], mapped)==-1? " ": "[1;32m□[37;0m"), ((lrn[sname[i]] >= (skl[sname[i]]+1) * (skl[sname[i]]+1)) ? HIM : ""), (to_chinese(sname[i]) + " (" + sname[i] + ")"), skill_level(SKILL_D(sname[i])->type(), skl[sname[i]]), skl[sname[i]], (int)lrn[sname[i]] ); } } if(j>0) { write("[32m└────────────────────────────────┘[37;0m\n");} return 1;}string skill_level(string type, int level){ int grade; grade = level / 10; switch(type) { case "knowledge": if( grade >= sizeof(knowledge_level_desc) ) grade = sizeof(knowledge_level_desc)-1; return knowledge_level_desc[grade]; default: if( grade >= sizeof(skill_level_desc) ) grade = sizeof(skill_level_desc)-1; return skill_level_desc[grade]; }}string pet_skill(object ob){ string desc; object *list, couple_ob; mapping skl, lrn, map; string *sname, *mapped,target,cardname; int i, marry_flag; skl = ob->query_skills(); if(!sizeof(skl)) { desc = ob->name() + "目前并没有学会任何技能。\n"; return desc; } desc = ob->name() +"目前所学过的技能:\n\n"; sname = sort_array( keys(skl), (: strcmp :) ); map = ob->query_skill_map(); if( mapp(map) ) mapped = values(map); if( !mapped ) mapped = ({}); lrn = ob->query_learned(); if( !mapp(lrn) ) lrn = ([]); for(i=0; i<sizeof(skl); i++) { desc += sprintf("%s%s%-40s" NOR " - %-10s %3d/%5d\n", (lrn[sname[i]] >= (skl[sname[i]]+1) * (skl[sname[i]]+1)) ? HIM : "", (member_array(sname[i], mapped)==-1? " ": "*"), to_chinese(sname[i]) + " (" + sname[i] + ")", skill_level(SKILL_D(sname[i])->type(), skl[sname[i]]), skl[sname[i]], (int)lrn[sname[i]], ); } return desc +"\n";}int help(object me){ write(@HELP指令格式 : skills|cha [<某人>]这个指令可以让你(你)查询所学过的技能。你也可以指定一个和你有师徒关系的对象,用 skills 可以查知对方的技能状况。巫师可以查询任何人或 NPC 的技能状况。HELP ); return 1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -