int do_look(string arg) { object env1, env2, env3, env4; object *obj1, *obj2, *obj3, *obj4; object me = this_player(); string msg; int i, i1, i2, i3, i4; if (!arg || arg != "board") return 0; env1 = load_object(__DIR__"mjroom1.c"); obj1 = all_inventory(env1); env2 = load_object(__DIR__"mjroom2.c"); obj2 = all_inventory(env2); env3 = load_object(__DIR__"mjroom3.c"); obj3 = all_inventory(env3); env4 = load_object(__DIR__"mjroom4.c"); obj4 = all_inventory(env4); msg =""; if (env1->query_temp("mjstart") == 1) msg += RED"红木亭"NOR":牌局正在进行中。\n"; if (env2->query_temp("mjstart") == 1) msg += YEL"黄菊苑"NOR":牌局正在进行中。\n"; if (env3->query_temp("mjstart") == 1) msg += HIC"蓝天阁"NOR":牌局正在进行中。\n"; if (env4->query_temp("mjstart") == 1) msg += GRN"绿竹馆"NOR":牌局正在进行中。\n"; for (i = 0; i < sizeof(obj1); i++) if (userp(obj1[i])) i1++; for (i = 0; i < sizeof(obj2); i++) if (userp(obj2[i])) i2++; for (i = 0; i < sizeof(obj3); i++) if (userp(obj3[i])) i3++; for (i = 0; i < sizeof(obj4); i++) if (userp(obj4[i])) i4++; tell_object(me, "现在各麻将室里的人数有:\n"+ " "HIC"蓝天阁\n"+ " "+i3+NOR"\n"+ YEL" 黄菊苑 "+i2+NOR" "GRN+i4+" 绿竹馆\n"NOR+ " "RED+i1+"\n"+ " 红木亭\n\n"NOR+msg); return 1; }
load() { # if USE_ICQ_GATEWAY D(" " GATEWAY_PATH "icq"); load_object(GATEWAY_PATH "icq"); # endif # if USE_AIM_GATEWAY D(" " GATEWAY_PATH "aim2"); load_object(GATEWAY_PATH "aim2"); # endif # ifdef RELAY_OBJECT D(" " RELAY_OBJECT "\n"); call_out(load_object, 0, RELAY_OBJECT); # endif }
varargs int move_to_start(object ob) { object where; if (!ob) ob = this_object(); /* move us */ if (start_location && (where = load_object(start_location)) && ob->move(where) == MOVE_OK) return 1; where = load_object(wizardp(this_user()) ? WIZARD_START : START); if (where && ob->move(where) == MOVE_OK) return 1; return (ob->move(VOID_ROOM) == MOVE_OK); }
int do_climb(string arg) { object me, room; me = this_player(); if(me->is_busy() || me->is_fighting()) return notify_fail("你现在没空!\n"); switch (random(3)) { case 0: message_vision("$N手脚并用地往上爬,才爬到一半,一失手又摔了下来。\n", me); me->receive_damage("gin",20); me->start_busy(3); break; case 1: message_vision("$N手脚并用地往上爬,眼看快到井口了,结果一失手又摔了下来。\n", me); me->receive_damage("gin",40); me->start_busy(3); break; case 2: if(!arg || arg != "上" && arg != "up" ) return 0; room = find_object(__DIR__"woodroad"); if(!objectp(room)) room=load_object(__DIR__"woodroad"); me->move(room); message_vision("$N浑身湿淋淋地从水井中爬了上来。\n", me); break; } return 1; }
int cmd(string str) { if(!sizeof(str)){ write(GetHelp()); return 1; } str = homedir(this_player()) + "/area/room/" + str; if(last(str,2) != ".c") str += ".c"; if(!directory_exists(homedir(this_player()) + "/area")){ write(homedir(this_player()) + "/area/ does not exist!"); return 1; } if(!file_exists(str)){ write("The file "+str+" does not exist."); return 1; } if(strsrch(str,homedir(this_player()))){ write("You can only use this command to travel to rooms "+ "under your control."); return 1; } if(catch(load_object(truncate(str,2)))){ write("There is a problem with that room. You stay where you are."); return 1; } this_player()->eventMoveLiving(str); return 1; }
void create() { object otherroom; set_server(SERVER); ::create(); set_exits( ([ "west" : WHITE "a17", ]) ); set_no_clean(1); if(random(2) == 0) otherroom = load_object(WHITE "b10"); else otherroom = load_object(WHITE "b2"); add_exit(base_name(otherroom), "north"); otherroom->set_no_clean(1); otherroom->add_exit(base_name(this_object()), "south"); }
int perform(object me, object target) { string msg; int extra; object qer; string qqq; int lvl=90; qqq="/d/maze/jq2-entry"; extra = me->query_skill("pathfinding",1); if (extra < lvl && userp(me)) return notify_fail("需要至少"+lvl+"级的天路引归。\n"); if (me->is_fighting()) return notify_fail("你现在正在战斗,无法使用天路引归。\n"); msg=HIB"一阵阴风吹过,刺人骨髓,仿佛一场恶梦。。。\n"NOR; if (base_name(environment(me))[0..15] == "/d/maze/jq2-maze") { tell_object(me,msg+"\n"); qer=find_object(qqq); if (!qer) qer=load_object(qqq); me->move(qqq); } else tell_object(me,HIG"你失败了。\n"NOR); me->perform_busy(3); return 1; }
int random_go(object me, string* dirs) { int i, j, k; object newob; mixed* file; if( !sizeof(dirs) ) return 1; i = random(sizeof(dirs)); // pick up one directory file = get_dir( dirs[i]+"*.c", -1 ); if( !sizeof(file) ) return 1; k = sizeof(file); while(1) { j = random(k); if( file[j][1] > 0 ) break; // pick up a file with size > 0 } if( (newob=find_object(dirs[i]+file[j][0])) ) { me->move( newob ); } else { seteuid(getuid(me)); newob = load_object(dirs[i]+file[j][0]); if (newob) // now this is not necessary, only for debug use me->move(newob); else { tell_object(me, "Error.\n"); } } return 1; }
void check_trigger() { object room; if(!query("exits/enter") ) { if( !(room = find_object(__DIR__"basket")) ) room = load_object(__DIR__"basket"); if( room = find_object(__DIR__"basket") ) { if((int)room->query("insert_trigger")==0 ) { room->set("insert_trigger", 1); set("exits/enter", __DIR__"basket"); room->set("exits/out", __FILE__); message("vision","只见一个掉篮(basket)从天而降,你不禁一怔!\n" , this_object() ); set("item_desc", ([ "basket" : "这是一个掉篮,是传说中的交通工具。\n", ])); remove_call_out("on_board"); call_out("on_board", 15); } else message("vision", "看样子你得等下拨儿。\n",this_object() ); }
int do_enter(string arg) { object room; object who = this_player(); if(!arg || arg != "cave") return notify_fail("你要进哪里?\n"); if(random(who->query_kar())>25 && who->query("max_mana")>1000) { if(!( room = find_object(__DIR__"valley")) ) room = load_object(__DIR__"valley"); if(objectp(room)) { message_vision("$N钻出了小洞,眼前豁然一亮,原来是个开满鲜花的小山谷!\n",who); who->move(room); } return 1; } else { message_vision("$N试着往洞里爬,突然一股寒风吹来,$N全身都被冻僵了!\n",who); who->recieve_damage(who->query("kee")/5); who->recieve_wound(who->query("max_kee")/5); who->start_busy(5); return 1; } }
int do_dive(){ object me, obj, room, octopus, jiaonv; me = this_player(); obj = me->query_temp("armor/mask"); if (jiaonv = present("jiao nu",this_object())) return notify_fail("鲛女在水中畅游,挡住了你的去路。\n"); room = find_object(__DIR__"midsea2"); if(!objectp(room)){ room = load_object(__DIR__"midsea2"); } if (room->query("underwater") <= me->query_skill("swimming",1)) { message_vision("$N继续向下潜去。\n", me); if (room->usr_in()) { tell_object(me,"下面好像有人,潜不下去耶。\n"); return 1; } else { if (objectp(octopus=present("octopus", room))) destruct(octopus); room->reset(); } me->move(room); this_object()->reset(); message("vision", me->name() + "潜到你身边的水中。\n", environment(me), me); } else { return notify_fail("你的游泳技能太差,没法潜下去呀。\n"); } return 1; }
int do_up(string arg) { object me, room; if (arg != "up") return 0; me = this_player(); me->add_temp("up_time",1); if((int) me->query_temp("up_time") <= (2+random(8))) { message_vision("$N挣扎着想摆脱水草,可却被越缠越紧了...\n",me); tell_object(me, "你感觉到一股很大的力量在把你往下扯。 \n"); me->receive_damage("kee",10+random(100)); me->set_temp("last_damage_from","在清平的池塘里被水鬼缠死了。\n"); return 1; } else { tell_object(me, "猛然间一股很大的力量把你拖入了水中。 \n"); room = find_object(__DIR__"underwater"); if(!objectp(room)) room=load_object(__DIR__"underwater"); me->move(room); return 1; } return 0; }
int do_jumpto (string arg) { object me,room; int dodge; if (!arg || (arg != "yard" && arg != "Ժ��")) return notify_fail("��Ҫ����������\n"); me = this_player(); dodge = me->query_skill("move",1); message_vision("\n$N���������������۾����͵��������˳�ȥ....\n",me); if(!room) room = find_object(__DIR__"jinyuan"); room=load_object(__DIR__"jinyuan"); if (dodge < 50) { message_vision("\nֻ��һ������˺�Ѻ���֦�۶ϵ�������Ȼ��$N���ص�ˤ���˵���...\n\n",me); me->move(room); me->unconcious(); } else { message_vision("\n$N������֦����֮������Խ�˴Դ���Ҷ��һ�������˽�Ժ��\n\n",me); me->move(room); me->start_busy(1); } return 1; }
int do_around(){ object me, room; object bandit; me=this_player(); if (me->is_busy()) return notify_fail("你现在正忙。\n"); if (present("bandit") && me->query("combat_exp")<2500000) { tell_object(me,"马贼说:瞎转转什么转,嫁过来大爷陪你一起转。\n"); return 1; } if (present("bandit") && me->query("combat_exp")>2500000) tell_object(me,"马贼看看你,摸了摸刀,想动却没敢动。\n"); tell_object(me,YEL"\n你在废墟里仔仔细细转了几个来回,眼前忽然一亮。\n\n"NOR); room = find_object(__DIR__"banditcamp1"); if(!objectp(room)) room = load_object(__DIR__"banditcamp1"); me->move(room); message("vision",me->query("name")+"向废墟后跑去,绕了几圈不见了。\n",this_object()); return 1; }
int do_open(string arg) { object room; object me = this_player(); if (is_open()) return notify_fail("大门已经是开着了。\n"); if (!arg || (arg != "men" && arg != "door" && arg != query("door_dir"))) return notify_fail("你要开什么?\n"); if(!objectp( room = find_object(query("outroom"))) ) room = load_object(query("outroom")); if(objectp(room)) { open_door(); message_vision("$N轻手轻脚地把门打开。\n", this_player()); room->open_door(__FILE__); if (me->query_temp("sleeped")) message("vision", "吱地一声,"+me->query("name")+"精神焕发地从里面把门打开了。\n",room); else message("vision", "梆地一声,"+me->query("name")+"从里面把门打开,一脸的不耐烦。\n",room); remove_call_out("close_men"); call_out("close_men", 10); } 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(string a) { object ret; mixed code; if (file_size("/tmp_eval_file.c") != -1) rm ("/tmp_eval_file.c"); if (find_object("/tmp_eval_file")) destruct(find_object("/tmp_eval_file")); write_file("/tmp_eval_file.c", "mixed eval() { " + a + "; }\n"); ret = load_object("/tmp_eval_file"); dump_prog(ret, 1, "/CODE_TMP_FILE"); code = read_file( "/CODE_TMP_FILE"); rm("/CODE_TMP_FILE"); rm("/tmp_eval_file.c"); code = explode(code, ";;; *** Disassembly ***\n"); code = code[1]; write(code[0..strlen(code)-1]); return 1; }
int valid_leave(object me, string dir) { mapping exits; object room; exits=query("exits"); room=load_object(exits["down"]); if( dir == "up" && (int)me->query("food")-random(10)> 650) { message_vision(HIR"“喀吧!”腐朽的木板难以承受$N之重,一下子断裂开来!\n\n"NOR,me); message_vision(HIR"$N一不小心,姿势美妙地倒栽葱摔了下来......\n“呯!”$N脑袋插进了腐朽的木板里面。\n "NOR,me); tell_room(room,HIR+me->query("name")+"一不小心,摔了下来。\n "NOR); me->move(room); me->receive_wound("kee",2); return notify_fail(HIW" “这楼梯可不太结实,下回来爬得少吃点先。。。”\n"NOR); } // if(!NATURE_D->is_day_time()){ tell_object(me,HIM "\n 你刚一上来,隐约听见头顶上传来两个人断续的对话声: “你...不到我...来?但是...却早已想到你......” “我们...的事,...并没有错。最不幸的,...我已来了,你...来了。” \n\n"NOR); // } return 1; }
int do_open(string arg) { object me=this_player(), room; object *inv; int j; if(!arg || arg!="door") return notify_fail("你要开什么?\n"); if( query_temp("lock") == 1 && !present("key", me) ) return notify_fail("钥匙都没有,怎么开门?\n"); if(!( room = find_object(__DIR__"storeroom")) ) room = load_object(__DIR__"storeroom"); inv = all_inventory(me); for (j = 0; j < sizeof(inv); j++) { if (inv[j]->is_character()) { return notify_fail("屋子里位置有限,挤不下那么多人。\n"); } } if(!objectp(room)) return notify_fail("ERROR:not found 'storeroom.c' \n"); if(query_temp("lock") == 1 && present("key", me)) { set_temp("lock", 0); message_vision("$N把钥匙插进锁孔,只听见‘卡嗒’一声,锁开了。\n", me); message("vision","外面传来一阵开锁的声音,只听见‘卡嗒’一声,锁开了。\n",room); } message_vision("$N轻轻推开门,走了进去,随手把门掩了起来。\n",me); message("vision", "有人走了进来,随手把门掩上了。\n",room); me->move(room); return 1; }
int do_climb (string arg) { object npc,me,room; int dodge; me = this_player(); dodge = me->query_skill("move",1); if (!arg || (arg != "tree" && arg != "光阴树" && arg != "up")) return notify_fail("你要爬什么?\n"); else if( npc = present("bancha bana", this_object()) ) { message_vision("$N斜瞥了$n一眼:班察的五花神箭很久没有饮血了,你莫非想试一下?\n",npc,me); return notify_fail("看来不杀班察巴那,是上不了树的.\n"); } else if (dodge < 120) return notify_fail("树太高,你的轻功太差,爬不上去耶(需120级)\n"); else { room = find_object(__DIR__"birdhouse"); if(!room) room=load_object(__DIR__"birdhouse"); message_vision("$N手足并用,慢慢的爬上光阴树.\n",me); me->move(room); me->start_busy(2); message("vision",me->name()+"从树下爬了上来。\n",room,me); return 1; } }
void check_trigger() { object room; if(!query("exits/enter") ) { if( !(room = find_object(__DIR__"chuan")) ) room = load_object(__DIR__"chuan"); if( room = find_object(__DIR__"chuan") ) { if((int)room->query("zuo_trigger")==0 ) { room->set("zuo_trigger", 1); set("exits/enter", __DIR__"chuan"); room->set("exits/out", __FILE__); message("vision", "一艘木船从海上漂了过来。\n", this_object() ); message("vision", "木船缓缓的靠岸了。\n", room); remove_call_out("on_board"); call_out("on_board", 15); } else message("vision", "木船正驶向岸边,看样子还得耐心地等等。\n",this_object() ); } else message("vision", "ERROR: chuan not found\n", this_object() ); } else message("vision", "木船已经靠岸了,随时都可上去。\n", this_object() ); }
varargs mixed do_codesay_str(string str) { string filename = DIR_TMP + "/" + this_player()->GetKeyName() + ".codesay"; if( !str ) { write("Huh?"); return 1; } if(!creatorp(this_player())) { write("This is a command for creators."); return 1; } if(strsrch(str,";") == -1){ write("You codesay: "+"%^BOLD%^CYAN%^"+str+"%^RESET%^"); say(this_player()->GetCapName()+" codesays: "+ "%^BOLD%^CYAN%^"+str+"%^RESET%^"); } else { str = replace_string(str, ";", ";\n"); str = replace_string(str, "{", "{\n"); str = replace_string(str, "}", "}\n"); write_file(filename,str,1); write_file(filename+"_rule","I",1); load_object(CMD_LSED)->cmd(filename+"_rule "+filename); write("You codesay: "); say(this_player()->GetCapName()+" codesays: "); tell_room(environment(this_player()),"\n"+ "%^BOLD%^CYAN%^"+read_file(filename)+"%^RESET%^"); } return 1; }
int main() { asn_TYPE_descriptor_t *td = &asn_DEF_UserIdentifier; UserIdentifier_t user; UserIdentifier_t user_new; int ret; memset(&user, 0, sizeof user); memset(&user_new, 0, sizeof user_new); user.present = UserIdentifier_PR_phoneNumber; OCTET_STRING_fromBuf( &user.choice.phoneNumber, "0123456789", -1); /* Save->Load must succeed */ save_object(&user, td); ret = load_object(&user_new, td); assert(user_new.present == UserIdentifier_PR_phoneNumber); assert(ret == 0); printf("OK\n"); return ret; }
int do_mianbi() { object me, mengzhu, room; int shen, ep, gain; me = this_player(); shen = me->query("shen"); ep = me->query("combat_exp"); if (me->is_busy() || me->query_temp("pending/exercising") || me->query_temp("exit_blocked")) return notify_fail("你现在正忙着呢。\n"); if (me->query("jing") < 200 || me->query("jingli") < 200) return notify_fail("你觉得烦躁不安,难以聚精入定。\n"); message_vision("$N面对着石梁跌坐静思,良久,似有所悟。\n", me); me->start_busy(8); me->set("jing",1); me->add("jingli", -200); if(!( room = find_object("/d/taishan/fengchan")) ) room = load_object("/d/taishan/fengchan"); seteuid(getuid(me)); if( !objectp(mengzhu = present("mengzhu", room)) ){ mengzhu = new("/clone/npc/meng-zhu"); mengzhu->move("/d/taishan/fengchan"); }
string ask_jingtie() { int num; object me=this_player(); object jingtie,room; string job_flg; job_flg = judge_jobmsg(me,1); if (job_flg != "打造火枪") return "这位"+RANK_D->query_respect(me)+"好象没有造火枪的任务吧。\n"; if (present("jing tie",me) ) { command("hmm "+me->query("id")); return "你不是已经有一块了吗?还想要,真是贪得无厌。\n"; } if ( get_jingtie_num() <= 0 ) return "对不起,我这里已经没有精铁了。\n"; command("nod "+me->query("id")); message_vision("吴劲草拿了一块精铁给$N\n",me); if (!(room = find_object("/d/mingjiao/mj_center.c"))) room = load_object("/d/mingjiao/mj_center.c"); room->add("jingtie",-1); jingtie=new(OBJ_PATH"/jingtie"); jingtie->move(me); return "这是兄弟们辛辛苦苦炼出来的精铁,你要用它好好打造兵器。\n"; }
/* * Called to init a shared library. */ Object::Object (const pdstring fileName, const Address /*BaseAddr*/, void (*err_func)(const char *)) :AObject(fileName,err_func) { load_object(true); }
void DynamicDataLoader::load_deferred( deferred_json &data ) { while( !data.empty() ) { const size_t n = data.size(); auto it = data.begin(); for( size_t idx = 0; idx != n; ++idx ) { try { std::istringstream str( it->first ); JsonIn jsin( str ); JsonObject jo = jsin.get_object(); load_object( jo, it->second ); } catch( const std::exception &err ) { debugmsg( "Error loading data from json: %s", err.what() ); } ++it; } data.erase( data.begin(), it ); if( data.size() == n ) { std::ostringstream discarded; for( const auto &elem : data ) { discarded << elem.first; } debugmsg( "JSON contains circular dependency. Discarded %i objects:\n%s", data.size(), discarded.str().c_str() ); data.clear(); return; // made no progress on this cycle so abort } } }
int do_open(string arg) { object env = this_object(); object who = this_player(); object letter = present("feng yin", who); object guard = present("shan shen", env); object shandi = load_object(__DIR__"shandi"); object prisoner = letter ? find_player(letter->query("prisoner_id")) : 0; if( !arg || arg != "zhou" ) return notify_fail("你要打开什么?\n"); if (!letter || letter->query("savior_id") != getuid(who)) return notify_fail("你没有得到佛祖的点化,无法五行山下定心猿。\n"); if (!prisoner || environment(prisoner) != shandi) return notify_fail("山下没有压着人!\n"); if(!guard && !who->query_temp("kill_guard")) { guard = new(__DIR__"guard"); guard->move(env); guard->copy_status(who); message_vision(CYN"$N正要去揭开咒符,突然面前出现了一个人。\n"NOR, who); who->set_temp("kill_guard", 1); return 1; }
int do_push(string arg) { object room; if (is_open()) return notify_fail("门已经是开着了。\n"); if (!arg || (arg != "door" && arg != "men")) return notify_fail("你要推什么?\n"); room = find_object(query("restroom")); if(! objectp(room) ) room = load_object(query("restroom")); if(objectp(room)) { if( room->query_inside_person()<=0 ) { open_door(); message_vision("$N轻轻地把门推开。\n", this_player()); room->open_door(__FILE__); remove_call_out("close_men"); call_out("close_men", 10); } else { message_vision("$N想把门推开,却发觉门被人从里面闩上了。\n",this_player()); } } return 1; }
void check_trigger() { object room; if(!query("exits/enter") ) { if( !(room = find_object(__DIR__"duchuan")) ) room = load_object(__DIR__"duchuan"); if( room = find_object(__DIR__"duchuan") ) { if((int)room->query("yell_trigger")==0 ) { room->set("yell_trigger", 1); set("exits/enter", __DIR__"duchuan"); room->set("exits/out", __FILE__); message("vision", "一叶扁舟缓缓地驶了过来,艄公将一块踏脚" "板搭上堤岸,以便乘客\n上下。\n", this_object() ); message("vision", "艄公将一块踏脚板搭上堤岸,形成一个向上" "的阶梯。\n", room); remove_call_out("on_board"); call_out("on_board", 15); } else message("vision", "只听得江面上隐隐传来:“别急嘛," "这儿正忙着呐……”\n",this_object() ); } else message("vision", "ERROR: boat not found\n", this_object() ); } else message("vision", "岸边一只渡船上的老艄公说道:正等着你呢,上来吧。\n", this_object() ); }