📄 control.c
字号:
LOGIN_D->enter_world(link_ob, obj, 1); obj->move(env); return 1;}int do_refresh(string arg){ object ob; if(!arg)return notify_fail("你想要更新谁?\n"); ob = find_player(arg); if( ob && objectp(ob) && userp(ob) && ob->query("sjsz") ) update_player(ob); else return notify_fail("没有这个人在试剑山庄中。\n");}int update_room (string file){ int i; object obj, *inv; string err; if ( (obj = find_object(file)) && 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]); } } } my_destruct(obj); }}/*This will refresh a room however it won't destruct the room*/int refresh_room (string file){ int i; object obj, *inv, me = this_player(); string err; if (obj = find_object(file)) { inv = all_inventory(obj); i = sizeof(inv); while(i--) { if( inv[i] && objectp(inv[i]) && userp(inv[i]) ) { if( !living(inv[i]) || inv[i]->query("qi") <= 0 ) { if( inv[i]->query("sjsz/red") ) { call_out("move_me",1+random(4),inv[i],"/d/bwdh/sjsz/west_xiangfang.c"); } else if( inv[i]->query("sjsz/white") ) { call_out("move_me",1+random(4),inv[i],"/d/bwdh/sjsz/east_xiangfang.c"); } if( !living(inv[i]) )inv[i]->revive(1); full_all(inv[i]); nude(inv[i]); } } else { if( inv[i] && objectp(inv[i]) && inv[i]->query("race") != "人类" && inv[i]->query("id") != "pao" && inv[i]->query("id") != "dan tou" && inv[i]->query("id") != "huo yao" && inv[i]->query("id") != "box" ) my_destruct(inv[i]); } } }}void make_weapon(object npc){ int j, n; object weapon, owner; if(!npc || !objectp(npc) ) return; n = 0; do{ j = random(sizeof(special_weapon)); weapon = find_object( special_weapon[j] ); if( weapon && objectp(weapon) ) { owner = environment(weapon); if(owner && objectp(owner) && !userp(owner) ) break; } weapon = new(special_weapon[j]); n++; }while(!weapon && n < 20); if( weapon && objectp(weapon) ) weapon->move(npc);}void make_npc(object room){ object *inv,npc,ob; int i,j,n,r; if( !room || !objectp(room) )return; n = random( 8 ); if( n < 1) { do{ j = random(sizeof(high_npc)); npc = new(high_npc[j]); } while( !npc || !objectp(npc) ); } else if( n < 5) { do{ j = random(sizeof(middle_npc)); npc = new(middle_npc[j]); } while( !npc || !objectp(npc) ); } else if( n < 7) { do{ j = random(sizeof(low_npc)); npc = new(low_npc[j]); } while( !npc || !objectp(npc) ); } else { do{ j = random(sizeof(misc_npc)); npc = new(misc_npc[j]); } while( !npc || !objectp(npc) ); } if (random(2) == 1) { ob = new("/d/bwdh/sjsz/obj/renshen-guo"); } else if (random(20) == 1) { ob = new("/d/bwdh/sjsz/obj/bomb"); } else { ob = new("/clone/drug/jinchuang"); ob->set_amount(random(20)+1); } if( ob && objectp(ob) )ob->move(npc); make_weapon(npc); npc->move(room);}void refresh_sjsz(){ object room,*inv; int n, r ; string rm; refresh_room("/d/bwdh/sjsz/wgate.c"); refresh_room("/d/bwdh/sjsz/wgarden.c"); refresh_room("/d/bwdh/sjsz/wtang.c"); refresh_room("/d/bwdh/sjsz/wting.c"); refresh_room("/d/bwdh/sjsz/wzoulan.c"); refresh_room("/d/bwdh/sjsz/egate.c"); refresh_room("/d/bwdh/sjsz/egarden.c"); refresh_room("/d/bwdh/sjsz/etang.c"); refresh_room("/d/bwdh/sjsz/eting.c"); refresh_room("/d/bwdh/sjsz/ezoulan.c"); refresh_room("/d/bwdh/sjsz/etower1.c"); refresh_room("/d/bwdh/sjsz/etower2.c"); refresh_room("/d/bwdh/sjsz/etower3.c"); refresh_room("/d/bwdh/sjsz/etower4.c"); refresh_room("/d/bwdh/sjsz/etower5.c"); refresh_room("/d/bwdh/sjsz/etower6.c"); refresh_room("/d/bwdh/sjsz/etower7.c"); refresh_room("/d/bwdh/sjsz/wtower1.c"); refresh_room("/d/bwdh/sjsz/wtower2.c"); refresh_room("/d/bwdh/sjsz/wtower3.c"); refresh_room("/d/bwdh/sjsz/wtower4.c"); refresh_room("/d/bwdh/sjsz/wtower5.c"); refresh_room("/d/bwdh/sjsz/wtower6.c"); refresh_room("/d/bwdh/sjsz/wtower7.c"); for(r=1;r<=30;r++){ if (r < 10) { rm = "/d/bwdh/sjsz/room_0" + sprintf("%d", r); room = find_object(rm); if(!room) load_object(rm); } else { rm = "/d/bwdh/sjsz/room_" + sprintf("%d", r); room = find_object(rm); if( !room ) load_object(rm); } if(!room) continue; refresh_room(rm); inv = all_inventory(room); n = sizeof(inv); if ( n == 0 ) { make_npc(room); } } return;}int auto_check(){ int nCounts; object board; board = find_object(BOARD); if (!objectp(board)) { board = load_object(BOARD); if (!objectp(board)) return 0; } nCounts = board->query("counts"); if(nCounts <=0 ) { if( board->query("west") && board->query("east") ) { call_out("auto_check", 10); call_out("clean_sjsz",20); do_judge(""); return 0; } else return 1; } nCounts--; board->set("counts",nCounts); remove_call_out("auto_check"); call_out("auto_check",60*3); refresh_sjsz();}int do_goon(){ object me = this_player(); auto_check(); return 1;}void clean_sjsz(){ int i; object room; for ( i = 1; i <= 30; i++) { if (i < 10) { update_room("/d/bwdh/sjsz/room_0" + sprintf("%d", i)); room = find_object("/d/bwdh/sjsz/room_0" + sprintf("%d", i)); } else { update_room("/d/bwdh/sjsz/room_" + sprintf("%d", i)); room = find_object("/d/bwdh/sjsz/room_" + sprintf("%d", i)); } if( room && objectp(room) ) destruct(room); } update_room("/d/bwdh/sjsz/wgate.c"); update_room("/d/bwdh/sjsz/wgarden.c"); update_room("/d/bwdh/sjsz/wtang.c"); update_room("/d/bwdh/sjsz/wting.c"); update_room("/d/bwdh/sjsz/wzoulan.c"); update_room("/d/bwdh/sjsz/egate.c"); update_room("/d/bwdh/sjsz/egarden.c"); update_room("/d/bwdh/sjsz/etang.c"); update_room("/d/bwdh/sjsz/eting.c"); update_room("/d/bwdh/sjsz/ezoulan.c"); update_room("/d/bwdh/sjsz/west_xiangfang.c"); update_room("/d/bwdh/sjsz/east_xiangfang.c"); update_room("/d/bwdh/sjsz/etower1.c"); update_room("/d/bwdh/sjsz/etower2.c"); update_room("/d/bwdh/sjsz/etower3.c"); update_room("/d/bwdh/sjsz/etower4.c"); update_room("/d/bwdh/sjsz/etower5.c"); update_room("/d/bwdh/sjsz/etower6.c"); update_room("/d/bwdh/sjsz/etower7.c"); update_room("/d/bwdh/sjsz/wtower1.c"); update_room("/d/bwdh/sjsz/wtower2.c"); update_room("/d/bwdh/sjsz/wtower3.c"); update_room("/d/bwdh/sjsz/wtower4.c"); update_room("/d/bwdh/sjsz/wtower5.c"); update_room("/d/bwdh/sjsz/wtower6.c"); update_room("/d/bwdh/sjsz/wtower7.c");}int do_duet(string arg){ object me = this_player(), player; object room, ob, npc, env, *inv; string cmd; int n, total, i, j; object board; if( !arg || sscanf(arg, "%s", cmd) != 1) return notify_fail("指令错误!\n"); board = find_object(BOARD); if (!objectp(board)) { board = load_object(BOARD); if (!objectp(board)) return notify_fail("找不到团体赛成绩版。\n"); } switch (cmd) { case "start" : if( !board->query("east") || !board->query("east") ) return notify_fail("好象现在没有比赛。\n"); call_out("auto_check",60*4); room = find_object("/d/bwdh/sjsz/wtang"); if(!room)room = load_object("/d/bwdh/sjsz/wtang"); room->set("flag",1); room->set("team_name",board->query("westname") ); room = find_object("/d/bwdh/sjsz/etang"); if(!room)room = load_object("/d/bwdh/sjsz/etang"); room->set("flag",1); room->set("team_name", board->query("eastname") ); if( wizardp(me) || me->query("judge") ) { message_vision("$N宣布比赛开始!\n", me); CHANNEL_D->do_channel(me, "chat", board->query("westname")+"队现在开始与"+board->query("eastname")+"队决斗!\n" ); } board->set("counts",5); break; case "clean" : clean_sjsz(); board->delete("east"); board->delete("west"); board->delete("eastname"); board->delete("westname"); break; default : return notify_fail("指令错误!\n"); break; } return 1;}int do_judge(string arg) { object ob = this_object(), rum_ob; string side,msg; int east, west, n; object board; mapping entryA, entryB; int i, scoreA, scoreB; board = find_object(BOARD); if (!objectp(board)) { board = load_object(BOARD); if (!objectp(board)) return 1;//notify_fail("找不到团体赛成绩版。\n"); } if( !board->query("east") || !board->query("east") ) return 1;//notify_fail("好象现在没有比赛。\n"); if( !arg || arg=="" ) { entryA = board->query("team/" + board->query("east")); if ( !entryA )return notify_fail("找不到东队。\n"); entryB = board->query("team/" + board->query("west")); if ( !entryB )return notify_fail("找不到西队。\n"); scoreA = to_int(entryA["this_score"]); scoreB = to_int(entryB["this_score"]); if( scoreA > scoreB ) side = "east"; else if( scoreA == scoreB ) side = "tie"; else side = "west"; } msg = "现在宣布比赛结束!"; switch(side) { case "east" : east = 2; west = 0; //if(objectp(me)) message_vision("$N判东队胜!\n", me); msg += board->query("eastname") + "胜" + board->query("westname");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -