📄 dhs.c
字号:
if(sizeof(player)<2) return notify_fail("至少要两个人才能玩。\n"); if(!arg||sscanf(arg,"%d",i)!=1) i = 0; else { if(i<1||i>MAX_SE) return notify_fail(sprintf("start [色子数目] *注意* 色子数目必须>1并且<=%d\n",MAX_SE)); } start_game(i); return 1;}int do_view(string arg){ object me; object ob; me = this_player(); if(!is_playing(me)) { if(arg&&(ob = get_player(arg))) if(!is_visitor(me,arg)) ob = 0; if(!ob) return notify_fail("你都不玩啊!\n"); } else ob = me; view_se(ob,me); return 1;}int do_join(string arg){ object me; me = this_player(); if(has_start) return notify_fail("游戏已经开始,不能加入了,请使用(reset)命令重置。\n"); if(is_playing(me)) return notify_fail("你已经参加了。\n"); player[me->query("id")]=allocate(se_num); toss(me); msg(me,0,"$N加入游戏了。\n"); return 1;}int do_next(string arg){ object ob; object me; me = this_player(); if(!is_playing(me)) return notify_fail("你都不玩啊!\n"); if(!has_guess) return notify_fail("还没有开始猜色子了。\n"); if(!cur_player) return notify_fail("现在是谁猜啊?\n"); ob = get_cur_player(); if(ob==0) return msg(0,0,"有玩家缺场了,请重新开始游戏(start)。\n"); if(me!=ob) msg(me,ob,"$N对$n说道:到你了。\n"); else msg(me,0,"对自己说道:到我啦!\n"); tell_object(ob,for_guess_msg()); return 1;}int do_guess(string arg){ int n,p,ok; object ob; object me; string nextone; me = this_player(); if(!is_playing(me)) return notify_fail("你都不玩啊!\n"); if(!has_guess) return notify_fail("还没有开始猜色子了。\n"); ob = get_cur_player(); if(ob!=me) return notify_fail("还没有到你猜了。\n"); if(!arg||sscanf(arg,"%d %d",n,p)!=2) return notify_fail("guess 色子数目 色子点数\n"); if(n<sizeof(player)||p>6||p<=0) return notify_fail(sprintf("色子数目必须>=%d,色子点数必须>0并且<=6\n",sizeof(player))); ok = 1; if(last_player) { if(n>cur_amount) ok = 1; else { if(n==cur_amount) { if(p>cur_point) ok = 1; else ok = 0; } else ok = 0; } } if(!ok) return notify_fail("色子数目或者色子点数必须比前一位玩家大。\n"); last_player = me->query("id"); cur_amount = n; cur_point = p; if(p==1)has_guess_one = 1; cur_player = player_follow[last_player]; msg(me,0,sprintf("$N(%s)说道:%d个%d\n",me->query("id"),n,p)); if(history) history = history + ({ sprintf("%-20s:%d个%d",me->query("name")+"("+me->query("id")+")",n,p) }); else history = ({ sprintf("%-20s:%d个%d",me->query("name")+"("+me->query("id")+")",n,p) }); do_next(""); return 1;}void add_counter(string who,int number){ counter[who] = counter[who]+number;}int show_all_se(object who){ string* idx; mixed* s; int i,j,p,sc,pt; object ob; int c; string m,o; if(!last_player)return 0; ob = get_player(last_player); if(!ob||!who)return 0; has_guess = 0; idx = keys(player); c = 0; m = ""; for(i=0;i<sizeof(idx);i++) { if(get_player(idx[i])) { s = player[idx[i]]; m = sprintf("%s%12s:",m,idx[i]); o = ""; sc = 0; for(j=0;j<se_num;j++) { m = sprintf("%s%d",m,s[j]); p = s[j]; if(p==1&&!has_guess_one)p = cur_point; if(p==cur_point) { c ++; sc ++; o = sprintf("%s%d",o,s[j]); } } if(sc==se_num) { o = o + " 围色+1"; c++; } m = m + "||"+o+"\n"; } } m = sprintf("%s%s猜有"HIC"%d"NOR"个%d,",m,ob->query("name"),cur_amount,cur_point); m = sprintf("%s现在有"HIC"%d"NOR"个%d\n\n",m,c,cur_point); msg(0,0,m); if(who->query("id")==cur_player) pt = 1; else pt = 2; if(c<cur_amount) { add_counter(who->query("id"), pt); add_counter(ob->query("id"), -pt); msg(ob,who,BLINK HIY "$N被$n拆穿了大话!!!\n\n" NOR); who_lost = last_player; } else { add_counter(who->query("id"), -pt); add_counter(ob->query("id"), pt); msg(who,0,BLINK HIY "$N判断错误了!!!\n\n" NOR); who_lost = who->query("id"); } start_game(0);}int do_dahua(string arg){ object ob; object me; me = this_player(); if(!arg) { msg(me,0,"$N一扁嘴嘟囔道:“大话精,大话精...”\n"); return 1; } if(!is_playing(me)) return notify_fail("你都不玩啊!\n"); if(!has_guess||!last_player) return notify_fail("还没有开始猜色子了。\n"); ob = get_player(last_player); if(ob==me) return notify_fail("自己不相信自己。\n"); if(last_player!=arg) return notify_fail("不是他最后猜色子了。\n"); msg(me,ob,HIC "\n$N对$n说道:我不相信!!!\n" NOR); show_all_se(me); return 1;}int do_finish(string arg){ object me,ob; me = this_player(); if(!is_playing(me)) return notify_fail("你都不玩啊!\n"); if(!has_start) return notify_fail("游戏还没有开始了。\n"); if(has_guess) return notify_fail("已经开始猜色子了。\n"); player_deal[me->query("id")] = 1; msg(me,0,"$N准备好了。\n"); if(sizeof(player_deal)==sizeof(player)) { // all is finish has_guess = 1; msg(0,0,"\n猜色子开始\n"); if(who_lost)cur_player = who_lost; who_lost = 0; if(!cur_player)cur_player = me->query("id"); if(ob = get_cur_player()) { msg(ob,0,"$N说道:由我先猜!!!\n"); tell_object(ob,for_guess_msg()); } else msg(0,0,"缺少了"+cur_player+",不能进行游戏,请重新开始(start)\n"); } return 1;}int do_history(string arg){ if(!history) tell_object(this_player(),"没有历史资料。\n"); else tell_object(this_player(),implode(history,"\n")+"\n"); return 1;}int do_showc(string arg){ string r; string* idx; int i; if(!counter) return 0; idx = keys(player); r = "计数表(Scoreboard)\n-----------------\nID 分数\n-----------------\n"; for(i=0;i<sizeof(idx);i++) { if(get_player(idx[i])) r = sprintf("%s%-14s%10d\n", r,idx[i],counter[idx[i]]); } r += "-----------------\n"; msg(0,0,r); return 1;}int do_visitor(string arg){ string key; object me,ob; int del; if(!arg) return notify_fail("visit [-d] 玩家ID\n"); if(sscanf(arg, "-d %s", key)==1 ) del = 1; else { del = 0; key = arg; } me = this_player(); if(is_playing(me)) { ob = present(key,environment(this_object())); if(!ob) return notify_fail("这里没有这个玩家啊?\n"); if(del) { if(!is_visitor(ob,me->query("id"))) return notify_fail("不是你的观战者。\n"); msg(me,ob,"$N不再允许$n观看$N的战况。\n"); visitor[me->query("id")] = visitor[me->query("id")] - ({ob->query("id")}); } else { if(is_visitor(ob,me->query("id"))) return notify_fail("已经是你的观战者了。\n"); msg(me,ob,"$N让$n观看$N的战况。\n"); if(!visitor[me->query("id")]) visitor[me->query("id")] = ({ ob->query("id") }); else visitor[me->query("id")] += ob->query("id"); } } else { if(del) return notify_fail("????\n"); ob = get_player(key); if(!ob) return notify_fail("没有这个玩家在玩啊?\n"); msg(me,ob,"$N希望成为$n的观战者。\n"); tell_object(ob,"接受使用[visit "+me->query("id")+"]。\n"); } return 1;}int do_help(string arg){ this_player()->start_more( @HELP大话色使用方法:——[开始游戏]———————————————帮助命令:helpse加入命令:join 加入游戏开始命令:start 开始游戏重置命令:reset se 结束游戏——[游戏前命令]——————————————— 摇色子:toss查看色子:view [玩家ID]准备结束:finish 或者 deal——[游戏命令]———————————————拆穿大话:dahua 玩家ID猜测色子:guess 色子数量 色子点数 或者 g 色子数量 色子点数催促玩家:next——[其它命令]——————————————— 计数器:showc猜测日志:history——[旁观命令]———————————————观战命令:visit [-d] 玩家ID 邀请其它玩家观看你的游戏。 加参数 -d 表示删除该玩家的观看资格。——[游戏规则]———————————————建设中...—————————————————————— make by 猫部猫(Catyboy) v1.0HELP ); return 1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -