From f12afa1972ffe54882e22e1915f0e0cb2c83dec0 Mon Sep 17 00:00:00 2001 From: Harveykang <1214946206@qq.com> Date: Sun, 27 Dec 2020 15:33:51 +0800 Subject: [PATCH] 2.0.0.7 --- README.md | 20 +- data/fz/functions/carpet/carpet.mcfunction | 5 +- data/fz/functions/install.mcfunction | 14 +- data/fz/functions/load.mcfunction | 4 +- restore_scores.sc | 16 +- tagplayer.sc | 365 ++++++++++++--------- 6 files changed, 243 insertions(+), 181 deletions(-) diff --git a/README.md b/README.md index 5702166..2a1bead 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,25 @@ A Minecraft Datapack - 支持Minecraft1.16.x - 抬头并按一下shift来打开设置界面 - 压缩包中的tagplayer.sc - - 把它放在world/scripts中然后“/reload”! + - 把它放在“存档名/scripts”中然后“/script load tagplayer”! - 使用/tagplayer 命令生成假人可以避免假人被数据包提供的记分板捕捉到~ - - tagplayer现在需要地毯mod1.4.18或以上版本来运行 + - tagplayer需要地毯mod1.4.21或以上版本来运行 + - 使用帮助可以在游戏中输入“/tagplayer”查看 - 压缩包中的restore_scores.sc工具可以恢复或从1.0版本升级记分板~ - - 把它放在world/scripts中然后“/reload” + - 把它放在“存档名/scripts”中然后“/script load restore_scores” - *该工具会先删除旧的记分板* - 输入“/restore_scores by_whitelist”恢复白名单内的玩家的记分板 + - *用完记得删除它并“/script unload restore_scores”* + - restore_scores需要地毯mod1.4.13或以上版本来运行 +##### - v2.0.0.8(计划) + - 添加单独的记分板升级工具 +##### - v2.0.0.7 + - tagplayer添加了新版carpet新指令,可以为假人切换热键栏 + - 现在tagplayer需要carpet1.4.21或以上版本运行! + - 现在tagplayer可以给自己设置动作了 + - 添加“/tagplayer shadow”指令将自己变为前缀为“挂机”的假人 +##### - v2.0.0.6 + - 修复restore_scores.sc工具不能恢复受伤害榜(抖M榜)的bug ##### - v2.0.0.5 - 修复挖掘榜部分工具不起作用的bug - 添加restore_scores.sc工具便于恢复或从1.0版本升级记分板 @@ -26,4 +38,4 @@ A Minecraft Datapack - tagplayer需要地毯mod1.4.18或以上版本来运行 - 优化了tagplayer体验及修复若干bug ##### - v2.0.0.2 - - 重写 \ No newline at end of file + - 重写 diff --git a/data/fz/functions/carpet/carpet.mcfunction b/data/fz/functions/carpet/carpet.mcfunction index 6012e7e..be46b66 100644 --- a/data/fz/functions/carpet/carpet.mcfunction +++ b/data/fz/functions/carpet/carpet.mcfunction @@ -2,7 +2,4 @@ carpet setDefault commandScript true carpet setDefault commandScriptACE ops carpet setDefault scriptsAutoload true -carpet setDefault commandPlayer ops -execute store success score tagplayer parameter run script load tagplayer -#提示已安装 -execute if score tagplayer parameter matches 1 run tellraw @a {"text": "[信息]Tagplayer已启用","color": "#5fff00"} \ No newline at end of file +carpet setDefault commandPlayer ops \ No newline at end of file diff --git a/data/fz/functions/install.mcfunction b/data/fz/functions/install.mcfunction index 06374f4..4ece1f0 100644 --- a/data/fz/functions/install.mcfunction +++ b/data/fz/functions/install.mcfunction @@ -16,15 +16,15 @@ function fz:login/logintips/install function fz:carpet/carpet #版本信息 data merge storage fz.installed {installed:1b} -data merge storage fz {version:Beta-2.0.0.5} -data merge storage fz {date:2020-12.7} -data merge storage fz {time:"04:06"} +data merge storage fz {version:Beta-2.0.0.7} +data merge storage fz {date:2020-12.15} +data merge storage fz {time:"19:32"} data merge storage fz {snapshot:-SNAPSHOT} ##data remove storage fz snapshot tellraw @a {"text": "[信息]启动完毕","color": "#5fff00"} #提示已安装 tellraw @a {"text": "[信息]安装完成!","color": "#5fff00"} -#info: #5fff00 -#alert: #d7ff00 -#warn: #ffd900 -#error: #ff6100 \ No newline at end of file +#info: #5fff00 信息 +#alert: #d7ff00 提醒 +#warn: #ffd900 警告 +#error: #ff6100 错误 \ No newline at end of file diff --git a/data/fz/functions/load.mcfunction b/data/fz/functions/load.mcfunction index fc76b05..ba416fa 100644 --- a/data/fz/functions/load.mcfunction +++ b/data/fz/functions/load.mcfunction @@ -1,8 +1,8 @@ #如果未安装且未卸载则安装 execute unless data storage fz.installed {installed:1b} unless data storage fz.installed {installed:0b} run function fz:install #如果版本正确且已安装则开始运行 -execute if data storage fz {version:Alpha-2.0.0.5} if data storage fz.installed {installed:1b} run function fz:start +execute if data storage fz {version:Beta-2.0.0.7} if data storage fz.installed {installed:1b} run function fz:start #如果版本不符则更新 -execute unless data storage fz {version:Alpha-2.0.0.5} run function fz:update +execute unless data storage fz {version:Beta-2.0.0.7} run function fz:update #输出版本信息 tellraw @a [{"text": "[版本信息]FZ's Datapack-","color": "#ffd900"},{"nbt":"version","storage":"fz","color": "#ffd900"},{"nbt": "snapshot", "storage": "fz","color": "red"}] \ No newline at end of file diff --git a/restore_scores.sc b/restore_scores.sc index 8adaf53..ad5a70a 100644 --- a/restore_scores.sc +++ b/restore_scores.sc @@ -1,7 +1,9 @@ +global_version = '1.1.0'; __config() -> { - 'scope' -> 'global' + 'scope' -> 'global', + 'stay_loaded' -> false }; -__command() -> 'root command'; +__command() -> print('版本:' + global_version); global_bl = l('stone', 'granite', 'polished_granite', 'diorite', 'polished_diorite', 'andesite', 'polished_andesite', 'grass_block', 'dirt', 'coarse_dirt', 'podzol', 'crimson_nylium', 'warped_nylium', 'cobblestone', 'oak_planks', 'spruce_planks', 'birch_planks', 'jungle_planks', 'acacia_planks', 'dark_oak_planks', 'crimson_planks', 'warped_planks', 'sand', 'red_sand', 'gravel', 'gold_ore', @@ -133,10 +135,10 @@ __restore(pl, s_player) ->( print(actime); scoreboard('activation', pl:i, actime); total_actime += actime; - //活跃时间 - hurt = statistic(pl:i, 'custom', 'play_one_minute')/72000; + //抖M榜 + hurt = statistic(pl:i, 'custom', 'damage_taken')/100; print(hurt); - scoreboard('activation', pl:i, hurt); + scoreboard('damageTaken', pl:i, hurt); total_hurt += hurt; //死亡榜 death = statistic(pl:i, 'custom', 'deaths'); @@ -181,8 +183,8 @@ __restore(pl, s_player) ->( scoreboard('totalList', '全部木大', total_death); scoreboard('activation', '总在线时间(h)', total_actime); scoreboard('totalList', '总在线时间(h)', total_actime); - scoreboard('damageTaken', '群p抖m', total_hurt); - scoreboard('totalList', '群p抖m)', total_hurt); + scoreboard('damageTaken', '群p抖M', total_hurt); + scoreboard('totalList', '群p抖M)', total_hurt); game_tick(50); run('function fz:scoreboards/install') ); diff --git a/tagplayer.sc b/tagplayer.sc index 9745d09..296c655 100644 --- a/tagplayer.sc +++ b/tagplayer.sc @@ -2,16 +2,20 @@ //************请将该文件放入"world\scripts"文件夹中************ //************************************************************* scoreboard_add('carpetBot'); -run('team add carpetBot'); -run('team modify carpetBot prefix "假的 "'); -global_version = '2.0.0'; +team_add('carpetBot'); +team_add('shadowedPlayer'); +team_property('carpetBot', 'prefix', '假的'); +team_property('shadowedPlayer', 'prefix', '挂机'); +global_version = '2.1.0'; +global_carpet_version = split('\\+v',system_info('scarpet_version')); +global_filename = system_info('app_name'); __config() -> { 'stay_loaded' -> true, 'allow_command_conflicts' -> true, 'commands' -> { '' -> 'help', 'spawn ' -> 'summon', - 'kill ' -> 'kill', + 'kill ' -> 'kill', 'killall' -> 'killall', 'attack ' -> 'attack_once', 'attack continuous' -> 'attack_continuous', @@ -66,16 +70,39 @@ __config() -> { 'move right' -> 'move_right', 'move stop' -> 'move_stop', 'stop ' -> 'stop', - 'check ' -> 'check', + 'check ' -> 'check', 'checkall' -> 'checkall', 'tp ' -> 'tp', 'tp ' -> 'tp_with_rotation', 'tp ' -> 'tp_to_player', 'tp atBot' -> 'tp_at_bot', 'tp atBot' -> 'tp_at_bot_with_rotation', + 'hotbar ' -> 'hotbar', + 'shadow' -> 'shadow', }, 'arguments' -> { + 'hotbar' -> { + 'type' -> 'int', + 'min' -> 1, + 'max' -> 9, + 'suggest' -> [1,2,3,4,5,6,7,8,9] + }, 'bot' -> { + 'type' -> 'term', + 'suggester' -> _(args) -> ( + player_list = player('all'); + bot_list = l(); + c_for(i = 0, i < length(player_list), i += 1, + one_player_str = player_list:i; + if (scoreboard('carpetBot', one_player_str) == 1, + put(bot_list, length(bot_list), player_list:i) + ); + ); + put(bot_list, length(bot_list), player()); + return(bot_list) + ) + }, + 'killbot' -> { 'type' -> 'term', 'suggester' -> _(args) -> ( player_list = player('all'); @@ -106,18 +133,51 @@ __config() -> { } } }; -__check_offline(player_name) ->( - f_player = player(player_name); - if (!f_player, - print('§4假人'+player_name+'未在线'); - exit() +__on_player_disconnects(player, reason) ->( + delete_all_files(player); + if(scoreboard('carpetBot', player) == 1, + scoreboard_remove('actimeCounter', player); + scoreboard_remove('carpetBot', player); + team_leave(player); + leaveGame = scoreboard('leaveGame', player); + scoreboard('leaveGame', player, leaveGame + 1); ); - if (scoreboard('carpetBot', f_player) != 1, - print('§4'+f_player+'不是假人'); +); +__on_server_shuts_down() ->( + player_list = player('all'); + c_for(i = 0, i < length(player_list), i += 1, + delete_all_files(player_list:i); + if(scoreboard('carpetBot', player) == 1, + scoreboard_remove('actimeCounter', player_list:i); + team_leave(player); + ) + ); + scoreboard_remove('carpetBot'); + team_remove('carpetBot'); + team_remove('shadowedPlayer') +); +check_fakeplayer(player_name) ->( + f_player = player(player_name); + if (!f_player, + ( + print('§4假人'+player_name+'未在线'); + exit() + ), + scoreboard('carpetBot', f_player) != 1 && f_player != player(), + ( + print('§4'+f_player+'不是假人'); + exit() + ) + ) +); +check_offline(player_name) ->( + f_player = player(player_name); + if (!f_player, + print('§4玩家或假人'+player_name+'未在线'); exit() ) ); -__check_online(player_name) ->( +check_online(player_name) ->( f_player = player(player_name); if (f_player, if (scoreboard('carpetBot', f_player) == 1, @@ -128,7 +188,7 @@ __check_online(player_name) ->( exit() ) ); -__check_pos(x) ->( +check_pos(x) ->( x = number(x); if(x == null, print('§4请输入正确的坐标'); @@ -136,33 +196,13 @@ __check_pos(x) ->( ); return(x) ); -__check_dim(s_player,f_player) ->( +check_dim(s_player,f_player) ->( if (s_player~'dimension' != f_player~'dimension', print('§4不在同一维度!'); exit() ); ); -__player_list(i,player_list) ->( - one_player_list = split(' ',join('',slice(player_list,i,i+1))); - if(slice(one_player_list,0,1) == l('假的'), - one_player_str = join('',slice(one_player_list,1,2)); - '' - ); - if(slice(one_player_list,0,1) != l('假的'), - one_player_str = join('',one_player_list); - '' - ); - return(one_player_str) -); -__on_player_disconnects(player, reason) ->( - if(scoreboard('carpetBot', player) == 1, - scoreboard_remove('actimeCounter', player); - __delete_all_files(player); - scoreboard_remove('carpetBot', player); - run('team leave '+ player) - ); -); -__delete_all_files(f_player) ->( +delete_all_files(f_player) ->( delete_file(f_player + '-' + 'attack', 'text'); delete_file(f_player + '-' + 'drop', 'text'); delete_file(f_player + '-' + 'drop_stack', 'text'); @@ -170,42 +210,48 @@ __delete_all_files(f_player) ->( delete_file(f_player + '-' + 'swap_hands', 'text'); delete_file(f_player + '-' + 'use', 'text'); delete_file(f_player + '-' + 'move_vertical', 'text'); - delete_file(f_player + '-' + 'move_transverse', 'text'); + delete_file(f_player + '-' + 'move_transverse', 'text') ); help() ->( print('--使用帮助:'); - print('/tagplayer spawn <玩家名>\n - 生成假人'); - print('/tagplayer kill <玩家名>\n - 删除假人'); - print('/tagplayer killall\n - 删除全部假人'); - print('/tagplayer tp <玩家名> (<仰俯> <偏转>) (atBot)\n - 传送假人到,,,可选<仰俯>和<偏转>角度,如以结尾则相对坐标以假人为原点'); - print('/tagplayer look <玩家名> <仰俯> <偏转>\n - 转动假人视角,可替换为“s”来代表你的视角方向'); - print('/tagplayer look <玩家名> \n - 让假人向<上/下/东/西/南/北>方向看'); - print('/tagplayer look <玩家名> \n - 让假人向<后/左/右>方向看'); - print('/tagplayer move <玩家名> \n - 让假人<向前/向后/向左/向右>移动'); - print('/tagplayer <玩家名> continuous\n - 让假人持续<攻击或挖掘/丢一个物品/丢一组物品/跳跃/换手/使用物品>'); - print('/tagplayer <玩家名> interval <整数>\n - 让假人每<整数>游戏刻<攻击/丢一个物品/丢一组物品/跳跃/换手/使用物品>一次'); - print('/tagplayer <玩家名> once\n - 让假人<攻击或挖掘/丢一个物品/丢一组物品/跳跃/换手/使用物品>一次'); - print('/tagplayer <玩家名> \n - 让假人<丢一个/丢一组><主手/副手>的物品'); - print('/tagplayer <玩家名>\n - 让假人<潜行/站立>'); - print('/tagplayer <玩家名>\n - 让假人准备<疾跑/行走>,在水中疾跑以游泳'); - print('/tagplayer <玩家名>\n - 让假人<乘坐/卸下>'); - print('/tagplayer stop <玩家名>\n - 停止假人的一切动作'); - print('/tagplayer check <玩家名>\n - 检查假人状态'); - print('/tagplayer checkall\n - 检查所有假人状态'); - print('Version: '+global_version); + print('/' + global_filename + ' spawn <玩家名>\n - 生成假人'); + print('/' + global_filename + ' kill <玩家名>\n - 删除假人'); + print('/' + global_filename + ' killall\n - 删除全部假人'); + print('/' + global_filename + ' tp <玩家名> (<仰俯> <偏转>) (atBot)\n - 传送假人到,,,可选<仰俯>和<偏转>角度,如以结尾则相对坐标以假人为原点'); + print('/' + global_filename + ' look <玩家名> <仰俯> <偏转>\n - 转动假人视角,可替换为“s”来代表你的视角方向'); + print('/' + global_filename + ' look <玩家名> \n - 让假人向<上/下/东/西/南/北>方向看'); + print('/' + global_filename + ' look <玩家名> \n - 让假人向<后/左/右>方向看'); + print('/' + global_filename + ' move <玩家名> \n - 让假人<向前/向后/向左/向右>移动'); + print('/' + global_filename + ' <玩家名> continuous\n - 让假人持续<攻击或挖掘/丢一个物品/丢一组物品/跳跃/换手/使用物品>'); + print('/' + global_filename + ' <玩家名> interval <整数>\n - 让假人每<整数>游戏刻<攻击/丢一个物品/丢一组物品/跳跃/换手/使用物品>一次'); + print('/' + global_filename + ' <玩家名> once\n - 让假人<攻击或挖掘/丢一个物品/丢一组物品/跳跃/换手/使用物品>一次'); + print('/' + global_filename + ' <玩家名> <1-9>\n - 更改假人使用的热键栏'); + print('/' + global_filename + ' <玩家名> \n - 让假人<丢一个/丢一组><主手/副手>的物品'); + print('/' + global_filename + ' <玩家名>\n - 让假人<潜行/站立>'); + print('/' + global_filename + ' <玩家名>\n - 让假人准备<疾跑/行走>,在水中疾跑以游泳'); + print('/' + global_filename + ' <玩家名>\n - 让假人<乘坐/卸下>'); + print('/' + global_filename + ' stop <玩家名>\n - 停止假人的一切动作'); + print('/' + global_filename + ' check <玩家名>\n - 检查假人状态'); + print('/' + global_filename + ' checkall\n - 检查所有假人状态'); + print('tagplayer版本: ' + global_version); + print('carpet版本: ' + global_carpet_version:0); + if(number(global_carpet_version:1) < 201216 || global_carpet_version == null, + print('§4tagplayer需要地毯1.4.21或以上来运行!否则会出现预期之外的问题') + ); return() ); reload() ->( - run('script unload tagplayer'); - run('script load tagplayer'); - run('tellraw @a {"text":"tagplayer重载成功!"}'); + run('script load ' + global_filename); + run('tellraw @a {"text":"+ global_filename +重载成功!"}'); return() ); summon(player_name) ->( player_name = slice(player_name,0,15); - __check_online(player_name); + check_online(player_name); s_player = player(); - run(str('player %s spawn at %f %f %f facing %f %f', player_name, s_player~'x', s_player~'y', s_player~'z', query(s_player, 'yaw'), query(s_player, 'pitch') + run( + str('player %s spawn at %f %f %f facing %f %f', + player_name, s_player~'x', s_player~'y', s_player~'z', query(s_player, 'yaw'), query(s_player, 'pitch') ) ); f_player = player(player_name); @@ -213,35 +259,30 @@ summon(player_name) ->( print('§4生成失败'); return() ); - __delete_all_files(f_player); - run('team join carpetBot '+ f_player); + delete_all_files(f_player); + team_add('carpetBot', f_player); run('tellraw @a {"text":"↑假的"}'); scoreboard('carpetBot', f_player, 1); return() ); kill(player_name) ->( f_player = player(player_name); - __check_offline(player_name); - run(str('player %s kill', f_player)); - game_tick(50); - run('tellraw @a {"text":"↑假的"}'); + check_fakeplayer(player_name); + if(f_player != player(), + ( + run('tellraw @a {"text":"↓假的"}'); + run(str('player %s kill', f_player)); + ), + print('§4你不是假人') + ); return() ); killall() ->( - i = 0; - player_list = player('all'); - loop(2147483647,,, - one_player_str = __player_list(i,player_list); - if(one_player_str == '', - break() - ); - if(scoreboard('carpetBot', one_player_str) == 1, - do_fake_player = 1 - ); - run(str('player %s kill', one_player_str)); - i += 1 + player_list = team_list('carpetBot'); + c_for(i = 0, i < length(player_list), i += 1, + run(str('player %s kill', player_list:i)); ); - if(do_fake_player != 1, + if(player_list == l(), print('§4不存在假人'); return() ); @@ -249,10 +290,23 @@ killall() ->( run('tellraw @a {"text":"已清除全部假人"}'); return() ); +//挂机 +shadow() ->( + f_player = player(); + run(str('player %s shadow', f_player)); + scoreboard('carpetBot', f_player, 1); + team_add('shadowedPlayer', f_player); + return() +); +//热键栏 +hotbar(player_name, hotbar) ->( + run(str('player %s hotbar %d', player_name, hotbar)); + return() +); //攻击 attack_continuous(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s attack continuous', player_name)); delete_file(f_player + '-' + 'attack', 'text'); write_file(f_player + '-' + 'attack', 'text', 0); @@ -260,7 +314,7 @@ attack_continuous(player_name) ->( ); attack_interval(player_name,tick) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s attack interval %d', player_name, tick)); delete_file(f_player + '-' + 'attack', 'text'); write_file(f_player + '-' + 'attack', 'text', tick); @@ -268,14 +322,14 @@ attack_interval(player_name,tick) ->( ); attack_once(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s attack once', player_name)); delete_file(f_player + '-' + 'attack', 'text'); return() ); attack_stop(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s attack', player_name)); delete_file(f_player + '-' + 'attack', 'text'); return() @@ -283,7 +337,7 @@ attack_stop(player_name) ->( //丢弃 drop_continuous(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s drop continuous', player_name)); delete_file(f_player + '-' + 'drop', 'text'); write_file(f_player + '-' + 'drop', 'text', 0); @@ -291,46 +345,46 @@ drop_continuous(player_name) ->( ); drop_interval(player_name,tick) ->( f_player = player(player_name); - __check_offline(player_name); run(str('player %s drop interval %d', player_name, tick)); + check_fakeplayer(player_name); run(str('player %s drop interval %d', player_name, tick)); delete_file(f_player + '-' + 'drop', 'text'); write_file(f_player + '-' + 'drop', 'text', tick); return() ); drop_once(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s drop once', player_name)); delete_file(f_player + '-' + 'drop', 'text'); return() ); drop_stop(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s drop', player_name)); delete_file(f_player + '-' + 'drop', 'text'); return() ); drop_all(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s drop all', player_name)); return() ); drop_offhand(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); return() ); drop_mainhand(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s drop mainhand', player_name)); return() ); //丢弃一组 drop_stack_continuous(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s dropStack continuous', player_name)); delete_file(f_player + '-' + 'drop_stack', 'text'); write_file(f_player + '-' + 'drop_stack', 'text', 0); @@ -338,7 +392,7 @@ drop_stack_continuous(player_name) ->( ); drop_stack_interval(player_name,tick) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s dropStack interval %d', player_name, tick)); delete_file(f_player + '-' + 'drop_stack', 'text'); write_file(f_player + '-' + 'drop_stack', 'text', tick); @@ -346,41 +400,40 @@ drop_stack_interval(player_name,tick) ->( ); drop_stack_once(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s dropStack once', player_name)); - delete(global_bot_state:f_player:'drop_stack'); delete_file(f_player + '-' + 'drop_stack', 'text'); return() ); drop_stack_stop(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s dropStack', player_name)); delete_file(f_player + '-' + 'drop_stack', 'text'); return() ); drop_stack_all(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s dropStack all', player_name)); return() ); drop_stack_offhand(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s dropStack offhand', player_name)); return() ); drop_stack_mainhand(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s dropStack mainhand', player_name)); return() ); //跳跃 jump_continuous(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s jump continuous', player_name)); delete_file(f_player + '-' + 'jump', 'text'); write_file(f_player + '-' + 'jump', 'text', 0); @@ -388,7 +441,7 @@ jump_continuous(player_name) ->( ); jump_interval(player_name,tick) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s jump interval %d', player_name, tick)); delete_file(f_player + '-' + 'jump', 'text'); write_file(f_player + '-' + 'jump', 'text', tick); @@ -396,14 +449,14 @@ jump_interval(player_name,tick) ->( ); jump_once(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s jump once', player_name)); delete_file(f_player + '-' + 'jump', 'text'); return() ); jump_stop(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s jump', player_name)); delete_file(f_player + '-' + 'jump', 'text'); return() @@ -411,7 +464,7 @@ jump_stop(player_name) ->( //换手 swap_hands_continuous(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s swapHands continuous', player_name)); delete_file(f_player + '-' + 'swap_hands', 'text'); write_file(f_player + '-' + 'swap_hands', 'text', 0); @@ -419,7 +472,7 @@ swap_hands_continuous(player_name) ->( ); swap_hands_interval(player_name,tick) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s swapHands interval %d', player_name, tick)); delete_file(f_player + '-' + 'swap_hands', 'text'); write_file(f_player + '-' + 'swap_hands', 'text', tick); @@ -427,14 +480,14 @@ swap_hands_interval(player_name,tick) ->( ); swap_hands_once(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s swapHands once', player_name)); delete_file(f_player + '-' + 'swap_hands', 'text'); return() ); swap_hands_stop(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s swapHands', player_name)); delete_file(f_player + '-' + 'swap_hands', 'text'); return() @@ -442,7 +495,7 @@ swap_hands_stop(player_name) ->( //右键 use_continuous(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s use continuous', player_name)); delete_file(f_player + '-' + 'use', 'text'); write_file(f_player + '-' + 'use', 'text', 0); @@ -450,21 +503,21 @@ use_continuous(player_name) ->( ); use_interval(player_name,tick) ->( f_player = player(player_name); - __check_offline(player_name); run(str('player %s use interval %d', player_name, tick)); + check_fakeplayer(player_name); run(str('player %s use interval %d', player_name, tick)); delete_file(f_player + '-' + 'use', 'text'); write_file(f_player + '-' + 'use', 'text', tick); return() ); use_once(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s use once', player_name)); delete_file(f_player + '-' + 'use', 'text'); return() ); use_stop(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s use', player_name)); delete_file(f_player + '-' + 'use', 'text'); return() @@ -472,27 +525,27 @@ use_stop(player_name) ->( //骑乘 mount(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s mount', player_name)); return() ); dismount(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s dismount', player_name)); return() ); //冲刺 sprint(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s sprint', player_name)); write_file(f_player + '-' + 'sprint', 'text', tick); return() ); unsprint(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s unsprint', player_name)); delete_file(f_player + '-' + 'sprint', 'text'); return() @@ -500,14 +553,14 @@ unsprint(player_name) ->( //下蹲 sneak(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s sneak', player_name)); write_file(f_player + '-' + 'sneak', 'text', tick); return() ); unsneak(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s unsneak', player_name)); delete_file(f_player + '-' + 'sneak', 'text'); return() @@ -515,19 +568,19 @@ unsneak(player_name) ->( //转向 turn_back(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s turn back', player_name)); return() ); turn_left(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s turn left', player_name)); return() ); turn_right(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s turn right', player_name)); return() ); @@ -535,7 +588,7 @@ turn_right(player_name) ->( look(player_name,rotation) ->( print(rotation); f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); s_player = player(); x = (rotation:1)%360; y = (rotation:0)%180; @@ -558,50 +611,50 @@ look(player_name,rotation) ->( ); look_up(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s look up', player_name)); return() ); look_down(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s look down', player_name)); return() ); look_east(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s look east', player_name)); return() ); look_north(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s look north', player_name)); return() ); look_south(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s look south', player_name)); return() ); look_west(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s look west', player_name)); return() ); look_pos(player_name, position) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s look at %f %f %f', player_name, position:0, position:1, position:2)); return() ); //移动 move_backward(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s move backward', player_name)); delete_file(f_player + '-' + 'move_vertical', 'text'); write_file(f_player + '-' + 'move_vertical', 'text', 'backward'); @@ -609,7 +662,7 @@ move_backward(player_name) ->( ); move_forward(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s move forward', player_name)); delete_file(f_player + '-' + 'move_vertical', 'text'); write_file(f_player + '-' + 'move_vertical', 'text', 'forward'); @@ -617,7 +670,7 @@ move_forward(player_name) ->( ); move_left(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s move left', player_name)); delete_file(f_player + '-' + 'move_transverse', 'text'); write_file(f_player + '-' + 'move_transverse', 'text', 'left'); @@ -625,7 +678,7 @@ move_left(player_name) ->( ); move_right(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s move right', player_name)); delete_file(f_player + '-' + 'move_transverse', 'text'); write_file(f_player + '-' + 'move_transverse', 'text', 'right'); @@ -633,7 +686,7 @@ move_right(player_name) ->( ); move_stop(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s move', player_name)); delete_file(f_player + '-' + 'move_vertical', 'text'); delete_file(f_player + '-' + 'move_transverse', 'text'); @@ -642,15 +695,15 @@ move_stop(player_name) ->( //停止 stop(player_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); run(str('player %s stop', player_name)); - __delete_all_files(f_player); + delete_all_files(f_player); return() ); //传送 tp(player_name, position) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); s_player = player(); x = position:0; y = position:1; @@ -666,7 +719,7 @@ tp(player_name, position) ->( ); tp_with_rotation(player_name, position, rotation) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); s_player = player(); f_player = player(player_name); x = position:0; @@ -696,7 +749,7 @@ tp_with_rotation(player_name, position, rotation) ->( ); tp_to_player(player_name, target_name) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); s_player = player(target_name); if (!s_player, print('§4玩家未在线'); @@ -708,7 +761,7 @@ tp_to_player(player_name, target_name) ->( ); tp_at_bot(player_name, position) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); s_player = player(); x = position:0; y = position:1; @@ -724,7 +777,7 @@ tp_at_bot(player_name, position) ->( ); tp_at_bot_with_rotation(player_name, position, rotation) ->( f_player = player(player_name); - __check_offline(player_name); + check_fakeplayer(player_name); s_player = player(); f_player = player(player_name); x = position:0; @@ -754,9 +807,14 @@ tp_at_bot_with_rotation(player_name, position, rotation) ->( ); //状态检查 check(player_name) ->( + check_offline(player_name); f_player = player(player_name); - __check_offline(player_name); - print('假人“'+f_player+'”:'); + if(scoreboard('carpetBot', f_player) == 1, + ( + print('假人“'+f_player+'”:'); + ), + print('玩家“'+f_player+'”:'); + ); //血量 inner_health = number(str('%d',query(f_player,'health')+0.9)); if(inner_health <= 5, @@ -1120,26 +1178,19 @@ check(player_name) ->( noAct = false ); if(noAct == true, - print('- 无动作') + print('- 无地毯动作') ); return() ); checkall() ->( - i = 0; player_list = player('all'); - loop(2147483647,,, - one_player_str = __player_list(i,player_list); - if(one_player_str == '', - break() - ); - if(scoreboard('carpetBot', one_player_str) == 1, - check(one_player_str); - do_fake_player = 1 - ); - i += 1 - ); - if(do_fake_player != 1, - print('§4当前无假人') + c_for(i = 0, i < length(player_list), i += 1, + check(player_list:i); ); return() +); +run(str('tellraw @a {"text": "[版本信息]tagplayer版本: ' + global_version + '", "color": "#ffd900"}')); +run(str('tellraw @a {"text": "[版本信息]carpet版本: ' + global_carpet_version:0 + '", "color": "#ffd900"}')); +if(number(global_carpet_version:1) < 201216 || global_carpet_version == null, + run(str('tellraw @a {"text": "[错误]tagplayer需要地毯1.4.21或以上来运行!否则会出现预期之外的问题", "color": "#ff6100"}');) ); \ No newline at end of file