Merge pull request #14 from Harveykang/2.0-dev

2.0.0.7
This commit is contained in:
Harveykang 2020-12-27 15:38:33 +08:00 committed by GitHub
commit 41cea99570
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 431 additions and 372 deletions

View File

@ -12,13 +12,23 @@ A Minecraft Datapack
- 压缩包中的tagplayer.sc
- 把它放在“存档名/scripts”中然后“/script load tagplayer”
- 使用/tagplayer 命令生成假人可以避免假人被数据包提供的记分板捕捉到~
- tagplayer需要地毯mod1.4.18或以上版本来运行
- tagplayer需要地毯mod1.4.21或以上版本来运行
- 使用帮助可以在游戏中输入“/tagplayer”查看
- 压缩包中的restore_scores.sc工具可以恢复或从1.0版本升级记分板~
- 把它放在“存档名/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版本升级记分板

View File

@ -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"}
carpet setDefault commandPlayer ops

View File

@ -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
#info: #5fff00 信息
#alert: #d7ff00 提醒
#warn: #ffd900 警告
#error: #ff6100 错误

View File

@ -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"}]

View File

@ -1,202 +1,203 @@
global_version = '1.1.0';
__config() -> {
'scope' -> 'global'
};
__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',
'iron_ore', 'coal_ore', 'nether_gold_ore', 'oak_log', 'spruce_log', 'birch_log', 'jungle_log', 'acacia_log', 'dark_oak_log',
'crimson_stem', 'warped_stem', 'stripped_oak_log', 'stripped_spruce_log', 'stripped_birch_log', 'stripped_jungle_log',
'stripped_acacia_log', 'stripped_dark_oak_log', 'stripped_crimson_stem', 'stripped_warped_stem', 'stripped_oak_wood',
'stripped_spruce_wood', 'stripped_birch_wood', 'stripped_jungle_wood', 'stripped_acacia_wood', 'stripped_dark_oak_wood',
'stripped_crimson_hyphae', 'stripped_warped_hyphae', 'oak_wood', 'spruce_wood', 'birch_wood', 'jungle_wood', 'acacia_wood',
'dark_oak_wood', 'crimson_hyphae', 'warped_hyphae', 'sponge', 'wet_sponge', 'glass', 'lapis_ore', 'lapis_block', 'sandstone',
'chiseled_sandstone', 'cut_sandstone', 'white_wool', 'orange_wool', 'magenta_wool', 'light_blue_wool', 'yellow_wool',
'lime_wool', 'pink_wool', 'gray_wool', 'light_gray_wool', 'cyan_wool', 'purple_wool', 'blue_wool', 'brown_wool', 'green_wool',
'red_wool', 'black_wool', 'gold_block', 'iron_block', 'oak_slab', 'spruce_slab', 'birch_slab', 'jungle_slab', 'acacia_slab',
'dark_oak_slab', 'crimson_slab', 'warped_slab', 'stone_slab', 'smooth_stone_slab', 'sandstone_slab', 'cut_sandstone_slab',
'petrified_oak_slab', 'cobblestone_slab', 'brick_slab', 'stone_brick_slab', 'nether_brick_slab', 'quartz_slab',
'red_sandstone_slab', 'cut_red_sandstone_slab', 'purpur_slab', 'prismarine_slab', 'prismarine_brick_slab',
'dark_prismarine_slab', 'smooth_quartz', 'smooth_red_sandstone', 'smooth_sandstone', 'smooth_stone', 'bricks', 'bookshelf',
'mossy_cobblestone', 'obsidian', 'purpur_block', 'purpur_pillar', 'purpur_stairs', 'oak_stairs', 'diamond_ore', 'diamond_block',
'cobblestone_stairs', 'redstone_ore', 'ice', 'snow_block', 'clay', 'pumpkin', 'carved_pumpkin', 'netherrack', 'soul_sand',
'soul_soil', 'basalt', 'polished_basalt', 'glowstone', 'jack_o_lantern', 'stone_bricks', 'mossy_stone_bricks',
'cracked_stone_bricks', 'chiseled_stone_bricks', 'melon', 'brick_stairs', 'stone_brick_stairs', 'mycelium', 'nether_bricks',
'cracked_nether_bricks', 'chiseled_nether_bricks', 'nether_brick_stairs', 'end_stone_bricks', 'sandstone_stairs', 'emerald_ore',
'emerald_block', 'spruce_stairs', 'birch_stairs', 'jungle_stairs', 'crimson_stairs', 'warped_stairs', 'nether_quartz_ore',
'chiseled_quartz_block', 'quartz_block', 'quartz_bricks', 'quartz_pillar', 'quartz_stairs', 'white_terracotta',
'orange_terracotta', 'magenta_terracotta', 'light_blue_terracotta', 'yellow_terracotta', 'lime_terracotta', 'pink_terracotta',
'gray_terracotta', 'light_gray_terracotta', 'cyan_terracotta', 'purple_terracotta', 'blue_terracotta', 'brown_terracotta',
'green_terracotta', 'red_terracotta', 'black_terracotta', 'hay_block', 'terracotta', 'coal_block', 'packed_ice', 'acacia_stairs',
'dark_oak_stairs', 'white_stained_glass', 'orange_stained_glass', 'magenta_stained_glass', 'light_blue_stained_glass',
'yellow_stained_glass', 'lime_stained_glass', 'pink_stained_glass', 'gray_stained_glass', 'light_gray_stained_glass',
'cyan_stained_glass', 'purple_stained_glass', 'blue_stained_glass', 'brown_stained_glass', 'green_stained_glass',
'red_stained_glass', 'black_stained_glass', 'prismarine', 'prismarine_bricks', 'dark_prismarine', 'prismarine_stairs',
'prismarine_brick_stairs', 'dark_prismarine_stairs', 'sea_lantern', 'red_sandstone', 'chiseled_red_sandstone',
'cut_red_sandstone', 'red_sandstone_stairs', 'magma_block', 'nether_wart_block', 'warped_wart_block', 'red_nether_bricks',
'bone_block', 'white_concrete', 'orange_concrete', 'magenta_concrete', 'light_blue_concrete', 'yellow_concrete', 'lime_concrete',
'pink_concrete', 'gray_concrete', 'light_gray_concrete', 'cyan_concrete', 'purple_concrete', 'blue_concrete', 'brown_concrete',
'green_concrete', 'red_concrete', 'black_concrete', 'white_concrete_powder', 'orange_concrete_powder', 'magenta_concrete_powder',
'light_blue_concrete_powder', 'yellow_concrete_powder', 'lime_concrete_powder', 'pink_concrete_powder', 'gray_concrete_powder',
'light_gray_concrete_powder', 'cyan_concrete_powder', 'purple_concrete_powder', 'blue_concrete_powder', 'brown_concrete_powder',
'green_concrete_powder', 'red_concrete_powder', 'black_concrete_powder', 'dead_tube_coral_block', 'dead_brain_coral_block',
'dead_bubble_coral_block', 'dead_fire_coral_block', 'dead_horn_coral_block', 'tube_coral_block', 'brain_coral_block',
'bubble_coral_block', 'fire_coral_block', 'horn_coral_block', 'blue_ice', 'polished_granite_stairs',
'smooth_red_sandstone_stairs', 'mossy_stone_brick_stairs', 'polished_diorite_stairs', 'mossy_cobblestone_stairs',
'end_stone_brick_stairs', 'stone_stairs', 'smooth_sandstone_stairs', 'smooth_quartz_stairs', 'granite_stairs', 'andesite_stairs',
'red_nether_brick_stairs', 'polished_andesite_stairs', 'diorite_stairs', 'polished_granite_slab', 'smooth_red_sandstone_slab',
'mossy_stone_brick_slab', 'polished_diorite_slab', 'mossy_cobblestone_slab', 'end_stone_brick_slab', 'smooth_sandstone_slab',
'smooth_quartz_slab', 'granite_slab', 'andesite_slab', 'red_nether_brick_slab', 'polished_andesite_slab', 'diorite_slab',
'dried_kelp_block', 'netherite_block', 'ancient_debris', 'crying_obsidian', 'blackstone', 'blackstone_slab',
'blackstone_stairs', 'gilded_blackstone', 'polished_blackstone', 'polished_blackstone_slab', 'polished_blackstone_stairs',
'chiseled_polished_blackstone', 'polished_blackstone_bricks', 'polished_blackstone_brick_slab',
'polished_blackstone_brick_stairs', 'cracked_polished_blackstone_bricks', 'oak_sapling', 'spruce_sapling', 'birch_sapling',
'jungle_sapling', 'acacia_sapling', 'dark_oak_sapling', 'oak_leaves', 'spruce_leaves', 'birch_leaves', 'jungle_leaves',
'acacia_leaves', 'dark_oak_leaves', 'cobweb', 'grass', 'fern', 'dead_bush', 'seagrass', 'sea_pickle', 'dandelion', 'poppy',
'blue_orchid', 'allium', 'azure_bluet', 'red_tulip', 'orange_tulip', 'white_tulip', 'pink_tulip', 'oxeye_daisy', 'cornflower',
'lily_of_the_valley', 'wither_rose', 'brown_mushroom', 'red_mushroom', 'crimson_fungus', 'warped_fungus', 'crimson_roots',
'warped_roots', 'nether_sprouts', 'weeping_vines', 'twisting_vines', 'sugar_cane', 'kelp', 'bamboo', 'torch', 'end_rod',
'chorus_plant', 'chorus_flower', 'chest', 'crafting_table', 'furnace', 'ladder', 'cactus', 'jukebox', 'oak_fence',
'spruce_fence', 'birch_fence', 'jungle_fence', 'acacia_fence', 'dark_oak_fence', 'crimson_fence', 'warped_fence', 'soul_torch',
'brown_mushroom_block', 'red_mushroom_block', 'mushroom_stem', 'iron_bars', 'chain', 'glass_pane', 'vine', 'lily_pad',
'nether_brick_fence', 'enchanting_table', 'end_portal_frame', 'ender_chest', 'cobblestone_wall', 'mossy_cobblestone_wall',
'brick_wall', 'prismarine_wall', 'red_sandstone_wall', 'mossy_stone_brick_wall', 'granite_wall', 'stone_brick_wall',
'nether_brick_wall', 'andesite_wall', 'red_nether_brick_wall', 'sandstone_wall', 'end_stone_brick_wall', 'diorite_wall',
'blackstone_wall', 'polished_blackstone_wall', 'polished_blackstone_brick_wall', 'anvil', 'chipped_anvil', 'damaged_anvil',
'white_carpet', 'orange_carpet', 'magenta_carpet', 'light_blue_carpet', 'yellow_carpet', 'lime_carpet', 'pink_carpet',
'gray_carpet', 'light_gray_carpet', 'cyan_carpet', 'purple_carpet', 'blue_carpet', 'brown_carpet', 'green_carpet', 'red_carpet',
'black_carpet', 'slime_block', 'sunflower', 'lilac', 'rose_bush', 'peony', 'white_stained_glass_pane',
'orange_stained_glass_pane', 'magenta_stained_glass_pane', 'light_blue_stained_glass_pane', 'yellow_stained_glass_pane',
'lime_stained_glass_pane', 'pink_stained_glass_pane', 'gray_stained_glass_pane', 'light_gray_stained_glass_pane',
'cyan_stained_glass_pane', 'purple_stained_glass_pane', 'blue_stained_glass_pane', 'brown_stained_glass_pane',
'green_stained_glass_pane', 'red_stained_glass_pane', 'black_stained_glass_pane', 'shulker_box', 'white_shulker_box',
'orange_shulker_box', 'magenta_shulker_box', 'light_blue_shulker_box', 'yellow_shulker_box', 'lime_shulker_box',
'pink_shulker_box', 'gray_shulker_box', 'light_gray_shulker_box', 'cyan_shulker_box', 'purple_shulker_box', 'blue_shulker_box',
'brown_shulker_box', 'green_shulker_box', 'red_shulker_box', 'black_shulker_box', 'white_glazed_terracotta',
'orange_glazed_terracotta', 'magenta_glazed_terracotta', 'light_blue_glazed_terracotta', 'yellow_glazed_terracotta',
'lime_glazed_terracotta', 'pink_glazed_terracotta', 'gray_glazed_terracotta', 'light_gray_glazed_terracotta',
'cyan_glazed_terracotta', 'purple_glazed_terracotta', 'blue_glazed_terracotta', 'brown_glazed_terracotta',
'green_glazed_terracotta', 'red_glazed_terracotta', 'black_glazed_terracotta', 'tube_coral', 'brain_coral', 'bubble_coral',
'fire_coral', 'horn_coral', 'dead_brain_coral', 'dead_bubble_coral', 'dead_fire_coral', 'dead_horn_coral', 'dead_tube_coral',
'tube_coral_fan', 'brain_coral_fan', 'bubble_coral_fan', 'fire_coral_fan', 'horn_coral_fan', 'dead_tube_coral_fan',
'dead_brain_coral_fan', 'dead_bubble_coral_fan', 'dead_fire_coral_fan', 'dead_horn_coral_fan', 'scaffolding', 'oak_sign',
'spruce_sign', 'birch_sign', 'jungle_sign', 'acacia_sign', 'dark_oak_sign', 'crimson_sign', 'warped_sign', 'white_bed',
'orange_bed', 'magenta_bed', 'light_blue_bed', 'yellow_bed', 'lime_bed', 'pink_bed', 'gray_bed', 'light_gray_bed', 'cyan_bed',
'purple_bed', 'blue_bed', 'brown_bed', 'green_bed', 'red_bed', 'black_bed', 'flower_pot', 'skeleton_skull',
'wither_skeleton_skull', 'player_head', 'zombie_head', 'creeper_head', 'dragon_head', 'white_banner', 'orange_banner',
'magenta_banner', 'light_blue_banner', 'yellow_banner', 'lime_banner', 'pink_banner', 'gray_banner', 'light_gray_banner',
'cyan_banner', 'purple_banner', 'blue_banner', 'brown_banner', 'green_banner', 'red_banner', 'black_banner', 'loom', 'composter',
'barrel', 'smoker', 'blast_furnace', 'cartography_table', 'fletching_table', 'grindstone', 'smithing_table', 'stonecutter',
'bell', 'lantern', 'soul_lantern', 'campfire', 'soul_campfire', 'shroomlight', 'bee_nest', 'beehive', 'honey_block',
'honeycomb_block', 'lodestone', 'respawn_anchor', 'dispenser', 'note_block', 'sticky_piston', 'piston', 'tnt', 'lever',
'stone_pressure_plate', 'oak_pressure_plate', 'spruce_pressure_plate', 'birch_pressure_plate', 'jungle_pressure_plate',
'acacia_pressure_plate', 'dark_oak_pressure_plate', 'crimson_pressure_plate', 'warped_pressure_plate',
'polished_blackstone_pressure_plate', 'redstone_torch', 'oak_trapdoor', 'spruce_trapdoor', 'birch_trapdoor', 'jungle_trapdoor',
'acacia_trapdoor', 'dark_oak_trapdoor', 'crimson_trapdoor', 'warped_trapdoor', 'oak_fence_gate', 'spruce_fence_gate',
'birch_fence_gate', 'jungle_fence_gate', 'acacia_fence_gate', 'dark_oak_fence_gate', 'crimson_fence_gate', 'warped_fence_gate',
'redstone_lamp', 'tripwire_hook', 'stone_button', 'oak_button', 'spruce_button', 'birch_button', 'jungle_button',
'acacia_button', 'dark_oak_button', 'crimson_button', 'warped_button', 'polished_blackstone_button', 'trapped_chest',
'light_weighted_pressure_plate', 'heavy_weighted_pressure_plate', 'daylight_detector', 'redstone_block', 'hopper', 'dropper',
'iron_trapdoor', 'observer', 'iron_door', 'oak_door', 'spruce_door', 'birch_door', 'jungle_door', 'acacia_door', 'dark_oak_door',
'crimson_door', 'warped_door', 'repeater', 'comparator', 'redstone', 'lectern', 'target', 'powered_rail', 'detector_rail',
'rail', 'activator_rail', 'beacon', 'turtle_egg', 'conduit', 'brewing_stand', 'cauldron'
);
__restore(pl, s_player) ->(
scoreboard_remove('killCounter');
scoreboard_remove('digCounter');
scoreboard_remove('deathCounter');
scoreboard_remove('tradingCounter');
scoreboard_remove('fishingCounter');
scoreboard_remove('damageTaken');
scoreboard_remove('activation');
scoreboard_remove('totalList');
scoreboard_add('killCounter');
scoreboard_add('digCounter');
scoreboard_add('deathCounter');
scoreboard_add('tradingCounter');
scoreboard_add('fishingCounter');
scoreboard_add('damageTaken');
scoreboard_add('activation');
scoreboard_add('totalList');
total_actime = 0;
total_death = 0;
total_mined = 0;
total_fished = 0;
total_killed = 0;
total_traded = 0;
total_hurt = 0;
c_for(i = 0, i < length(pl), i += 1,
run('player ' + pl:i + ' spawn at ' + (s_player~'x'+0.1)+ ' ' +s_player~'y'+ ' ' +(s_player~'z'+0.1));
game_tick(50);
//活跃时间
actime = statistic(pl:i, 'custom', 'play_one_minute')/72000;
print(actime);
scoreboard('activation', pl:i, actime);
total_actime += actime;
//抖M榜
hurt = statistic(pl:i, 'custom', 'damage_taken')/100;
print(hurt);
scoreboard('damageTaken', pl:i, hurt);
total_hurt += hurt;
//死亡榜
death = statistic(pl:i, 'custom', 'deaths');
print(death);
scoreboard('deathCounter', pl:i, death);
total_death += death;
//挖掘榜
mined = 0;
c_for(j = 0, j < length(global_bl), j += 1,
mined += statistic(pl:i, 'mined', global_bl:j);
);
print(mined);
scoreboard('digCounter', pl:i, mined);
total_mined += mined;
//钓鱼榜
fished = statistic(pl:i, 'custom', 'fish_caught');
print(fished);
scoreboard('fishingCounter', pl:i, fished);
total_fished += fished;
//击杀榜
killed = statistic(pl:i, 'custom', 'mob_kills');
killed += statistic(pl:i, 'custom', 'player_kills');
print(killed);
scoreboard('killCounter', pl:i, killed);
total_killed += killed;
//交易榜
traded = statistic(pl:i, 'custom', 'traded_with_villager');
print(traded);
scoreboard('tradingCounter', pl:i, traded);
total_traded += traded;
run('player ' + pl:i + ' kill')
);
scoreboard('tradingCounter', '总交♂易数', total_traded);
scoreboard('totalList', '总交♂易数', total_traded);
scoreboard('killCounter', '总击杀数', total_killed);
scoreboard('totalList', '总击杀数', total_killed);
scoreboard('fishingCounter', '总钓鱼数', total_fished);
scoreboard('totalList', '总钓鱼数', total_fished);
scoreboard('digCounter', '总挖掘量', total_mined);
scoreboard('totalList', '总挖掘量', total_mined);
scoreboard('deathCounter', '全部木大', total_death);
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);
game_tick(50);
run('function fz:scoreboards/install')
);
by_whitelist() ->(
pl = keys(system_info('server_whitelist'));
s_player = player();
//c_for(i = 0, i < length(pl), i += 1,
// run('player ' + pl:i + ' spawn at ' + (s_player~'x'+0.1)+ ' ' +s_player~'y'+ ' ' +(s_player~'z'+0.1));
//);
game_tick(50);
__restore(pl, s_player);
//c_for(i = 0, i < length(pl), i += 1,
// run('player ' + pl:i + ' kill');
//);
return()
global_version = '1.1.0';
__config() -> {
'scope' -> 'global',
'stay_loaded' -> false
};
__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',
'iron_ore', 'coal_ore', 'nether_gold_ore', 'oak_log', 'spruce_log', 'birch_log', 'jungle_log', 'acacia_log', 'dark_oak_log',
'crimson_stem', 'warped_stem', 'stripped_oak_log', 'stripped_spruce_log', 'stripped_birch_log', 'stripped_jungle_log',
'stripped_acacia_log', 'stripped_dark_oak_log', 'stripped_crimson_stem', 'stripped_warped_stem', 'stripped_oak_wood',
'stripped_spruce_wood', 'stripped_birch_wood', 'stripped_jungle_wood', 'stripped_acacia_wood', 'stripped_dark_oak_wood',
'stripped_crimson_hyphae', 'stripped_warped_hyphae', 'oak_wood', 'spruce_wood', 'birch_wood', 'jungle_wood', 'acacia_wood',
'dark_oak_wood', 'crimson_hyphae', 'warped_hyphae', 'sponge', 'wet_sponge', 'glass', 'lapis_ore', 'lapis_block', 'sandstone',
'chiseled_sandstone', 'cut_sandstone', 'white_wool', 'orange_wool', 'magenta_wool', 'light_blue_wool', 'yellow_wool',
'lime_wool', 'pink_wool', 'gray_wool', 'light_gray_wool', 'cyan_wool', 'purple_wool', 'blue_wool', 'brown_wool', 'green_wool',
'red_wool', 'black_wool', 'gold_block', 'iron_block', 'oak_slab', 'spruce_slab', 'birch_slab', 'jungle_slab', 'acacia_slab',
'dark_oak_slab', 'crimson_slab', 'warped_slab', 'stone_slab', 'smooth_stone_slab', 'sandstone_slab', 'cut_sandstone_slab',
'petrified_oak_slab', 'cobblestone_slab', 'brick_slab', 'stone_brick_slab', 'nether_brick_slab', 'quartz_slab',
'red_sandstone_slab', 'cut_red_sandstone_slab', 'purpur_slab', 'prismarine_slab', 'prismarine_brick_slab',
'dark_prismarine_slab', 'smooth_quartz', 'smooth_red_sandstone', 'smooth_sandstone', 'smooth_stone', 'bricks', 'bookshelf',
'mossy_cobblestone', 'obsidian', 'purpur_block', 'purpur_pillar', 'purpur_stairs', 'oak_stairs', 'diamond_ore', 'diamond_block',
'cobblestone_stairs', 'redstone_ore', 'ice', 'snow_block', 'clay', 'pumpkin', 'carved_pumpkin', 'netherrack', 'soul_sand',
'soul_soil', 'basalt', 'polished_basalt', 'glowstone', 'jack_o_lantern', 'stone_bricks', 'mossy_stone_bricks',
'cracked_stone_bricks', 'chiseled_stone_bricks', 'melon', 'brick_stairs', 'stone_brick_stairs', 'mycelium', 'nether_bricks',
'cracked_nether_bricks', 'chiseled_nether_bricks', 'nether_brick_stairs', 'end_stone_bricks', 'sandstone_stairs', 'emerald_ore',
'emerald_block', 'spruce_stairs', 'birch_stairs', 'jungle_stairs', 'crimson_stairs', 'warped_stairs', 'nether_quartz_ore',
'chiseled_quartz_block', 'quartz_block', 'quartz_bricks', 'quartz_pillar', 'quartz_stairs', 'white_terracotta',
'orange_terracotta', 'magenta_terracotta', 'light_blue_terracotta', 'yellow_terracotta', 'lime_terracotta', 'pink_terracotta',
'gray_terracotta', 'light_gray_terracotta', 'cyan_terracotta', 'purple_terracotta', 'blue_terracotta', 'brown_terracotta',
'green_terracotta', 'red_terracotta', 'black_terracotta', 'hay_block', 'terracotta', 'coal_block', 'packed_ice', 'acacia_stairs',
'dark_oak_stairs', 'white_stained_glass', 'orange_stained_glass', 'magenta_stained_glass', 'light_blue_stained_glass',
'yellow_stained_glass', 'lime_stained_glass', 'pink_stained_glass', 'gray_stained_glass', 'light_gray_stained_glass',
'cyan_stained_glass', 'purple_stained_glass', 'blue_stained_glass', 'brown_stained_glass', 'green_stained_glass',
'red_stained_glass', 'black_stained_glass', 'prismarine', 'prismarine_bricks', 'dark_prismarine', 'prismarine_stairs',
'prismarine_brick_stairs', 'dark_prismarine_stairs', 'sea_lantern', 'red_sandstone', 'chiseled_red_sandstone',
'cut_red_sandstone', 'red_sandstone_stairs', 'magma_block', 'nether_wart_block', 'warped_wart_block', 'red_nether_bricks',
'bone_block', 'white_concrete', 'orange_concrete', 'magenta_concrete', 'light_blue_concrete', 'yellow_concrete', 'lime_concrete',
'pink_concrete', 'gray_concrete', 'light_gray_concrete', 'cyan_concrete', 'purple_concrete', 'blue_concrete', 'brown_concrete',
'green_concrete', 'red_concrete', 'black_concrete', 'white_concrete_powder', 'orange_concrete_powder', 'magenta_concrete_powder',
'light_blue_concrete_powder', 'yellow_concrete_powder', 'lime_concrete_powder', 'pink_concrete_powder', 'gray_concrete_powder',
'light_gray_concrete_powder', 'cyan_concrete_powder', 'purple_concrete_powder', 'blue_concrete_powder', 'brown_concrete_powder',
'green_concrete_powder', 'red_concrete_powder', 'black_concrete_powder', 'dead_tube_coral_block', 'dead_brain_coral_block',
'dead_bubble_coral_block', 'dead_fire_coral_block', 'dead_horn_coral_block', 'tube_coral_block', 'brain_coral_block',
'bubble_coral_block', 'fire_coral_block', 'horn_coral_block', 'blue_ice', 'polished_granite_stairs',
'smooth_red_sandstone_stairs', 'mossy_stone_brick_stairs', 'polished_diorite_stairs', 'mossy_cobblestone_stairs',
'end_stone_brick_stairs', 'stone_stairs', 'smooth_sandstone_stairs', 'smooth_quartz_stairs', 'granite_stairs', 'andesite_stairs',
'red_nether_brick_stairs', 'polished_andesite_stairs', 'diorite_stairs', 'polished_granite_slab', 'smooth_red_sandstone_slab',
'mossy_stone_brick_slab', 'polished_diorite_slab', 'mossy_cobblestone_slab', 'end_stone_brick_slab', 'smooth_sandstone_slab',
'smooth_quartz_slab', 'granite_slab', 'andesite_slab', 'red_nether_brick_slab', 'polished_andesite_slab', 'diorite_slab',
'dried_kelp_block', 'netherite_block', 'ancient_debris', 'crying_obsidian', 'blackstone', 'blackstone_slab',
'blackstone_stairs', 'gilded_blackstone', 'polished_blackstone', 'polished_blackstone_slab', 'polished_blackstone_stairs',
'chiseled_polished_blackstone', 'polished_blackstone_bricks', 'polished_blackstone_brick_slab',
'polished_blackstone_brick_stairs', 'cracked_polished_blackstone_bricks', 'oak_sapling', 'spruce_sapling', 'birch_sapling',
'jungle_sapling', 'acacia_sapling', 'dark_oak_sapling', 'oak_leaves', 'spruce_leaves', 'birch_leaves', 'jungle_leaves',
'acacia_leaves', 'dark_oak_leaves', 'cobweb', 'grass', 'fern', 'dead_bush', 'seagrass', 'sea_pickle', 'dandelion', 'poppy',
'blue_orchid', 'allium', 'azure_bluet', 'red_tulip', 'orange_tulip', 'white_tulip', 'pink_tulip', 'oxeye_daisy', 'cornflower',
'lily_of_the_valley', 'wither_rose', 'brown_mushroom', 'red_mushroom', 'crimson_fungus', 'warped_fungus', 'crimson_roots',
'warped_roots', 'nether_sprouts', 'weeping_vines', 'twisting_vines', 'sugar_cane', 'kelp', 'bamboo', 'torch', 'end_rod',
'chorus_plant', 'chorus_flower', 'chest', 'crafting_table', 'furnace', 'ladder', 'cactus', 'jukebox', 'oak_fence',
'spruce_fence', 'birch_fence', 'jungle_fence', 'acacia_fence', 'dark_oak_fence', 'crimson_fence', 'warped_fence', 'soul_torch',
'brown_mushroom_block', 'red_mushroom_block', 'mushroom_stem', 'iron_bars', 'chain', 'glass_pane', 'vine', 'lily_pad',
'nether_brick_fence', 'enchanting_table', 'end_portal_frame', 'ender_chest', 'cobblestone_wall', 'mossy_cobblestone_wall',
'brick_wall', 'prismarine_wall', 'red_sandstone_wall', 'mossy_stone_brick_wall', 'granite_wall', 'stone_brick_wall',
'nether_brick_wall', 'andesite_wall', 'red_nether_brick_wall', 'sandstone_wall', 'end_stone_brick_wall', 'diorite_wall',
'blackstone_wall', 'polished_blackstone_wall', 'polished_blackstone_brick_wall', 'anvil', 'chipped_anvil', 'damaged_anvil',
'white_carpet', 'orange_carpet', 'magenta_carpet', 'light_blue_carpet', 'yellow_carpet', 'lime_carpet', 'pink_carpet',
'gray_carpet', 'light_gray_carpet', 'cyan_carpet', 'purple_carpet', 'blue_carpet', 'brown_carpet', 'green_carpet', 'red_carpet',
'black_carpet', 'slime_block', 'sunflower', 'lilac', 'rose_bush', 'peony', 'white_stained_glass_pane',
'orange_stained_glass_pane', 'magenta_stained_glass_pane', 'light_blue_stained_glass_pane', 'yellow_stained_glass_pane',
'lime_stained_glass_pane', 'pink_stained_glass_pane', 'gray_stained_glass_pane', 'light_gray_stained_glass_pane',
'cyan_stained_glass_pane', 'purple_stained_glass_pane', 'blue_stained_glass_pane', 'brown_stained_glass_pane',
'green_stained_glass_pane', 'red_stained_glass_pane', 'black_stained_glass_pane', 'shulker_box', 'white_shulker_box',
'orange_shulker_box', 'magenta_shulker_box', 'light_blue_shulker_box', 'yellow_shulker_box', 'lime_shulker_box',
'pink_shulker_box', 'gray_shulker_box', 'light_gray_shulker_box', 'cyan_shulker_box', 'purple_shulker_box', 'blue_shulker_box',
'brown_shulker_box', 'green_shulker_box', 'red_shulker_box', 'black_shulker_box', 'white_glazed_terracotta',
'orange_glazed_terracotta', 'magenta_glazed_terracotta', 'light_blue_glazed_terracotta', 'yellow_glazed_terracotta',
'lime_glazed_terracotta', 'pink_glazed_terracotta', 'gray_glazed_terracotta', 'light_gray_glazed_terracotta',
'cyan_glazed_terracotta', 'purple_glazed_terracotta', 'blue_glazed_terracotta', 'brown_glazed_terracotta',
'green_glazed_terracotta', 'red_glazed_terracotta', 'black_glazed_terracotta', 'tube_coral', 'brain_coral', 'bubble_coral',
'fire_coral', 'horn_coral', 'dead_brain_coral', 'dead_bubble_coral', 'dead_fire_coral', 'dead_horn_coral', 'dead_tube_coral',
'tube_coral_fan', 'brain_coral_fan', 'bubble_coral_fan', 'fire_coral_fan', 'horn_coral_fan', 'dead_tube_coral_fan',
'dead_brain_coral_fan', 'dead_bubble_coral_fan', 'dead_fire_coral_fan', 'dead_horn_coral_fan', 'scaffolding', 'oak_sign',
'spruce_sign', 'birch_sign', 'jungle_sign', 'acacia_sign', 'dark_oak_sign', 'crimson_sign', 'warped_sign', 'white_bed',
'orange_bed', 'magenta_bed', 'light_blue_bed', 'yellow_bed', 'lime_bed', 'pink_bed', 'gray_bed', 'light_gray_bed', 'cyan_bed',
'purple_bed', 'blue_bed', 'brown_bed', 'green_bed', 'red_bed', 'black_bed', 'flower_pot', 'skeleton_skull',
'wither_skeleton_skull', 'player_head', 'zombie_head', 'creeper_head', 'dragon_head', 'white_banner', 'orange_banner',
'magenta_banner', 'light_blue_banner', 'yellow_banner', 'lime_banner', 'pink_banner', 'gray_banner', 'light_gray_banner',
'cyan_banner', 'purple_banner', 'blue_banner', 'brown_banner', 'green_banner', 'red_banner', 'black_banner', 'loom', 'composter',
'barrel', 'smoker', 'blast_furnace', 'cartography_table', 'fletching_table', 'grindstone', 'smithing_table', 'stonecutter',
'bell', 'lantern', 'soul_lantern', 'campfire', 'soul_campfire', 'shroomlight', 'bee_nest', 'beehive', 'honey_block',
'honeycomb_block', 'lodestone', 'respawn_anchor', 'dispenser', 'note_block', 'sticky_piston', 'piston', 'tnt', 'lever',
'stone_pressure_plate', 'oak_pressure_plate', 'spruce_pressure_plate', 'birch_pressure_plate', 'jungle_pressure_plate',
'acacia_pressure_plate', 'dark_oak_pressure_plate', 'crimson_pressure_plate', 'warped_pressure_plate',
'polished_blackstone_pressure_plate', 'redstone_torch', 'oak_trapdoor', 'spruce_trapdoor', 'birch_trapdoor', 'jungle_trapdoor',
'acacia_trapdoor', 'dark_oak_trapdoor', 'crimson_trapdoor', 'warped_trapdoor', 'oak_fence_gate', 'spruce_fence_gate',
'birch_fence_gate', 'jungle_fence_gate', 'acacia_fence_gate', 'dark_oak_fence_gate', 'crimson_fence_gate', 'warped_fence_gate',
'redstone_lamp', 'tripwire_hook', 'stone_button', 'oak_button', 'spruce_button', 'birch_button', 'jungle_button',
'acacia_button', 'dark_oak_button', 'crimson_button', 'warped_button', 'polished_blackstone_button', 'trapped_chest',
'light_weighted_pressure_plate', 'heavy_weighted_pressure_plate', 'daylight_detector', 'redstone_block', 'hopper', 'dropper',
'iron_trapdoor', 'observer', 'iron_door', 'oak_door', 'spruce_door', 'birch_door', 'jungle_door', 'acacia_door', 'dark_oak_door',
'crimson_door', 'warped_door', 'repeater', 'comparator', 'redstone', 'lectern', 'target', 'powered_rail', 'detector_rail',
'rail', 'activator_rail', 'beacon', 'turtle_egg', 'conduit', 'brewing_stand', 'cauldron'
);
__restore(pl, s_player) ->(
scoreboard_remove('killCounter');
scoreboard_remove('digCounter');
scoreboard_remove('deathCounter');
scoreboard_remove('tradingCounter');
scoreboard_remove('fishingCounter');
scoreboard_remove('damageTaken');
scoreboard_remove('activation');
scoreboard_remove('totalList');
scoreboard_add('killCounter');
scoreboard_add('digCounter');
scoreboard_add('deathCounter');
scoreboard_add('tradingCounter');
scoreboard_add('fishingCounter');
scoreboard_add('damageTaken');
scoreboard_add('activation');
scoreboard_add('totalList');
total_actime = 0;
total_death = 0;
total_mined = 0;
total_fished = 0;
total_killed = 0;
total_traded = 0;
total_hurt = 0;
c_for(i = 0, i < length(pl), i += 1,
run('player ' + pl:i + ' spawn at ' + (s_player~'x'+0.1)+ ' ' +s_player~'y'+ ' ' +(s_player~'z'+0.1));
game_tick(50);
//活跃时间
actime = statistic(pl:i, 'custom', 'play_one_minute')/72000;
print(actime);
scoreboard('activation', pl:i, actime);
total_actime += actime;
//抖M榜
hurt = statistic(pl:i, 'custom', 'damage_taken')/100;
print(hurt);
scoreboard('damageTaken', pl:i, hurt);
total_hurt += hurt;
//死亡榜
death = statistic(pl:i, 'custom', 'deaths');
print(death);
scoreboard('deathCounter', pl:i, death);
total_death += death;
//挖掘榜
mined = 0;
c_for(j = 0, j < length(global_bl), j += 1,
mined += statistic(pl:i, 'mined', global_bl:j);
);
print(mined);
scoreboard('digCounter', pl:i, mined);
total_mined += mined;
//钓鱼榜
fished = statistic(pl:i, 'custom', 'fish_caught');
print(fished);
scoreboard('fishingCounter', pl:i, fished);
total_fished += fished;
//击杀榜
killed = statistic(pl:i, 'custom', 'mob_kills');
killed += statistic(pl:i, 'custom', 'player_kills');
print(killed);
scoreboard('killCounter', pl:i, killed);
total_killed += killed;
//交易榜
traded = statistic(pl:i, 'custom', 'traded_with_villager');
print(traded);
scoreboard('tradingCounter', pl:i, traded);
total_traded += traded;
run('player ' + pl:i + ' kill')
);
scoreboard('tradingCounter', '总交♂易数', total_traded);
scoreboard('totalList', '总交♂易数', total_traded);
scoreboard('killCounter', '总击杀数', total_killed);
scoreboard('totalList', '总击杀数', total_killed);
scoreboard('fishingCounter', '总钓鱼数', total_fished);
scoreboard('totalList', '总钓鱼数', total_fished);
scoreboard('digCounter', '总挖掘量', total_mined);
scoreboard('totalList', '总挖掘量', total_mined);
scoreboard('deathCounter', '全部木大', total_death);
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);
game_tick(50);
run('function fz:scoreboards/install')
);
by_whitelist() ->(
pl = keys(system_info('server_whitelist'));
s_player = player();
//c_for(i = 0, i < length(pl), i += 1,
// run('player ' + pl:i + ' spawn at ' + (s_player~'x'+0.1)+ ' ' +s_player~'y'+ ' ' +(s_player~'z'+0.1));
//);
game_tick(50);
__restore(pl, s_player);
//c_for(i = 0, i < length(pl), i += 1,
// run('player ' + pl:i + ' kill');
//);
return()
)

