int main(object me, string arg) { object obj, old_target; seteuid(getuid()); if(!me->is_fighting()) return notify_fail("只有战斗中才能用。\n"); if(!me->query("sec_kee")) return notify_fail("你的身上没有灵气。\n"); if( !wizardp(me) && environment(me)->query("no_fight") ) return notify_fail("这里禁止战斗。\n"); if(!arg || !objectp(obj = present(arg, environment(me)))) return notify_fail("你想攻击谁?\n"); if( !obj->is_character() ) return notify_fail("看清楚一点,那并不是生物。\n"); if(wizardp(me)&&!wizardp(obj)&&wizhood(me)!="(manager)"&&wizhood(me)!="(admin)"&&wizhood(me)!="(arch)") return notify_fail("巫师不能对玩者使用灵气。\n"); if(obj==me) return notify_fail("你不能攻击自己。\n"); SEC_KEE_D(me->query("sec_kee"))->kee_out(me,obj); return 1; }
int main(object me, string arg) { object ob; me=this_player(); seteuid(geteuid(me)); if( !arg ) { if( objectp(ob = query_snooping(me)) ) write("你现在正在监听" + ob->query("name") + "所收到的讯息。\n"); return 1; } else if( arg=="none" ) { if( objectp(ob = query_snooping(me))) message_vision (HIW + "$N停止监听$n所收到的讯息。\n"+ NOR,me,ob); snoop(me,); write("Ok.\n"); return 1; } ob = find_player(arg); if (!ob) ob = find_player(arg); if(!ob || (!ob->visible(ob))) return notify_fail("没有这个人。\n"); if (!interactive(ob)) return notify_fail("不能监听断线中的使用者所收到的讯息。\n"); if(wizhood(ob)=="(admin)"||wizhood(ob)=="(manager)") return notify_fail("你不能窃听大神。\n"); if( me==ob ) return notify_fail("请用 snoop none 解除监听。\n"); snoop(me, ob); if( userp(ob) ) log_file("SNOOP_PLAYER", sprintf("%s(%s) snoops %s on %s.\n", me->name(1), geteuid(me), ob->name(1), ctime(time()) ) ); write (HIW"你开始监听"+ob->name()+"所收到的讯息。\n" + NOR); tell_object(ob, HIW + me->name(1) + "开始监听你所收到的讯息。\n" + NOR); return 1; }
int main(object me, string arg) { string *list, hood = "", str; int j = 0; list = sort_array(SECURITY_D->query_wizlist(), (: level :) ); str = HIC+CHINESE_MUD_NAME+NOR +"巫师董事会成员:\n"; str += "───────────────────\n"; for(int i=0; i<sizeof(list); i++, j++) { if (hood!= wiz_rank(wizhood(list[i]))) { hood = wiz_rank(wizhood(list[i])); if (j%7) str += "\n"; str += hood; str = replace_string(str,"(",HIG); str = replace_string(str,")",": "NOR); j = 0; } str += sprintf(" %s%s", list[i], ( j%7==6 ) ? "\n" : ( i<sizeof(list)-1 && hood ==wizhood(list[i+1]) ) ? ", " : "" ); } str += "\n───────────────────\n"; str += sprintf("目前一共有: %s个巫师\n",chinese_number(sizeof(list)) ); me->start_more(str); return 1; }
string query_rank(object ob) { if( ob->is_ghost() ) return HIB "【 鬼 魂 】" NOR; switch(ob->query("gender")) { case "女性": switch(wizhood(ob)) { case "(admin)": return HIW "【 女 神 】" NOR; case "(arch)": return HIY "【 大魔女 】" NOR; case "(wizard)": return HIG "【 魔 女 】" NOR; case "(apprentice)": return HIC "【 小魔女 】" NOR; case "(immortal)": return HIC "【 仙 女 】" NOR; default: if( ((int)ob->query("PKS") > 100) && ((int)ob->query("PKS") > (int)ob->query("MKS")) ) return "【 杀人魔 】"; if( (int)ob->query("thief") > 10 ) return "【 惯 窃 】"; switch(ob->query("class")) { case "bonze": return "【 尼 姑 】"; case "taoist": return "【 女 冠 】"; case "bandit": return "【 女飞贼 】"; case "dancer": return "【 舞 妓 】"; case "scholar": return "【 才 女 】"; case "officer": return "【 女 官 】"; case "fighter": return "【 女武者 】"; case "swordsman": return "【 女剑士 】"; case "alchemist": return "【 方 士 】"; case "shaman": return "【 巫 医 】"; case "beggar": return "【 叫化子 】"; default: return "【 平 民 】"; } } default: switch(wizhood(ob)) { case "(admin)": return HIW "【 天 神 】" NOR; case "(arch)": return HIY "【 大巫师 】" NOR; case "(wizard)": return HIG "【 巫 师 】" NOR; case "(apprentice)": return HIC "【巫师学徒】" NOR; case "(immortal)": return HIC "【 仙 人 】" NOR; default: if( ((int)ob->query("PKS") > 100) && ((int)ob->query("PKS") > (int)ob->query("MKS")) ) return "【 杀人魔 】"; if( (int)ob->query("thief") > 10 ) return "【 惯 窃 】"; switch(ob->query("class")) { case "bonze": return "【 僧 人 】"; case "taoist": return "【 道 士 】"; case "bandit": return "【 盗 贼 】"; case "scholar": return "【 书 生 】"; case "officer": return "【 官 差 】"; case "fighter": return "【 武 者 】"; case "swordsman": return "【 剑 士 】"; case "alchemist": return "【 方 士 】"; case "shaman": return "【 巫 医 】"; case "beggar": return "【 叫化子 】"; default: return "【 平 民 】"; } } } }
int main(object me, string arg) { object ob, ob1; if( !arg ) { if( objectp(ob = query_snooping(me)) ) write("─у╧╓╘┌╒¤╘┌╝р╠¤" + ob->query("name") + "╦∙╩╒╡╜╡─╤╢╧вбг\n"); else write("─у╧╓╘┌▓╗╘┌╝р╠¤╚╬║╬╨┼╧вбг\n"); return 1; } else if( arg=="none" ) { if( objectp(ob = query_snooping(me)) && wiz_level(ob) >= wiz_level(me) ) tell_object(ob, HIW + me->name(1) + "═г╓╣╝р╠¤─у╦∙╩╒╡╜╡─╤╢╧вбг\n" NOR); snoop(me); if (objectp(ob)) write("─у╧╓╘┌═г╓╣╝р╠¤" + ob->query("name") + "╦∙╩╒╡╜╡─╤╢╧вбг\n"); else write("─у╧╓╘┌▓╗╘┌╝р╠¤╚╬║╬╨┼╧вбг\n"); return 1; } ob = find_player(arg); if(!ob) ob = find_living(arg); if(!ob || !me->visible(ob)) return notify_fail("├╗╙╨╒т╕Ў╚╦бг\n"); if( wizhood(me) != "(admin)" && wiz_level(me) <= wiz_level(ob) ) return notify_fail("─у├╗╙╨╝р╠¤" + ob->name() + "╦∙╩╒╠¤╤╢╧в╡─╚и└√бг\n"); if( me==ob ) return notify_fail("╟ы╙├ snoop none ╜т│¤╝р╠¤бг\n"); if (objectp(ob1=query_snoop(ob))) return notify_fail(ob1->name()+"╒¤╘┌╝р╠¤"+ob->name()+"╡─╨┼╧вбг\n"); if (ob->query_temp("netdead",1)) return notify_fail("┤╦╚╦╒¤┤ж╘┌╢╧╧▀╫┤╠мбг\n"); if (!userp(ob)) return notify_fail("├╗╖и╟╘╠¤NPC╨┼╧в╡─бг\n"); snoop(me, ob); write("─у╧╓╘┌┐к╩╝╟╘╠¤" + ob->name(1) + "╦∙╩╒╡╜╡─╤╢╧вбг\n"); if( userp(ob) ) log_file("SNOOP_PLAYER", sprintf("%s(%s) snoops %s on %s.\n", me->name(1), geteuid(me), ob->name(1), ctime(time()) ) ); if( wizardp(ob) && wizhood(me) != "(admin)") tell_object(ob, HIW + me->name(1) + "┐к╩╝╝р╠¤─у╦∙╩╒╡╜╡─╤╢╧вбг\n" + NOR); return 1; }
int main(object me, string arg) { object ob; string old_status, new_status; int my_level, ob_level, level; if( me!=this_player(1) ) return 0; if( !arg || sscanf(arg, "%s %s", arg, new_status)!=2 ) return notify_fail("指令格式:promote <使用者> <等级>\n"); if ( wiz_level(new_status) < 0 ) return notify_fail("没有这种等级。\n"); if( !objectp(ob = present(arg, environment(me))) || !userp(ob) ) return notify_fail("你只能改变使用者的权限。\n"); if( wiz_level(me) > wiz_level(new_status) ) return notify_fail("你没有这种权力。\n"); old_status = wizhood(ob); seteuid(getuid()); if( !(SECURITY_D->set_status(ob, new_status)) ) return notify_fail("修改失败。\n"); message_vision("$N将$n的权限从 " + old_status + " 改为 " + new_status + " 。\n", me, ob); seteuid(getuid()); ob->setup(); return 1; }
int main(object me, string arg) { object user; string srcstr, dststr; string status; status = wizhood(me); if( me!=this_player(1) || wiz_level(me) < wiz_level(status) ) return notify_fail("你没有权力使用这个指令。\n"); if (!arg) return 0; if (sscanf(arg, "%s %s", srcstr, dststr)!=2) return 0; // login data seteuid(getuid()); user = new(LOGIN_OB); if( (string)user->set("id", srcstr) != srcstr ) return notify_fail("Failed setting user name.\n"); if (! user->restore()) return notify_fail("没有这个玩家。\n"); export_uid(user); if( (string)user->set("id", dststr) != dststr ) return notify_fail("Failed setting user name.\n"); if (!user->save()) return notify_fail("存档失败!\n"); destruct(user); tell_object(me, "玩家 "+srcstr+" 数据成功转换至玩家 "+dststr+" !\n"); return 1; }
int main(object me, string arg) { string name, reason; string status; int day; status = wizhood(me); if( me!=this_player(1) || wiz_level(me) < wiz_level(status) ) return notify_fail("你没有权力使用这个指令。\n"); if( !arg ) return notify_fail(SYNTAX); if( sscanf(arg, "%d", day) && day >= 0) return do_purge_players(day); if( sscanf(arg, "%s because %s", name, reason)!=2 ) return notify_fail(SYNTAX); seteuid(getuid()); if( file_size(DATA_DIR + "login/" + name[0..0] + "/" + name + SAVE_EXTENSION)<0 ) return notify_fail("没有这位使用者。\n"); rm(DATA_DIR + "login/" + name[0..0] + "/" + name + SAVE_EXTENSION); rm(DATA_DIR + "user/" + name[0..0] + "/" + name + SAVE_EXTENSION); write( "使用者 " + capitalize(name) + " 删除掉了。\n"); log_file("static/PURGE", sprintf("[%s] %s purged %s because %s.\n", ctime(time())[0..15], geteuid(this_player(1)), name, reason)); return 1; }
int main(object me, string arg) { int i; string direc,*dir, roomname; string status; object room; if(!me->query("env/yesiknow")) return notify_fail("╒т╕Ў╓╕┴ю╥╤╛н▒╗╖╧│¤┴╦гб\n"); status = wizhood(me); if( me!=this_player(1) || wiz_level(me) < wiz_level(status) ) return notify_fail("─у├╗╙╨╚и┴ж╩╣╙├╒т╕Ў╓╕┴юбг\n"); if( !arg ) return notify_fail(SYNTAX); if( sscanf(arg, "%s", direc)!=1 ) return notify_fail(SYNTAX); seteuid(getuid()); dir = get_dir(arg+"/"); for(i=0; i<sizeof(dir); i++) { if( sscanf(dir[i],"%s.c", roomname) != 1) continue; if( room = find_object(arg+"/"+roomname+".c")) destruct(room); room = load_object(arg+"/"+roomname+".c"); if(!room->query("coor")) log_file("LEAK",sprintf("%s/%s\n",arg,roomname)); } return 1; }
int main(object me, string arg) { object obj; string name,number; if( wizhood(me) != "(caretaker)" && wizhood(me) != "(wizard)" && wizhood(me) != "(arch)" && wizhood(me) != "(admin)" ) return notify_fail("什么?\n"); if (!arg) return notify_fail("指令格式:rstbkup player #backup.\n"); if(sscanf(arg, "%s %s", name, number) != 2)return notify_fail("指令格式:rstbkup player #backup.\n"); seteuid(ROOT_UID); write_file(RESTOREDATA, name + ":" + number + "\n"); tell_object(me,"恢复"+name+"备份"+number+"指令执行了。\n"); return 1; }
int main(object me, string arg) { string *list, hood = "", str; int j = 0; list = sort_array(SECURITY_D->query_wizlist(), (: level :) ); str = HIR"三界神话"HIG"泉州师院总站 "HIR"★ "+HIY"巫师全家福 "HIR"★"NOR+CYN" :\n"; str += "────────────────────────────\n"; for(int i=0; i<sizeof(list); i++, j++) { if (hood != wizhood(list[i]) ) { hood = wizhood(list[i]); if (j%7) str += "\n"; str += lists[hood] ; j = 0; } if (list[i]!="kissess" && list[i]!="chm"&& list[i]!="peaceful") str +=sprintf("%s%s",capitalize(list[i]), ( j%7==6 ) ? "\n" : ( i<sizeof(list)-1 && hood ==wizhood(list[i+1]) ) ? ", " : "" ); } str += CYN"\n────────────────────────────\n"NOR; str += "目前共有" +HIW+ chinese_number(sizeof(list)-2) +NOR+ "位巫师。\n\n"; me->start_more(str); return 1; }
int main(object me, string arg) { object ob; if( !arg ) { if( objectp(ob = query_snooping(me)) ) write("你现在正在监听" + ob->query("name") + "所收到的讯息。\n"); return 1; } else if( arg=="none" ) { if( objectp(ob = query_snooping(me)) && wiz_level(ob) >= wiz_level(me) ) tell_object(ob, HIW + me->name(1) + "停止监听你所收到的讯息。\n" NOR); snoop(me); write("Ok.\n"); return 1; } ob = find_player(arg); if(!ob) ob = find_living(arg); if(!ob || !me->visible(ob)) return notify_fail("没有这个人。\n"); if( wizhood(me) != "(admin)" && wiz_level(me) <= wiz_level(ob) ) return notify_fail("你没有监听" + ob->name() + "所收听讯息的权利。\n"); if( me==ob ) return notify_fail("请用 snoop none 解除监听。\n"); snoop(me, ob); write("你现在开始窃听" + ob->name(1) + "所收到的讯息。\n"); if( userp(ob) ) log_file("SNOOP_PLAYER", sprintf("%s(%s) snoops %s on %s.\n", me->name(1), geteuid(me), ob->name(1), ctime(time()) ) ); if( wizardp(ob) && wizhood(me) != "(admin)") tell_object(ob, HIW + me->name(1) + "开始监听你所收到的讯息。\n" + NOR); return 1; }
int main(object me, string arg) { object ob; if( !arg ) { if( objectp(ob = query_snooping(me)) ) write("你现在正在监听" + ob->query("name") + "所收到的讯息。\n"); return 1; } else if( arg=="-none" ) { if( objectp(ob = query_snooping(me)) && wizardp(ob) ) tell_object(ob, HIW + me->name(1) + "停止监听你所收到的讯息。\n" NOR); snoop(me); write("Ok.\n"); return 1; } else if(query_snooping(me)) snoop(me); ob = find_player(arg); if(!ob) ob = find_living(arg); if(!ob) ob = LOGIN_D->find_body(arg); /* added by mon. 2/23/97 */ if(!ob || !me->visible(ob)) return notify_fail("没有这个人。\n"); if( wizhood(me) != "(admin)" && wiz_level(me) <= wiz_level(ob) ) return notify_fail("你没有监听" + ob->name() + "所收听讯息的权利。\n"); if( me==ob ) return notify_fail("请用 snoop -none 解除监听。\n"); snoop(me, ob); me->set_temp("snoop_encoding", (int)me->query_encoding()*10+ob->query_encoding()); // added by mon 6/1/98 write("你现在开始窃听" + ob->name(1) + "所收到的讯息。\n"); if( userp(ob) ) log_file("SNOOP_PLAYER", sprintf("%s(%s) snoops %s on %s.\n", me->name(1), geteuid(me), ob->name(1), ctime(time()) ) ); // if( wizardp(ob) && wizhood(me) != "(admin)") if( wizardp(ob)) tell_object(ob, HIW + me->name(1) + "开始监听你所收到的讯息。\n" + NOR); return 1; }
int main(object me, string arg) { string id, skill_name=0, err, *arg_list; int i, amount, type, tmp, cloned; object user; if ( me!=this_player(1) || wiz_level(me) < wiz_level(wizhood(me)) ) return notify_fail("你没有权力使用这个指令。\n"); if (!arg ) return notify_fail(SYNTAX); type = 1; // default is cut exp arg_list = explode(arg, " "); for (i=0; i<sizeof(arg_list); i++) { if (arg_list[i] == "-e") type = 1; else if (arg_list[i] == "-s") { type = 0; if (i == sizeof(arg_list)-1) return notify_fail(SYNTAX); skill_name = arg_list[++i]; }else if (arg_list[i] == "-") break; else if (arg_list[i][0] != '-') break; } if (i >= sizeof(arg_list)) return notify_fail("Please at least say who you want to cut.\n"); id = arg_list[i]; i++; amount = 30; // cut 30% by default if (i < sizeof(arg_list)){ if (sscanf(arg_list[i], "%d", amount)!=1) return notify_fail("Cut percentage must be a number.\n"); } if (amount < 0 || amount > 100) return notify_fail("cut percentage must be 0-100.\n"); seteuid(getuid()); cloned = 0; user = LOGIN_D->find_body(id); // cut even if the player is not online if (! objectp(user)) { user = new ("/clone/obj/dummy"); cloned = 1; }
nomask void enable_player() { if( stringp(query("id")) ) set_living_name(query("id")); else set_living_name(query("name")); delete_temp("disabled"); enable_commands(); add_action("command_hook", "", 1); if( !userp(this_object()) ) set_path(NPC_PATH); else switch( wizhood(this_object()) ) { case "(admin)": set_path(ADM_PATH); enable_wizard(); break; case "(arch)": set_path(ARC_PATH); enable_wizard(); break; case "(wizard)": set_path(WIZ_PATH); enable_wizard(); break; case "(apprentice)": set_path(APR_PATH); enable_wizard(); break; case "(immortal)": set_path(IMM_PATH); enable_wizard(); break; case "(elder)": set_path(ELD_PATH); enable_wizard(); break; default: set_path(PLR_PATH); } }
string _query_rank(object ob) { string at; int dx, exp, avg; int budd; int age; if(strlen(ob->query("added_title"))<1) ob->set("added_title", "无名"); //need this default, otherwise looks too ugly sometimes. at = ob->query("added_title"); dx = (int)ob->query("daoxing"); exp = (int)ob->query("combat_exp"); avg = (dx + exp)/2; age = ob->query("age"); if( ob->is_ghost() ) return HIB "【 鬼 魂 】" NOR; switch(ob->query("gender")) { case "女性": switch(wizhood(ob)) { case "(admin)": return GRN "【 巫 女 】" NOR; case "(arch)": return GRN "【 巫 女 】" NOR; case "(wizard)": return GRN "【 巫 女 】" NOR; case "(apprentice)": return GRN "【见习巫女】" NOR; case "(immortal)": return GRN "【客座巫女】" NOR; case "(elder)": return GRN "【荣誉玩家】" NOR; default: switch(ob->query("class")) { //------------------rank for girls-------------------- case "swordsman": if(dx<1000) return HIC "【 女剑童 】" NOR; else if(dx<10000) return HIC "【 女剑士 】" NOR; else if(dx<500000) return HIC "【 女剑客 】" NOR; else if(dx<1000000) return HIC "【"+at+"剑仙】" NOR; else return HIC "【"+at+"剑圣】" NOR; case "xian": if(dx<1000) return HIM "【 玉 女 】" NOR; else if(dx<10000) return HIM "【 小神女 】" NOR; else if(dx<100000) return HIM "【 神 女 】" NOR; else if(dx<500000) return HIM "【"+at+"仙妃】" NOR; else if ( ob->query("family/family_name") == "五庄观" ) return HIC "【"+at+"天仙】" NOR; else return HIM "【"+at+"天后】" NOR; break; case "yaomo": if ( ob->query("family/family_name") == "盘丝洞" ) if(avg<1000) return MAG "【 小魔女 】" NOR; else if(avg<10000) return MAG "【 精 灵】" NOR; else if(avg<100000) return MAG "【 女 魔 】" NOR; else if(avg<500000) return MAG "【"+at+"精】" NOR; else return MAG "【"+at+"魔尊】" NOR; if ( ob->query("family/family_name") == "火云洞" ) if(avg<1000) return RED "【 小妖女 】" NOR; else if(avg<10000) return RED "【 妖 精 】" NOR; else if(avg<100000) return RED "【 女 妖 】" NOR; else if(avg<500000) return RED "【"+at+"女洞主】" NOR; else return RED "【"+at+"女妖王】" NOR; if ( ob->query("family/family_name") == "大雪山" ) if(avg<1000) return HIW "【 小妖女 】" NOR; else if(avg<10000) return HIW "【 妖 精 】" NOR; else if(avg<100000) return HIW "【 女 魔 】" NOR; else if(avg<500000) return HIW "【"+at+"魔女】" NOR; else return HIW "【"+at+"明王】" NOR; if ( ob->query("family/family_name") == "陷空山无底洞" ) if(avg<1000) return YEL "【 小妖女 】" NOR; else if(avg<10000) return YEL "【 妖 精 】" NOR; else if(avg<100000) return YEL "【 女 魔 】" NOR; else if(avg<500000) return YEL "【"+at+"妖女】" NOR; else return YEL "【"+at+"天魔】" NOR; break; case "bonze": if(dx<1000) return HIY "【 小尼姑 】" NOR; else if(dx<10000) return HIY "【 小师太 】" NOR; else if(dx<100000) return HIY "【 圣 尼 】" NOR; else if(dx<500000) return HIY "【"+at+"神尼】" NOR; else return HIY "【"+at+"菩萨】" NOR; break; case "taoist": if(dx<1000) return HIG "【 女道童 】" NOR; else if(dx<10000) return HIG "【 小道姑 】" NOR; else if(dx<100000) return HIG "【 玄 女 】" NOR; else if(dx<500000) return HIG "【"+at+"玄女】" NOR; else return HIG "【"+at+"圣母】" NOR; break; case "shen": if(avg<1000) return HIC "【 小仙女 】" NOR; else if(avg<10000) return HIC "【 仙 姑 】" NOR; else if(avg<100000) return HIC "【 神 女 】" NOR; else if(avg<500000) return HIC "【"+at+"玄女】" NOR; else return HIC "【"+at+"圣女】" NOR; break; case "dragon": if(avg<1000) return HIC "【 小宫娥 】" NOR; else if(avg<10000) return HIC "【 母夜叉 】" NOR; else if(avg<100000) return HIC "【 小龙女 】" NOR; else if(avg<500000) return HIC "【"+at+"龙女】" NOR; else return HIC "【"+at+"公主】" NOR; break; case "scholar": if( (string)at=="未设" ) { if((int)ob->query_skill("literate", 1)<20) return GRN "【 女学童 】" NOR; else if((int)ob->query_skill("literate", 1)<100) return GRN "【 才 女 】" NOR; else return GRN "【 女学士 】" NOR; } else { if((int)ob->query_skill("literate", 1)<20) return GRN "【 女学童 】" NOR; else if((int)ob->query_skill("literate", 1)<100) return GRN "【"+at+"秀才】" NOR; else return GRN "【"+at+"学士】" NOR; } break; case "fighter": if(exp<1000) return HIR "【 女 兵 】" NOR; else if(exp<10000) return HIR "【 女参将 】" NOR; else if(exp<100000) return HIR "【 女将军 】" NOR; else if(exp<500000) return HIR "【"+at+"大将军】" NOR; else return HIR "【"+at+"大元帅】" NOR; break; case "youling": if(avg<1000) return HIB "【阴曹小鬼】" NOR; else if(avg<10000) return HIB "【迷魂女鬼】" NOR; else if(avg<100000) return HIB "【幽冥女使】" NOR; else if(avg<500000) return HIB "【"+at+"修罗】" NOR; else return HIB "【"+at+"女王】" NOR; break; case "dancer": return GRN "【 舞 妓 】" NOR; break; default: if (age <= 16) return HIM "【 少 女 】"NOR; else return CYN "【 民 妇 】"NOR; //------------------end rank for girls-------------------- } } //begin 男性: default: switch(wizhood(ob)) { case "(admin)": return HIY "【 天 神 】" NOR; case "(arch)": return GRN "【 巫 师 】" NOR; case "(wizard)": return GRN "【 巫 师 】" NOR; case "(apprentice)": return GRN "【见习巫师】" NOR; case "(immortal)": return GRN "【客座巫师】" NOR; case "(elder)": return GRN "【荣誉玩家】" NOR; default: switch(ob->query("class")) { //------------------rank for men-------------------- case "swordsman": if(dx<1000) return HIC "【 剑 童 】" NOR; else if(dx<10000) return HIC "【 剑 士 】" NOR; else if(dx<100000) return HIC "【 剑 客 】" NOR; else if(dx<500000) return HIC "【"+at+"剑仙】" NOR; else return HIC "【"+at+"剑圣】" NOR; case "xian": if(dx<1000) return RED "【 仙 童 】" NOR; else if(dx<10000) return RED "【 散 仙 】" NOR; else if(dx<100000) return RED "【 大 仙 】" NOR; else if(dx<500000) return RED "【"+at+"天王】" NOR; else if(dx<1000000) return RED "【"+at+"真君】" NOR; else return RED "【"+at+"天尊】" NOR; break; case "yaomo": if ( ob->query("family/family_name") == "火云洞" ) if(avg<1000) return RED "【 小 妖 】" NOR; else if(avg<10000) return RED "【 妖 怪 】" NOR; else if(avg<100000) return RED "【 护 法 】" NOR; else if(avg<500000) return RED "【"+at+"护法】" NOR; else if(avg<1000000) return RED "【"+at+"洞主】" NOR; else return RED "【"+at+"大圣】" NOR; if ( ob->query("family/family_name") == "盘丝洞" ) if(avg<1000) return MAG "【 小 魔 】" NOR; else if(avg<10000) return MAG "【 精 灵 】" NOR; else if(avg<100000) return MAG "【 魔 鬼 】" NOR; else if(avg<500000) return MAG "【 "+at+"精 】" NOR; else if(avg<1000000) return MAG "【"+at+"老怪】" NOR; else return MAG "【"+at+"魔尊】" NOR; if ( ob->query("family/family_name") == "大雪山" ) if(avg<1000) return HIW "【 小 妖 】" NOR; else if(avg<10000) return HIW "【 妖 怪 】" NOR; else if(avg<100000) return HIW "【 妖 仙 】" NOR; else if(avg<500000) return HIW "【 "+at+"怪 】" NOR; else if(avg<1000000) return HIW "【"+at+"老魔】" NOR; else return HIW "【"+at+"明王】" NOR; if ( ob->query("family/family_name") == "陷空山无底洞" ) if(avg<1000) return YEL "【 小 妖 】" NOR; else if(avg<10000) return YEL "【 妖 怪 】" NOR; else if(avg<100000) return YEL "【 妖 仙 】" NOR; else if(avg<500000) return YEL "【"+at+"妖王】" NOR; else if(avg<1000000) return YEL "【"+at+"老妖】" NOR; else return YEL "【"+at+"天魔】" NOR; break; case "bonze": if(dx<1000) return HIY "【 小和尚 】" NOR; else if(dx<10000) return HIY "【 比 丘 】" NOR; else if(dx<100000) return HIY "【 圣 僧 】" NOR; else if(dx<500000) return HIY "【"+at+"禅师】" NOR; else if(dx<1000000) return HIY "【"+at+"长老】" NOR; else return HIY "【"+at+"佛】" NOR; break; case "taoist": if(dx<1000) return HIG "【 小道士 】" NOR; else if(dx<10000) return HIG "【 道 士 】" NOR; else if(dx<100000) return HIG "【 道 长 】" NOR; else if(dx<500000) return HIG "【"+at+"天师】" NOR; else if(dx<1000000) return HIG "【"+at+"真人】" NOR; else return HIG "【"+at+"祖师】" NOR; break; case "shen": if(avg<1000) return HIC "【 小仙童 】" NOR; else if(avg<10000) return HIC "【 仙 童 】" NOR; else if(avg<100000) return HIC "【 小 仙 】" NOR; else if(avg<500000) return HIC "【"+at+"仙人】" NOR; else return HIC "【"+at+"神仙】" NOR; break; case "dragon": if(avg<1000) return HIC "【 虾 兵 】" NOR; else if(avg<10000) return HIC "【 蟹 将 】" NOR; else if(avg<100000) return HIC "【巡海夜叉】" NOR; else if(avg<500000) return HIC "【"+at+"夜叉】" NOR; else if(avg<1000000) return HIC "【"+at+"天龙】" NOR; else return HIC "【"+at+"海王】" NOR; break; case "scholar": if( (string)at=="无名" ) { if((int)ob->query_skill("literate", 1)<20) return RED "【 童 生 】" NOR; else if((int)ob->query_skill("literate", 1)<100) return RED "【 秀 才 】" NOR; else return RED "【 大学士 】" NOR; } else { if((int)ob->query_skill("literate", 1)<20) return RED "【 童 生 】" NOR; else if((int)ob->query_skill("literate", 1)<100) return RED "【"+at+"秀才】" NOR; else return RED "【"+at+"学士】" NOR; } break; case "fighter": if(exp<1000) return HIR "【 小 兵 】" NOR; else if(exp<10000) return HIR "【 小 校 】" NOR; else if(exp<100000) return HIR "【 参 将 】" NOR; else if(exp<500000) return HIR "【"+at+"将军】" NOR; else if(exp<1000000) return HIR "【"+at+"大将军】" NOR; else return HIR "【"+at+"大元帅】" NOR; break; case "youling": if(avg<1000) return HIB "【阴曹小鬼】" NOR; else if(avg<10000) return HIB "【勾魂使者】" NOR; else if(avg<100000) return HIB "【地府判官】" NOR; else if(avg<500000) return HIB "【"+at+"无常】" NOR; else if(avg<1000000) return HIB "【"+at+"王】" NOR; else return HIB "【"+at+"冥王】" NOR; break; default: if (age <= 16) return "【 少 年 】"; else return CYN"【 平 民 】"NOR; //------------------end rank for men-------------------- } } } }
string _query_rank(object ob) { string at; int dx, exp, avg; if(strlen(ob->query("added_title"))<1) ob->set("added_title", "无名"); //need this default, otherwise looks too ugly sometimes. at = ob->query("added_title"); dx = (int)ob->query("daoxing"); exp = (int)ob->query("combat_exp"); avg = (dx + exp)/2; if( ob->is_ghost() ) return HIB "【 鬼 魂 】" NOR; switch(ob->query("gender")) { case "女性": switch(wizhood(ob)) { case "(admin)": return HIW "【 三界帝后 】" NOR; case "(arch)": return HIR "【 三界天后 】" NOR; case "(wizard)": return HIC "【 三界巫女 】" NOR; case "(apprentice)": return HIW "【见习巫女】" NOR; case "(immortal)": return HIW "【客座巫女】" NOR; case "(elder)": return HIG "【荣誉玩家】" NOR; default: switch(ob->query("class")) { //------------------rank for girls-------------------- case "tianpeng": if ( ob->query("family/family_name") == "天蓬元帅府" ) if(dx<1000) return HIR "【 女家兵 】" NOR; else if(dx<10000) return HIR "【 女家将 】" NOR; else if(dx<500000) return HIR "【 右护法 】" NOR; else if(dx<1000000) return HIR "【"+at+"元帅右护法】" NOR; else return HIR "【"+at+"元帅右亲信】" NOR; break; case "kunlun": if(dx<1000) return RED "【 小仙女 】" NOR; if(dx<10000) return RED "【 小仙姑 】" NOR; if(dx<100000) return RED "【 灵 姑 】" NOR; if(dx<500000) return RED "【"+at+"灵姑】" NOR; if(dx<700000) return RED "【"+at+"圣灵姑】" NOR; else return HIW "【"+at+"圣灵母】" NOR; break; case "youxia": if(dx<1000) return HIM "【 女 侠 】" NOR; else if(dx<10000) return HIM "【 女游侠 】" NOR; else if(dx<500000) return HIM "【 "+at+"侠女 】" NOR; else if(dx<1000000) return HIM "【 "+at+"大侠 】" NOR; else return HIM "【 "+at+"圣侠 】" NOR; break; case "wusheng": if(dx<1000) return GRN "【 玉罗刹 】" NOR; else if(dx<10000) return GRN "【 女罗汉 】" NOR; else if(dx<100000) return GRN "【 尊 者 】" NOR; else if(dx<500000) return GRN "【"+at+"尊者】" NOR; else return GRN "【"+at+"圣君】" NOR; break; case "sanjie": if ( ob->query("family/family_name") == "三界山" ) if(dx<1000) return HIR "【 小魔女 】" NOR; else if(dx<10000) return HIR "【 妖 精 】" NOR; else if(dx<500000) return HIR "【 魔 女 】" NOR; else if(dx<1000000) return HIR "【"+at+"女魔王】" NOR; else return HIR "【"+at+"大女魔王】" NOR; break; /* if ( ob->query("family/family_name") == "天一宫" ) if(dx<1000) return HIR "【 道 姑 】" NOR; else if(dx<10000) return HIR "【 仙 姑 】" NOR; else if(dx<500000) return HIR "【 玄 女 】" NOR; else if(dx<1000000) return HIR "【"+at+"圣女】" NOR; else return HIR "【"+at+"圣母】" NOR; if ( ob->query("family/family_name") == "天妖宫" ) if(dx<1000) return HIR "【 妖 女 】" NOR; else if(dx<10000) return HIR "【 妖 精 】" NOR; else if(dx<500000) return HIR "【 妖 后 】" NOR; else if(dx<1000000) return HIR "【"+at+"女妖王】" NOR; else return HIR "【"+at+"大女妖王】" NOR; if ( ob->query("family/family_name") == "天魔宫" ) if(dx<1000) return HIR "【 小魔女 】" NOR; else if(dx<10000) return HIR "【 妖 精 】" NOR; else if(dx<500000) return HIR "【 魔 女 】" NOR; else if(dx<1000000) return HIR "【"+at+"女魔王】" NOR; else return HIR "【"+at+"大女魔王】" NOR; if ( ob->query("family/family_name") == "藏尸地" ) if(dx<1000) return HIR "【 女死尸 】" NOR; else if(dx<10000) return HIR "【 女丧尸 】" NOR; else if(dx<500000) return HIR "【 女僵尸 】" NOR; else if(dx<1000000) return HIR "【"+at+"丧尸王后】" NOR; else return HIR "【"+at+"僵尸王后】" NOR; if ( ob->query("family/family_name") == "雷刀门" ) if(dx<1000) return HIR "【 女刀手 】" NOR; else if(dx<10000) return HIR "【 女刀客 】" NOR; else if(dx<500000) return HIR "【 女刀侠 】" NOR; else if(dx<1000000) return HIR "【"+at+"女刀仙】" NOR; else return HIR "【"+at+"女刀王】" NOR; break; */ case "swordsman": if(dx<1000) return HIC "【 女剑童 】" NOR; else if(dx<10000) return HIC "【 女剑士 】" NOR; else if(dx<500000) return HIC "【 女剑客 】" NOR; else if(dx<1000000) return HIC "【"+at+"剑仙】" NOR; else return HIC "【"+at+"剑圣】" NOR; break; case "xian": if(dx<1000) return HIM "【 玉 女 】" NOR; else if(dx<10000) return HIM "【 小神女 】" NOR; else if(dx<100000) return HIM "【 神 女 】" NOR; else if(dx<500000) return HIM "【"+at+"仙妃】" NOR; else if ( ob->query("family/family_name") == "五庄观" ) return HIC "【"+at+"天仙】" NOR; else return HIM "【"+at+"天后】" NOR; break; case "yaomo": if ( ob->query("family/family_name") == "盘丝洞" ) if(avg<1000) return MAG "【 小妖女 】" NOR; else if(avg<10000) return MAG "【 妖 精 】" NOR; else if(avg<100000) return MAG "【 女 魔 】" NOR; else if(avg<500000) return MAG "【"+at+"魔女】" NOR; else return MAG "【"+at+"女魔王】" NOR; if ( ob->query("family/family_name") == "火云洞" ) if(avg<1000) return RED "【 小妖女 】" NOR; else if(avg<10000) return RED "【 妖 精 】" NOR; else if(avg<100000) return RED "【 女 魔 】" NOR; else if(avg<500000) return RED "【"+at+"魔女】" NOR; else return RED "【"+at+"女魔王】" NOR; if ( ob->query("family/family_name") == "大雪山" ) if(avg<1000) return HIW "【 小妖女 】" NOR; else if(avg<10000) return HIW "【 妖 精 】" NOR; else if(avg<100000) return HIW "【 女 魔 】" NOR; else if(avg<500000) return HIW "【"+at+"魔女】" NOR; else return HIW "【"+at+"女魔王】" NOR; if ( ob->query("family/family_name") == "陷空山无底洞" ) if(avg<1000) return YEL "【 小妖女 】" NOR; else if(avg<10000) return YEL "【 妖 精 】" NOR; else if(avg<100000) return YEL "【 女 魔 】" NOR; else if(avg<500000) return YEL "【"+at+"魔女】" NOR; else return YEL "【"+at+"女魔王】" NOR; break; case "bonze": if(dx<1000) return HIY "【 小尼姑 】" NOR; else if(dx<10000) return HIY "【 小师太 】" NOR; else if(dx<100000) return HIY "【 圣 尼 】" NOR; else if(dx<500000) return HIY "【"+at+"神尼】" NOR; else return HIY "【"+at+"菩萨】" NOR; break; case "taoist": if(dx<1000) return HIG "【 女道童 】" NOR; else if(dx<10000) return HIG "【 小道姑 】" NOR; else if(dx<100000) return HIG "【 玄 女 】" NOR; else if(dx<500000) return HIG "【"+at+"玄女】" NOR; else return HIG "【"+at+"圣母】" NOR; break; case "dragon": if(avg<1000) return HIC "【 小宫娥 】" NOR; else if(avg<10000) return HIC "【 母夜叉 】" NOR; else if(avg<100000) return HIC "【 小龙女 】" NOR; else if(avg<500000) return HIC "【"+at+"龙女】" NOR; else return HIC "【"+at+"公主】" NOR; break; case "scholar": if( (string)at=="未设" ) { if((int)ob->query_skill("literate", 1)<20) return GRN "【 女学童 】" NOR; else if((int)ob->query_skill("literate", 1)<100) return GRN "【 才 女 】" NOR; else return GRN "【 女学士 】" NOR; } else { if((int)ob->query_skill("literate", 1)<20) return GRN "【 女学童 】" NOR; else if((int)ob->query_skill("literate", 1)<100) return GRN "【"+at+"秀才】" NOR; else return GRN "【"+at+"学士】" NOR; } break; case "fighter": if(exp<1000) return HIR "【 女 兵 】" NOR; else if(exp<10000) return HIR "【 女参将 】" NOR; else if(exp<100000) return HIR "【 女将军 】" NOR; else if(exp<500000) return HIR "【"+at+"大将军】" NOR; else return HIR "【"+at+"大元帅】" NOR; break; case "youling": if(avg<1000) return HIB "【阴曹小鬼】" NOR; else if(avg<10000) return HIB "【迷魂女鬼】" NOR; else if(avg<100000) return HIB "【幽冥女使】" NOR; else if(avg<500000) return HIB "【"+at+"修罗】" NOR; else return HIB "【"+at+"女王】" NOR; break; case "dancer": return GRN "【 舞 妓 】" NOR; break; default: return HIM "【 少 女 】" NOR; //------------------end rank for girls-------------------- } } //begin 男性: default: switch(wizhood(ob)) { case "(admin)": return HIW "【 三界帝王 】" NOR; case "(arch)": return HIR "【 三界天王 】" NOR; case "(wizard)": return HIC "【 三界神君 】" NOR; case "(apprentice)": return HIW "【见习巫师】" NOR; case "(immortal)": return HIW "【客座巫师】" NOR; case "(elder)": return HIW "【荣誉玩家】" NOR; default: switch(ob->query("class")) { //------------------rank for men-------------------- case "tianpeng": if(dx<1000) return GRN "【 男家丁 】" NOR; else if(dx<10000) return GRN "【 大战将 】" NOR; else if(dx<100000) return GRN "【 左护法 】" NOR; else if(dx<500000) return GRN "【"+at+"元帅左护法】" NOR; else return GRN "【"+at+"元帅左亲信】" NOR; break; case "kunlun": if(dx<1000) return CYN "【 小 仙 】" NOR; if(dx<10000) return CYN "【 大 仙 】" NOR; if(dx<100000) return CYN "【 灵 仙 】" NOR; if(dx<500000) return CYN "【"+at+"灵仙】" NOR; if(dx<700000) return CYN "【"+at+"圣灵仙】" NOR; else return HIW "【"+at+"圣灵尊】" NOR; break; case "youxia": if(dx<1000) return HIC "【 少 侠 】" NOR; else if(dx<10000) return HIC "【 游 侠 】" NOR; else if(dx<100000) return HIC "【 "+at+"侠士 】" NOR; else if(dx<500000) return HIC "【 "+at+"大侠 】" NOR; else return HIC "【 "+at+"圣侠 】" NOR; break; case "wusheng": if(dx<1000) return GRN "【 大罗刹 】" NOR; else if(dx<10000) return GRN "【 大罗汉 】" NOR; else if(dx<100000) return GRN "【 尊 者 】" NOR; else if(dx<500000) return GRN "【"+at+"尊者】" NOR; else return GRN "【"+at+"武帝】" NOR; break; case "sanjie": if ( ob->query("family/family_name") == "三界山" ) if(dx<1000) return HIR "【 三散人 】" NOR; else if(dx<10000) return HIR "【 三圣人 】" NOR; else if(dx<500000) return HIR "【 真 人 】" NOR; else if(dx<1000000) return HIR "【"+at+"妖仙魔】" NOR; else return HIR "【"+at+"元神】" NOR; /* if ( ob->query("family/family_name") == "天一宫" ) if(dx<1000) return HIR "【 道 长 】" NOR; else if(dx<10000) return HIR "【 仙 长 】" NOR; else if(dx<500000) return HIR "【 真 人 】" NOR; else if(dx<1000000) return HIR "【"+at+"天师】" NOR; else return HIR "【"+at+"祖师】" NOR; if ( ob->query("family/family_name") == "天妖宫" ) if(dx<1000) return HIR "【 小 妖 】" NOR; else if(dx<10000) return HIR "【 妖 怪 】" NOR; else if(dx<500000) return HIR "【 妖 仙 】" NOR; else if(dx<1000000) return HIR "【"+at+"妖王】" NOR; else return HIR "【"+at+"大妖王】" NOR; if ( ob->query("family/family_name") == "天魔宫" ) if(dx<1000) return HIR "【 小魔头 】" NOR; else if(dx<10000) return HIR "【 魔 兽 】" NOR; else if(dx<500000) return HIR "【 魔 头 】" NOR; else if(dx<1000000) return HIR "【"+at+"魔王】" NOR; else return HIR "【"+at+"大魔王】" NOR; if ( ob->query("family/family_name") == "藏尸地" ) if(dx<1000) return HIR "【 死 尸 】" NOR; else if(dx<10000) return HIR "【 丧 尸 】" NOR; else if(dx<500000) return HIR "【 僵 尸 】" NOR; else if(dx<1000000) return HIR "【"+at+"丧尸王】" NOR; else return HIR "【"+at+"僵尸王】" NOR; if ( ob->query("family/family_name") == "雷刀门" ) if(dx<1000) return HIR "【 刀 手 】" NOR; else if(dx<10000) return HIR "【 刀 客 】" NOR; else if(dx<500000) return HIR "【 刀 侠 】" NOR; else if(dx<1000000) return HIR "【"+at+"刀仙】" NOR; else return HIR "【"+at+"刀王】" NOR; break; */ case "swordsman": if(dx<1000) return HIC "【 剑 童 】" NOR; else if(dx<10000) return HIC "【 剑 士 】" NOR; else if(dx<100000) return HIC "【 剑 客 】" NOR; else if(dx<500000) return HIC "【"+at+"剑仙】" NOR; else return HIC "【"+at+"剑圣】" NOR; break; case "xian": if(dx<1000) return RED "【 仙 童 】" NOR; else if(dx<10000) return RED "【 散 仙 】" NOR; else if(dx<100000) return RED "【 大 仙 】" NOR; else if(dx<500000) return RED "【"+at+"大仙】" NOR; else if(dx<1000000) return RED "【"+at+"真君】" NOR; else return RED "【"+at+"天尊】" NOR; break; case "yaomo": if ( ob->query("family/family_name") == "火云洞" ) if(avg<1000) return RED "【 小 妖 】" NOR; else if(avg<10000) return RED "【 妖 怪 】" NOR; else if(avg<100000) return RED "【 妖 仙 】" NOR; else if(avg<500000) return RED "【 "+at+"怪 】" NOR; else if(avg<1000000) return RED "【"+at+"老魔】" NOR; else return RED "【"+at+"魔王】" NOR; if ( ob->query("family/family_name") == "盘丝洞" ) if(avg<1000) return MAG "【 小 妖 】" NOR; else if(avg<10000) return MAG "【 妖 怪 】" NOR; else if(avg<100000) return MAG "【 妖 仙 】" NOR; else if(avg<500000) return MAG "【 "+at+"怪 】" NOR; else if(avg<1000000) return MAG "【"+at+"老魔】" NOR; else return MAG "【"+at+"魔王】" NOR; if ( ob->query("family/family_name") == "大雪山" ) if(avg<1000) return HIW "【 小 妖 】" NOR; else if(avg<10000) return HIW "【 妖 怪 】" NOR; else if(avg<100000) return HIW "【 妖 仙 】" NOR; else if(avg<500000) return HIW "【 "+at+"怪 】" NOR; else if(avg<1000000) return HIW "【"+at+"老魔】" NOR; else return HIW "【"+at+"魔王】" NOR; if ( ob->query("family/family_name") == "陷空山无底洞" ) if(avg<1000) return YEL "【 小 妖 】" NOR; else if(avg<10000) return YEL "【 妖 怪 】" NOR; else if(avg<100000) return YEL "【 妖 仙 】" NOR; else if(avg<500000) return YEL "【 "+at+"怪 】" NOR; else if(avg<1000000) return YEL "【"+at+"老魔】" NOR; else return YEL "【"+at+"魔王】" NOR; break; case "bonze": if(dx<1000) return HIY "【 小和尚 】" NOR; else if(dx<10000) return HIY "【 比 丘 】" NOR; else if(dx<100000) return HIY "【 圣 僧 】" NOR; else if(dx<500000) return HIY "【"+at+"禅师】" NOR; else if(dx<1000000) return HIY "【"+at+"长老】" NOR; else return HIY "【"+at+"佛】" NOR; break; case "taoist": if(dx<1000) return HIG "【 小道士 】" NOR; else if(dx<10000) return HIG "【 道 士 】" NOR; else if(dx<100000) return HIG "【 道 长 】" NOR; else if(dx<500000) return HIG "【"+at+"天师】" NOR; else if(dx<1000000) return HIG "【"+at+"真人】" NOR; else return HIG "【"+at+"祖师】" NOR; break; case "dragon": if(avg<1000) return HIC "【 虾 兵 】" NOR; else if(avg<10000) return HIC "【 蟹 将 】" NOR; else if(avg<100000) return HIC "【巡海夜叉】" NOR; else if(avg<500000) return HIC "【"+at+"夜叉】" NOR; else if(avg<1000000) return HIC "【"+at+"龙】" NOR; else return HIC "【"+at+"天龙】" NOR; break; case "scholar": if( (string)at=="无名" ) { if((int)ob->query_skill("literate", 1)<20) return RED "【 童 生 】" NOR; else if((int)ob->query_skill("literate", 1)<100) return RED "【 秀 才 】" NOR; else return RED "【 大学士 】" NOR; } else { if((int)ob->query_skill("literate", 1)<20) return RED "【 童 生 】" NOR; else if((int)ob->query_skill("literate", 1)<100) return RED "【"+at+"秀才】" NOR; else return RED "【"+at+"学士】" NOR; } break; case "fighter": if(exp<1000) return HIR "【 小 兵 】" NOR; else if(exp<10000) return HIR "【 小 校 】" NOR; else if(exp<100000) return HIR "【 参 将 】" NOR; else if(exp<500000) return HIR "【"+at+"将军】" NOR; else if(exp<1000000) return HIR "【"+at+"大将军】" NOR; else return HIR "【"+at+"大元帅】" NOR; break; case "youling": if(avg<1000) return HIB "【阴曹小鬼】" NOR; else if(avg<10000) return HIB "【勾魂使者】" NOR; else if(avg<100000) return HIB "【地府判官】" NOR; else if(avg<500000) return HIB "【"+at+"无常】" NOR; else if(avg<1000000) return HIB "【"+at+"王】" NOR; else return HIB "【"+at+"冥王】" NOR; break; default: return "【 少 年 】"; //------------------end rank for men-------------------- } } } }