diff --git a/CHANGELOG.md b/CHANGELOG.md index 84638fe..d12d48e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,24 @@ >所有可查阅的更改记录皆可在此处找到 +### v2.2 pre1 + +- `census`地毯脚本更新至1.3.1版本 + - 修复一些显示bug + - 现在基本可以正常使用**仍然不能保证稳定性(数据安全性)** +- 添加了可以用来`迁移`数据的Python脚本 `score_move` + - 使用时与`server`文件夹同级 + - `score_move.py` + - `server` + - `server.jar` + - ······ + - ······ + - ······ +- 更改了文件结构,将地毯脚本移动到`脚本`文件夹中 +- 可能会有release +- 以后准备要重写整个Datapack了 + - 3.0! + ### v2.1.3 pre1 - 添加`census`地毯脚本 diff --git a/README.md b/README.md index 2443787..34ae616 100644 --- a/README.md +++ b/README.md @@ -42,11 +42,17 @@ A Minecraft Datapack | fz.aviate1m | 滑翔距离 | - 提供一些[地毯脚本](#地毯脚本)(`.sc` 文件):***请在升级数据包的同时替换这些工具!!!*** +- 还有一个用于`census`脚本转移数据的python脚本`score_move` ## 更新记录 更新记录可在[此处](./CHANGELOG.md)找到 +- 目前稳定版 + - 2.1.2 & 2.0.10 +- 目前测试版 + - 2.2 pre1 + ## 使用 ### 注意事项 @@ -124,3 +130,8 @@ A Minecraft Datapack - 输入 `/restore_scores by_whitelist` 开始数据迁移 - 输入 `/script unload restore_scores` 卸载工具 - 记得用完就删掉它! + +### `Census.sc` + +- `/census` +- 一个还在测试的脚本,可以输出挖掘榜 diff --git a/c.sc b/脚本/c.sc similarity index 100% rename from c.sc rename to 脚本/c.sc diff --git a/census.sc b/脚本/census.sc similarity index 100% rename from census.sc rename to 脚本/census.sc diff --git a/here.sc b/脚本/here.sc similarity index 100% rename from here.sc rename to 脚本/here.sc diff --git a/restore_scores.sc b/脚本/restore_scores.sc similarity index 100% rename from restore_scores.sc rename to 脚本/restore_scores.sc diff --git a/s.sc b/脚本/s.sc similarity index 100% rename from s.sc rename to 脚本/s.sc diff --git a/脚本/score_move.py b/脚本/score_move.py new file mode 100644 index 0000000..ffea692 --- /dev/null +++ b/脚本/score_move.py @@ -0,0 +1,56 @@ +""" +writen by shenjackyuanjie +mail: 3695888@qq.com +github: @shenjackyuanjie +gitee: @shenjackyuanjie +""" + +# ------------------------------- +# Census loader +# Copyright © 2021 by shenjackyuanjie +# All rights reserved +# ------------------------------- + +import os +import json + +USERCACHE_PATH = os.path.join('server', 'usercache.json') +STATS_DIR = os.path.join('server', 'world', 'stats') +DATA_DIR = os.path.join('server', 'world', 'scripts') +CENSUS_DIR = os.path.join('server', 'world', 'scripts', 'shared', 'census') + +# 引号内字符匹配错误 +# text in the quote is not matched + +if __name__ == '__main__': + # 加载玩家名列表 + with open(USERCACHE_PATH, 'r') as cache_file: + uuid_cache = json.load(cache_file) # type: list + uuid_list = {} + # 如果玩家名称不是bot就存进列表里 + for name in uuid_cache: + if name['name'][:3].lower() == 'bot': + continue + uuid_list[name['name']] = name['uuid'] + # 检测是否存在census的文件夹 + if 'shared' not in os.listdir(DATA_DIR): + os.mkdir(DATA_DIR + '/shared') + if 'census' not in os.listdir(DATA_DIR + '/shared'): + os.mkdir(CENSUS_DIR) + for uuid in uuid_list: + # 加载玩家的统计数据 + with open(os.path.join(STATS_DIR, uuid_list[uuid] + '.json'), 'r') as stats_file: + stats = json.load(stats_file) # type: dict + # 计算玩家的分数 + player_score = {} + for score_type in stats['stats']: # 类型,比如 mined + player_score[score_type[10:]] = {} # 创建字典套娃 + count = 0 + for score in stats['stats'][score_type]: # 类型中的每一种"东西" + count += stats['stats'][score_type][score] # 统计每种东西的数量 + player_score[score_type[10:]][score[10:]] = stats['stats'][score_type][score] + player_score[score_type[10:]]['total'] = count + # pprint(player_score) + file_name = f'{CENSUS_DIR}/{uuid}.json' + with open(file_name, 'w') as census_file: + json.dump(player_score, census_file) diff --git a/tagplayer.sc b/脚本/tagplayer.sc similarity index 82% rename from tagplayer.sc rename to 脚本/tagplayer.sc index 39afc51..426dfa9 100644 --- a/tagplayer.sc +++ b/脚本/tagplayer.sc @@ -2,38 +2,42 @@ //************请将该文件放入"world\scripts"文件夹中************ //*************可以自定义插件名,但不能为“player”************** //************************************************************* -__on_start() -> ( - if(scoreboard_add('carpetBot') == null, - scoreboard_property('carpetBot', 'criterion', 'dummy'); - ); - team_add('carpetBot'); - team_add('shadowedPlayer'); - team_property('carpetBot', 'prefix', '假的'); - team_property('shadowedPlayer', 'prefix', '挂机'); - global_version = '2.4.0'; - global_carpet_version = split('\\+v',system_info('scarpet_version')); - global_require_carpet_version = ['1.4.30', 210331]; - global_filename = system_info('app_name'); - run('data merge storage minecraft:fz.tagplayer {filename:"' + global_filename + '"}'); - run('carpet setDefault commandPlayer ops'); - reload(); - run(str('tellraw @a {"text": "[版本信息]' + global_filename + '版本: ' + global_version + '", "color": "#ffd900"}')); - run(str('tellraw @a {"text": "[版本信息]carpet版本: ' + global_carpet_version:0 + '", "color": "#ffd900"}')); - if(number(global_carpet_version:1) < global_require_carpet_version:1 || global_carpet_version == null, - run(str('tellraw @a {"text": "[错误]' + global_filename + '需要地毯' + global_require_carpet_version:0 + '或以上来运行!否则会出现预期之外的问题", "color": "#ff6100"}')); - ); +scoreboard_add('carpetBot'); +team_add('carpetBot'); +team_add('shadowedPlayer'); +team_property('carpetBot', 'prefix', '假的'); +team_property('shadowedPlayer', 'prefix', '挂机'); +global_version = '2.4.0'; +global_carpet_version = split('\\+v',system_info('scarpet_version')); +global_require_carpet_version = ['1.4.22', 210113]; +global_filename = system_info('app_name'); +run('data merge storage minecraft:fz.tagplayer {filename:"' + global_filename + '"}'); +run('carpet setDefault commandPlayer true'); + +config = read_file('config/config', 'json'); +global_config = m(); +if (config == null, + ( + global_config = {'allow_spawning_whitelist_players' -> 'true'}; + ), + if (config:'allow_spawning_whitelist_players' == null || + (config:'allow_spawning_whitelist_players' != 'true' && config:'allow_spawning_whitelist_players' != 'false'), + ( + global_config:'allow_spawning_whitelist_players' = 'true' + ), + global_config:'allow_spawning_whitelist_players' = config:'allow_spawning_whitelist_players'; + ); ); +logger(config:'allow_spawning_whitelist_players'); +delete_file('config/config', 'json'); +write_file('config/config', 'json', global_config); + __config() -> { 'scope' -> 'global', 'stay_loaded' -> true, 'allow_command_conflicts' -> true, 'commands' -> { '' -> 'help', - 'tp ' -> 'tp', - 'tp ' -> 'tp_with_rotation', - 'tp ' -> 'tp_to_player', - 'tp atBot' -> 'tp_at_bot', - 'tp atBot' -> 'tp_at_bot_with_rotation', 'spawn ' -> ['summon',null,null,null], 'spawn at ' -> ['summon',null,null], 'spawn at facing ' -> ['summon',null], @@ -95,13 +99,17 @@ __config() -> { 'stop ' -> 'stop', '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', - 'reload' -> 'reload' }, 'arguments' -> { 'dimension' -> { - 'type' -> 'term', + 'type' -> 'text', 'suggest' -> ['overworld','the_nether','the_end'] }, 'hotbar' -> { @@ -122,8 +130,8 @@ __config() -> { ); ); put(bot_list, length(bot_list), player()); - return(bot_list); - ); + return(bot_list) + ) }, 'killbot' -> { 'type' -> 'term', @@ -136,8 +144,8 @@ __config() -> { put(bot_list, length(bot_list), player_list:i) ); ); - return(bot_list); - ); + return(bot_list) + ) }, 'player' -> { 'type' -> 'term', @@ -153,8 +161,8 @@ __config() -> { }, 'position' -> { 'type' -> 'location' - }; - }; + } + } }; __on_player_disconnects(player, reason) ->( delete_all_files(player); @@ -176,32 +184,32 @@ __on_server_shuts_down() ->( if(scoreboard('carpetBot', player) == 1, scoreboard_remove('actimeCounter', player_list:i); team_leave(player); - ); + ) ); scoreboard_remove('carpetBot'); team_remove('carpetBot'); - team_remove('shadowedPlayer'); + team_remove('shadowedPlayer') ); check_fakeplayer(player_name) ->( f_player = player(player_name); if (!f_player, ( print('§4假人'+player_name+'未在线'); - exit(); + exit() ), - scoreboard('carpetBot', f_player) != 1 || f_player == player(), + scoreboard('carpetBot', f_player) != 1 && f_player != player(), ( print('§4'+f_player+'不是假人'); - exit(); - ); - ); + exit() + ) + ) ); check_offline(player_name) ->( f_player = player(player_name); if (!f_player, print('§4玩家或假人'+player_name+'未在线'); - exit(); - ); + exit() + ) ); check_online(player_name) ->( if (global_config:'allow_spawning_whitelist_players' == 'false', @@ -217,24 +225,24 @@ check_online(player_name) ->( if (f_player, if (scoreboard('carpetBot', f_player) == 1, print('§4假人'+f_player+'已经在线了'); - exit(); + exit() ); print('§4玩家'+f_player+'已经在线了'); - exit(); - ); + exit() + ) ); check_pos(x) ->( x = number(x); if(x == null, print('§4请输入正确的坐标'); - exit(); + exit() ); - return(x); + return(x) ); check_dim(s_player,f_player) ->( if (s_player~'dimension' != f_player~'dimension', print('§4不在同一维度!'); - exit(); + exit() ); ); delete_all_files(f_player) ->( @@ -245,40 +253,7 @@ 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'); -); -reload() -> ( - config = read_file('config/config', 'json'); - global_config = m(); - if (config == null, - ( - global_config = { - 'allow_spawning_whitelist_players' -> 'true', - 'allow_bot_tp' -> 'true' - }; - ), - if (config:'allow_spawning_whitelist_players' == null || - ( - config:'allow_spawning_whitelist_players' != 'true' && - config:'allow_spawning_whitelist_players' != 'false' - ), - ( - global_config:'allow_spawning_whitelist_players' = 'true' - ), - global_config:'allow_spawning_whitelist_players' = config:'allow_spawning_whitelist_players'; - ); - if (config:'allow_bot_tp' == null || (config:'allow_bot_tp' != 'true' && config:'allow_bot_tp' != 'false'), - ( - global_config:'allow_bot_tp' = 'true' - ), - global_config:'allow_bot_tp' = config:'allow_bot_tp'; - ); - ); - logger(global_config:'allow_spawning_whitelist_players'); - logger(global_config:'allow_bot_tp'); - delete_file('config/config', 'json'); - write_file('config/config', 'json', global_config); - print('配置文件重载成功!'); + delete_file(f_player + '-' + 'move_transverse', 'text') ); help() ->( print('--使用帮助:'); @@ -306,38 +281,43 @@ help() ->( if(number(global_carpet_version:1) < global_require_carpet_version:1 || global_carpet_version == null, print('§4' + global_filename + '需要地毯' + global_require_carpet_version:0 + '或以上来运行!否则会出现预期之外的问题') ); - return(); + return() +); +reload() ->( + run('script load ' + global_filename); + run('tellraw @a {"text":"+ global_filename +重载成功!"}'); + return() ); summon(player_name, position, rotation, dimension) ->( if(length(player_name) > 16, - player_name = slice(player_name,0,15); + player_name = slice(player_name,0,15) ); check_online(player_name); s_player = player(); if(position == null, - position = query(s_player, 'pos'); + position = query(s_player, 'pos') ); if(rotation == null, - rotation = l(query(s_player, 'yaw'), query(s_player, 'pitch')); + rotation = l(query(s_player, 'yaw'), query(s_player, 'pitch')) ); if(dimension == null, - dimension = query(s_player, 'dimension'); + dimension = query(s_player, 'dimension') ); run( str('player %s spawn at %f %f %f facing %f %f in %s', player_name, position:0, position:1, position:2, rotation:0, rotation:1, dimension - ); + ) ); f_player = player(player_name); if (!f_player, print('§4生成失败'); - return(); + return() ); delete_all_files(f_player); team_add('carpetBot', f_player); run('tellraw @a {"text":"↑假的"}'); scoreboard('carpetBot', f_player, 1); - return(); + return() ); kill(player_name) ->( f_player = player(player_name); @@ -347,9 +327,9 @@ kill(player_name) ->( run('tellraw @a {"text":"↓假的"}'); run(str('player %s kill', f_player)); ), - print('§4你不是假人'); + print('§4你不是假人') ); - return(); + return() ); killall() ->( player_list = team_list('carpetBot'); @@ -358,11 +338,11 @@ killall() ->( ); if(player_list == l(), print('§4不存在假人'); - return(); + return() ); game_tick(50); run('tellraw @a {"text":"已清除全部假人"}'); - return(); + return() ); //挂机 shadow() ->( @@ -370,12 +350,12 @@ shadow() ->( run(str('player %s shadow', f_player)); scoreboard('carpetBot', f_player, 1); team_add('shadowedPlayer', f_player); - return(); + return() ); //热键栏 hotbar(player_name, hotbar) ->( run(str('player %s hotbar %d', player_name, hotbar)); - return(); + return() ); //攻击 attack_continuous(player_name) ->( @@ -384,7 +364,7 @@ attack_continuous(player_name) ->( run(str('player %s attack continuous', player_name)); delete_file(f_player + '-' + 'attack', 'text'); write_file(f_player + '-' + 'attack', 'text', 0); - return(); + return() ); attack_interval(player_name,tick) ->( f_player = player(player_name); @@ -392,21 +372,21 @@ attack_interval(player_name,tick) ->( run(str('player %s attack interval %d', player_name, tick)); delete_file(f_player + '-' + 'attack', 'text'); write_file(f_player + '-' + 'attack', 'text', tick); - return(); + return() ); attack_once(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s attack once', player_name)); delete_file(f_player + '-' + 'attack', 'text'); - return(); + return() ); attack_stop(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s attack', player_name)); delete_file(f_player + '-' + 'attack', 'text'); - return(); + return() ); //丢弃 drop_continuous(player_name) ->( @@ -415,7 +395,7 @@ drop_continuous(player_name) ->( run(str('player %s drop continuous', player_name)); delete_file(f_player + '-' + 'drop', 'text'); write_file(f_player + '-' + 'drop', 'text', 0); - return(); + return() ); drop_interval(player_name,tick) ->( f_player = player(player_name); @@ -423,38 +403,38 @@ drop_interval(player_name,tick) ->( run(str('player %s drop interval %d', player_name, tick)); delete_file(f_player + '-' + 'drop', 'text'); write_file(f_player + '-' + 'drop', 'text', tick); - return(); + return() ); drop_once(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s drop once', player_name)); delete_file(f_player + '-' + 'drop', 'text'); - return(); + return() ); drop_stop(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s drop', player_name)); delete_file(f_player + '-' + 'drop', 'text'); - return(); + return() ); drop_all(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s drop all', player_name)); - return(); + return() ); drop_offhand(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); - return(); + return() ); drop_mainhand(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s drop mainhand', player_name)); - return(); + return() ); //丢弃一组 drop_stack_continuous(player_name) ->( @@ -463,7 +443,7 @@ drop_stack_continuous(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); - return(); + return() ); drop_stack_interval(player_name,tick) ->( f_player = player(player_name); @@ -471,39 +451,39 @@ drop_stack_interval(player_name,tick) ->( 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); - return(); + return() ); drop_stack_once(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s dropStack once', player_name)); delete_file(f_player + '-' + 'drop_stack', 'text'); - return(); + return() ); drop_stack_stop(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s dropStack', player_name)); delete_file(f_player + '-' + 'drop_stack', 'text'); - return(); + return() ); drop_stack_all(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s dropStack all', player_name)); - return(); + return() ); drop_stack_offhand(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s dropStack offhand', player_name)); - return(); + return() ); drop_stack_mainhand(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s dropStack mainhand', player_name)); - return(); + return() ); //跳跃 jump_continuous(player_name) ->( @@ -512,7 +492,7 @@ jump_continuous(player_name) ->( run(str('player %s jump continuous', player_name)); delete_file(f_player + '-' + 'jump', 'text'); write_file(f_player + '-' + 'jump', 'text', 0); - return(); + return() ); jump_interval(player_name,tick) ->( f_player = player(player_name); @@ -520,21 +500,21 @@ jump_interval(player_name,tick) ->( run(str('player %s jump interval %d', player_name, tick)); delete_file(f_player + '-' + 'jump', 'text'); write_file(f_player + '-' + 'jump', 'text', tick); - return(); + return() ); jump_once(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s jump once', player_name)); delete_file(f_player + '-' + 'jump', 'text'); - return(); + return() ); jump_stop(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s jump', player_name)); delete_file(f_player + '-' + 'jump', 'text'); - return(); + return() ); //换手 swap_hands_continuous(player_name) ->( @@ -543,7 +523,7 @@ swap_hands_continuous(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); - return(); + return() ); swap_hands_interval(player_name,tick) ->( f_player = player(player_name); @@ -551,21 +531,21 @@ swap_hands_interval(player_name,tick) ->( 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); - return(); + return() ); swap_hands_once(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s swapHands once', player_name)); delete_file(f_player + '-' + 'swap_hands', 'text'); - return(); + return() ); swap_hands_stop(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s swapHands', player_name)); delete_file(f_player + '-' + 'swap_hands', 'text'); - return(); + return() ); //右键 use_continuous(player_name) ->( @@ -574,7 +554,7 @@ use_continuous(player_name) ->( run(str('player %s use continuous', player_name)); delete_file(f_player + '-' + 'use', 'text'); write_file(f_player + '-' + 'use', 'text', 0); - return(); + return() ); use_interval(player_name,tick) ->( f_player = player(player_name); @@ -582,34 +562,34 @@ use_interval(player_name,tick) ->( run(str('player %s use interval %d', player_name, tick)); delete_file(f_player + '-' + 'use', 'text'); write_file(f_player + '-' + 'use', 'text', tick); - return(); + return() ); use_once(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s use once', player_name)); delete_file(f_player + '-' + 'use', 'text'); - return(); + return() ); use_stop(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s use', player_name)); delete_file(f_player + '-' + 'use', 'text'); - return(); + return() ); //骑乘 mount(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s mount', player_name)); - return(); + return() ); dismount(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s dismount', player_name)); - return(); + return() ); //冲刺 sprint(player_name) ->( @@ -617,14 +597,14 @@ sprint(player_name) ->( check_fakeplayer(player_name); run(str('player %s sprint', player_name)); write_file(f_player + '-' + 'sprint', 'text', tick); - return(); + return() ); unsprint(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s unsprint', player_name)); delete_file(f_player + '-' + 'sprint', 'text'); - return(); + return() ); //下蹲 sneak(player_name) ->( @@ -632,33 +612,33 @@ sneak(player_name) ->( check_fakeplayer(player_name); run(str('player %s sneak', player_name)); write_file(f_player + '-' + 'sneak', 'text', tick); - return(); + return() ); unsneak(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s unsneak', player_name)); delete_file(f_player + '-' + 'sneak', 'text'); - return(); + return() ); //转向 turn_back(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s turn back', player_name)); - return(); + return() ); turn_left(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s turn left', player_name)); - return(); + return() ); turn_right(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s turn right', player_name)); - return(); + return() ); //看向 look(player_name,rotation) ->( @@ -683,49 +663,49 @@ look(player_name,rotation) ->( modify(player(player_name), 'yaw', x); modify(player(player_name), 'pitch', y); print(str('已将'+player_name+'的视角指向§a[%.1f,%.1f]',x,y)); - return(); + return() ); look_up(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s look up', player_name)); - return(); + return() ); look_down(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s look down', player_name)); - return(); + return() ); look_east(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s look east', player_name)); - return(); + return() ); look_north(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s look north', player_name)); - return(); + return() ); look_south(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s look south', player_name)); - return(); + return() ); look_west(player_name) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s look west', player_name)); - return(); + return() ); look_pos(player_name, position) ->( f_player = player(player_name); check_fakeplayer(player_name); run(str('player %s look at %f %f %f', player_name, position:0, position:1, position:2)); - return(); + return() ); //移动 move_backward(player_name) ->( @@ -734,7 +714,7 @@ move_backward(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'); - return(); + return() ); move_forward(player_name) ->( f_player = player(player_name); @@ -742,7 +722,7 @@ move_forward(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'); - return(); + return() ); move_left(player_name) ->( f_player = player(player_name); @@ -750,7 +730,7 @@ move_left(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'); - return(); + return() ); move_right(player_name) ->( f_player = player(player_name); @@ -758,7 +738,7 @@ move_right(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'); - return(); + return() ); move_stop(player_name) ->( f_player = player(player_name); @@ -766,7 +746,7 @@ move_stop(player_name) ->( run(str('player %s move', player_name)); delete_file(f_player + '-' + 'move_vertical', 'text'); delete_file(f_player + '-' + 'move_transverse', 'text'); - return(); + return() ); //停止 stop(player_name) ->( @@ -774,122 +754,112 @@ stop(player_name) ->( check_fakeplayer(player_name); run(str('player %s stop', player_name)); delete_all_files(f_player); - return(); + return() ); //传送 tp(player_name, position) ->( - if(global_config:'allow_bot_tp' == true, - f_player = player(player_name); - check_fakeplayer(player_name); - s_player = player(); - x = position:0; - y = position:1; - if(y>4096 || y<-4096, - print('§4y值不能超过±4096!'); - return(); - ); - z = position:2; - print(s_player~'yaw'+'|'+s_player~'pitch'); - run(str('tp %s %f %f %f %f %f', f_player, x, y, z, s_player~'yaw', s_player~'pitch')); - print(str('已将'+player_name+'传送至§a[%.2f,%.2f,%.2f]',x,y,z)); - ); - return(); + f_player = player(player_name); + check_fakeplayer(player_name); + s_player = player(); + x = position:0; + y = position:1; + if(y>4096 || y<-4096, + print('§4y值不能超过±4096!'); + return() + ); + z = position:2; + print(s_player~'yaw'+'|'+s_player~'pitch'); + run(str('tp %s %f %f %f %f %f', f_player, x, y, z, s_player~'yaw', s_player~'pitch')); + print(str('已将'+player_name+'传送至§a[%.2f,%.2f,%.2f]',x,y,z)); + return() ); tp_with_rotation(player_name, position, rotation) ->( - if(global_config:'allow_bot_tp' == true, - f_player = player(player_name); - check_fakeplayer(player_name); - s_player = player(); - f_player = player(player_name); - x = position:0; - y = position:1; - if(y>4096 || y<-4096, - print('§4y值不能超过±4096!'); - return(); - ); - z = position:2; - yaw = (rotation:1)%360; - pitch = (rotation:0)%180; - if(yaw > 180, - yaw = yaw - 360 - ); - if(yaw < -180, - yaw = yaw + 360 - ); - if(pitch > 90, - pitch = pitch - 180 - ); - if(pitch < -90, - pitch = pitch + 180 - ); - run(str('tp %s %f %f %f %f %f', f_player, x, y, z, yaw, pitch)); - print(str('已将'+player_name+'传送至§a[%.2f,%.2f,%.2f]',x,y,z)); - ); - return(); + f_player = player(player_name); + check_fakeplayer(player_name); + s_player = player(); + f_player = player(player_name); + x = position:0; + y = position:1; + if(y>4096 || y<-4096, + print('§4y值不能超过±4096!'); + return() + ); + z = position:2; + yaw = (rotation:1)%360; + pitch = (rotation:0)%180; + if(yaw > 180, + yaw = yaw - 360 + ); + if(yaw < -180, + yaw = yaw + 360 + ); + if(pitch > 90, + pitch = pitch - 180 + ); + if(pitch < -90, + pitch = pitch + 180 + ); + run(str('tp %s %f %f %f %f %f', f_player, x, y, z, yaw, pitch)); + print(str('已将'+player_name+'传送至§a[%.2f,%.2f,%.2f]',x,y,z)); + return() ); tp_to_player(player_name, target_name) ->( - if(global_config:'allow_bot_tp' == true, - f_player = player(player_name); - check_fakeplayer(player_name); - s_player = player(target_name); - if (!s_player, - print('§4玩家未在线'); - return(); - ); - run(str('tp %s %s', f_player, s_player)); - print(str('已将'+player_name+'传送至'+s_player)); - ); - return(); + f_player = player(player_name); + check_fakeplayer(player_name); + s_player = player(target_name); + if (!s_player, + print('§4玩家未在线'); + return() + ); + run(str('tp %s %s', f_player, s_player)); + print(str('已将'+player_name+'传送至'+s_player)); + return() ); tp_at_bot(player_name, position) ->( - if(global_config:'allow_bot_tp' == true, - f_player = player(player_name); - check_fakeplayer(player_name); - s_player = player(); - x = position:0; - y = position:1; - if(y>4096 || y<-4096, - print('§4y值不能超过±4096!'); - return(); - ); - z = position:2; - print(s_player~'yaw'+'|'+s_player~'pitch'); - run(str('execute at %s run tp %s %f %f %f', f_player, x, y, z)); - print(str('已将'+player_name+'传送至§a[%.2f,%.2f,%.2f]',x,y,z)); - ); - return(); + f_player = player(player_name); + check_fakeplayer(player_name); + s_player = player(); + x = position:0; + y = position:1; + if(y>4096 || y<-4096, + print('§4y值不能超过±4096!'); + return() + ); + z = position:2; + print(s_player~'yaw'+'|'+s_player~'pitch'); + run(str('execute at %s run tp %s %f %f %f', f_player, x, y, z)); + print(str('已将'+player_name+'传送至§a[%.2f,%.2f,%.2f]',x,y,z)); + return() ); tp_at_bot_with_rotation(player_name, position, rotation) ->( - if(global_config:'allow_bot_tp' == true, - f_player = player(player_name); - check_fakeplayer(player_name); - s_player = player(); - f_player = player(player_name); - x = position:0; - y = position:1; - if(y>4096 || y<-4096, - print('§4y值不能超过±4096!'); - return(); - ); - z = position:2; - yaw = (rotation:1)%360; - pitch = (rotation:0)%180; - if(yaw > 180, - yaw = yaw - 360 - ); - if(yaw < -180, - yaw = yaw + 360 - ); - if(pitch > 90, - pitch = pitch - 180 - ); - if(pitch < -90, - pitch = pitch + 180 - ); - run(str('execute at %s run tp %s %f %f %f %f %f', f_player, f_player, x, y, z, yaw, pitch)); - print(str('已将'+player_name+'传送至§a[%.2f,%.2f,%.2f]',x,y,z)); - ); - return(); + f_player = player(player_name); + check_fakeplayer(player_name); + s_player = player(); + f_player = player(player_name); + x = position:0; + y = position:1; + if(y>4096 || y<-4096, + print('§4y值不能超过±4096!'); + return() + ); + z = position:2; + yaw = (rotation:1)%360; + pitch = (rotation:0)%180; + if(yaw > 180, + yaw = yaw - 360 + ); + if(yaw < -180, + yaw = yaw + 360 + ); + if(pitch > 90, + pitch = pitch - 180 + ); + if(pitch < -90, + pitch = pitch + 180 + ); + run(str('execute at %s run tp %s %f %f %f %f %f', f_player, f_player, x, y, z, yaw, pitch)); + print(str('已将'+player_name+'传送至§a[%.2f,%.2f,%.2f]',x,y,z)); + return() ); //状态检查 check(player_name) ->( @@ -994,7 +964,7 @@ check(player_name) ->( inner_sec = inner_attack/20; print('- 每' + inner_attack + '游戏刻(' + inner_sec + '游戏秒)尝试攻击一次'); noAct = false - ); + ) ); //扔东西 inner_drop = read_file(f_player + '-' + 'drop', 'text'):0; @@ -1007,7 +977,7 @@ check(player_name) ->( inner_sec = inner_drop/20; print('- 每' + inner_drop + '游戏刻(' + inner_sec + '游戏秒)扔1个物品'); noAct = false - ); + ) ); inner_drop_stack = read_file(f_player + '-' + 'drop_stack', 'text'):0; if(inner_drop_stack != null, @@ -1019,7 +989,7 @@ check(player_name) ->( inner_sec = inner_drop_stack/20; print('- 每' + inner_drop_stack + '游戏刻(' + inner_sec + '游戏秒)扔1个物品'); noAct = false - ); + ) ); //跳跃 inner_jump = read_file(f_player + '-' + 'jump', 'text'):0; @@ -1032,7 +1002,7 @@ check(player_name) ->( inner_sec = inner_jump/20; print('- 每' + inner_jump + '游戏刻(' + inner_sec + '游戏秒)尝试跳跃一次'); noAct = false - ); + ) ); //换手 inner_swap_hands = read_file(f_player + '-' + 'swap_hands', 'text'):0; @@ -1045,7 +1015,7 @@ check(player_name) ->( inner_sec = inner_swap_hands/20; print('- 每' + inner_swap_hands + '游戏刻(' + inner_sec + '游戏秒)交换一次左右手的物品'); noAct = false - ); + ) ); //使用物品 inner_use = read_file(f_player + '-' + 'use', 'text'):0; @@ -1058,7 +1028,7 @@ check(player_name) ->( inner_sec = inner_use/20; print('- 每' + inner_use + '游戏刻(' + inner_sec + '游戏秒)尝试使用一次物♂品'); noAct = false - ); + ) ); //移动**********************************重点********************************* inner_move_vertical = read_file(f_player + '-' + 'move_vertical', 'text'):0; @@ -1076,7 +1046,7 @@ check(player_name) ->( if(inner_move_transverse == null, print('- 正在向前潜行↑'); noAct = false - ); + ) ); if(inner_move_vertical == 'backward', if(inner_move_transverse == 'right', @@ -1090,7 +1060,7 @@ check(player_name) ->( if(inner_move_transverse == null, print('- 正在向后潜行↓'); noAct = false - ); + ) ); if(inner_move_vertical == null, if(inner_move_transverse == 'right', @@ -1104,8 +1074,8 @@ check(player_name) ->( if(inner_move_transverse == null, print('- 正在潜伏'); noAct = false - ); - ); + ) + ) ); if(inner_sprint == true, if(inner_swim == true, @@ -1121,7 +1091,7 @@ check(player_name) ->( if(inner_move_transverse == null, print('- 正在向前游泳↑'); noAct = false - ); + ) ); if(inner_move_vertical == 'backward', if(inner_move_transverse == 'right', @@ -1135,7 +1105,7 @@ check(player_name) ->( if(inner_move_transverse == null, print('- 正在向后游泳↓§e(没错它可以开挂)'); noAct = false - ); + ) ); if(inner_move_vertical == null, if(inner_move_transverse == 'right', @@ -1149,8 +1119,8 @@ check(player_name) ->( if(inner_move_transverse == null, print('- 正在原地游泳↓§e(没错它可以开挂)'); noAct = false - ); - ); + ) + ) ); if(inner_swim == false, if(inner_move_vertical == 'forward', @@ -1165,7 +1135,7 @@ check(player_name) ->( if(inner_move_transverse == null, print('- 正在向前疾跑↑'); noAct = false - ); + ) ); if(inner_move_vertical == 'backward', if(inner_move_transverse == 'right', @@ -1179,7 +1149,7 @@ check(player_name) ->( if(inner_move_transverse == null, print('- 正在向后疾跑↓§e(没错它可以开挂)'); noAct = false - ); + ) ); if(inner_move_vertical == null, if(inner_move_transverse == 'right', @@ -1193,8 +1163,8 @@ check(player_name) ->( if(inner_move_transverse == null, print('- 正在原地疾跑,§e(没错它可以开挂)'); noAct = false - ); - ); + ) + ) ); ); if(inner_sprint == false && inner_sneak == false, @@ -1210,7 +1180,7 @@ check(player_name) ->( if(inner_move_transverse == null, print('- 正在向前走↑'); noAct = false - ); + ) ); if(inner_move_vertical == 'backward', if(inner_move_transverse == 'right', @@ -1224,7 +1194,7 @@ check(player_name) ->( if(inner_move_transverse == null, print('- 正在向后走↓'); noAct = false - ); + ) ); if(inner_move_vertical == null, if(inner_move_transverse == 'right', @@ -1234,37 +1204,37 @@ check(player_name) ->( if(inner_move_transverse == 'left', print('- 正在向左走←'); noAct = false - ); - ); + ) + ) ); //乘坐 inner_mount = f_player~'mount'; if(inner_mount != null, if(inner_mount == 'horse', - print('- 正在骑马'); + print('- 正在骑马') ); if(inner_mount == 'donkey', - print('- 正在骑驴'); + print('- 正在骑驴') ); if(inner_mount == 'mule', - print('- 正在骑骡'); + print('- 正在骑骡') ); if(inner_mount == 'trader_llama', - print('- 正在骑羊驼'); + print('- 正在骑羊驼') ); if(inner_mount == 'pig', - print('- 正在骑猪'); + print('- 正在骑猪') ); if(inner_mount == 'skeleton_horse', - print('- 正在骑骷髅马'); + print('- 正在骑骷髅马') ); if(inner_mount == 'zombie_horse', - print('- 正在骑僵尸马'); + print('- 正在骑僵尸马') ); noAct = false ); if(noAct == true, - print('- 无地毯动作'); + print('- 无地毯动作') ); return() ); @@ -1273,5 +1243,10 @@ checkall() ->( c_for(i = 0, i < length(player_list), i += 1, check(player_list:i); ); - return(); + return() +); +run(str('tellraw @a {"text": "[版本信息]' + global_filename + '版本: ' + global_version + '", "color": "#ffd900"}')); +run(str('tellraw @a {"text": "[版本信息]carpet版本: ' + global_carpet_version:0 + '", "color": "#ffd900"}')); +if(number(global_carpet_version:1) < global_require_carpet_version:1 || global_carpet_version == null, + run(str('tellraw @a {"text": "[错误]' + global_filename + '需要地毯' + global_require_carpet_version:0 + '或以上来运行!否则会出现预期之外的问题", "color": "#ff6100"}');) ); \ No newline at end of file