View File

@ -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 <player>' -> 'summon',
'kill <bot>' -> 'kill',
'kill <killbot>' -> 'kill',
'killall' -> 'killall',
'attack <bot>' -> 'attack_once',
'attack <bot> continuous' -> 'attack_continuous',
@ -66,16 +70,39 @@ __config() -> {
'move <bot> right' -> 'move_right',
'move <bot> stop' -> 'move_stop',
'stop <bot>' -> 'stop',
'check <bot>' -> 'check',
'check <player>' -> 'check',
'checkall' -> 'checkall',
'tp <bot> <position>' -> 'tp',
'tp <bot> <position> <rotation>' -> 'tp_with_rotation',
'tp <bot> <player>' -> 'tp_to_player',
'tp <bot> <position> atBot' -> 'tp_at_bot',
'tp <bot> <position> <rotation> atBot' -> 'tp_at_bot_with_rotation',
'hotbar <bot> <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 <玩家名> <x> <y> <z> (<仰俯> <偏转>) (atBot)\n - 传送假人到<x>,<y>,<z>,可选<仰俯>和<偏转>角度,如以<atBot>结尾则相对坐标以假人为原点');
print('/tagplayer look <玩家名> <仰俯> <偏转>\n - 转动假人视角,<x>、<y>可替换为“s”来代表你的视角方向');
print('/tagplayer look <玩家名> <up/down/east/west/south/north>\n - 让假人向<上/下/东/西/南/北>方向看');
print('/tagplayer look <玩家名> <back/left/right>\n - 让假人向<后/左/右>方向看');
print('/tagplayer move <玩家名> <backward/forward/left/right>\n - 让假人<向前/向后/向左/向右>移动');
print('/tagplayer <attack/drop/dropStack/jump/swapHands/use> <玩家名> continuous\n - 让假人持续<攻击或挖掘/丢一个物品/丢一组物品/跳跃/换手/使用物品>');
print('/tagplayer <attack/drop/dropStack/jump/swapHands/use> <玩家名> interval <整数>\n - 让假人每<整数>游戏刻<攻击/丢一个物品/丢一组物品/跳跃/换手/使用物品>一次');
print('/tagplayer <attack/drop/dropStack/jump/swapHands/use> <玩家名> once\n - 让假人<攻击或挖掘/丢一个物品/丢一组物品/跳跃/换手/使用物品>一次');
print('/tagplayer <drop/dropStack> <玩家名> <mainhand/offhand>\n - 让假人<丢一个/丢一组><主手/副手>的物品');
print('/tagplayer <sneak/unsneak> <玩家名>\n - 让假人<潜行/站立>');
print('/tagplayer <sprint/unsprint> <玩家名>\n - 让假人准备<疾跑/行走>,在水中疾跑以游泳');
print('/tagplayer <mount/dismount> <玩家名>\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 <玩家名> <x> <y> <z> (<仰俯> <偏转>) (atBot)\n - 传送假人到<x>,<y>,<z>,可选<仰俯>和<偏转>角度,如以<atBot>结尾则相对坐标以假人为原点');
print('/' + global_filename + ' look <玩家名> <仰俯> <偏转>\n - 转动假人视角,<x>、<y>可替换为“s”来代表你的视角方向');
print('/' + global_filename + ' look <玩家名> <up/down/east/west/south/north>\n - 让假人向<上/下/东/西/南/北>方向看');
print('/' + global_filename + ' look <玩家名> <back/left/right>\n - 让假人向<后/左/右>方向看');
print('/' + global_filename + ' move <玩家名> <backward/forward/left/right>\n - 让假人<向前/向后/向左/向右>移动');
print('/' + global_filename + ' <attack/drop/dropStack/jump/swapHands/use> <玩家名> continuous\n - 让假人持续<攻击或挖掘/丢一个物品/丢一组物品/跳跃/换手/使用物品>');
print('/' + global_filename + ' <attack/drop/dropStack/jump/swapHands/use> <玩家名> interval <整数>\n - 让假人每<整数>游戏刻<攻击/丢一个物品/丢一组物品/跳跃/换手/使用物品>一次');
print('/' + global_filename + ' <attack/drop/dropStack/jump/swapHands/use> <玩家名> once\n - 让假人<攻击或挖掘/丢一个物品/丢一组物品/跳跃/换手/使用物品>一次');
print('/' + global_filename + ' <hotbar> <玩家名> <1-9>\n - 更改假人使用的热键栏');
print('/' + global_filename + ' <drop/dropStack> <玩家名> <mainhand/offhand>\n - 让假人<丢一个/丢一组><主手/副手>的物品');
print('/' + global_filename + ' <sneak/unsneak> <玩家名>\n - 让假人<潜行/站立>');
print('/' + global_filename + ' <sprint/unsprint> <玩家名>\n - 让假人准备<疾跑/行走>,在水中疾跑以游泳');
print('/' + global_filename + ' <mount/dismount> <玩家名>\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"}');)
);