diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/almond.png b/repo/js/Auto Theft NPC & 原食/assets/images/almond.png new file mode 100644 index 000000000..a01ca6b28 Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/almond.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/buyBtn.png b/repo/js/Auto Theft NPC & 原食/assets/images/buyBtn.png new file mode 100644 index 000000000..5cf7120a1 Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/buyBtn.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/cabbage.png b/repo/js/Auto Theft NPC & 原食/assets/images/cabbage.png new file mode 100644 index 000000000..9a84acecf Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/cabbage.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/coffeeBeans.png b/repo/js/Auto Theft NPC & 原食/assets/images/coffeeBeans.png new file mode 100644 index 000000000..ba639190a Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/coffeeBeans.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/crab.png b/repo/js/Auto Theft NPC & 原食/assets/images/crab.png new file mode 100644 index 000000000..138017ca5 Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/crab.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/fermentedJuice.png b/repo/js/Auto Theft NPC & 原食/assets/images/fermentedJuice.png new file mode 100644 index 000000000..51f412978 Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/fermentedJuice.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/fish.png b/repo/js/Auto Theft NPC & 原食/assets/images/fish.png new file mode 100644 index 000000000..3cf01fbec Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/fish.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/fonta.png b/repo/js/Auto Theft NPC & 原食/assets/images/fonta.png new file mode 100644 index 000000000..05ea44b5f Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/fonta.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/glabrousBeans.png b/repo/js/Auto Theft NPC & 原食/assets/images/glabrousBeans.png new file mode 100644 index 000000000..5c334627a Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/glabrousBeans.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/milk.png b/repo/js/Auto Theft NPC & 原食/assets/images/milk.png new file mode 100644 index 000000000..08c27b3c4 Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/milk.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/onion.png b/repo/js/Auto Theft NPC & 原食/assets/images/onion.png new file mode 100644 index 000000000..aa8f63ef0 Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/onion.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/pepper.png b/repo/js/Auto Theft NPC & 原食/assets/images/pepper.png new file mode 100644 index 000000000..9cbd7fbcd Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/pepper.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/potato.png b/repo/js/Auto Theft NPC & 原食/assets/images/potato.png new file mode 100644 index 000000000..193dc1f6c Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/potato.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/rawMeat.png b/repo/js/Auto Theft NPC & 原食/assets/images/rawMeat.png new file mode 100644 index 000000000..eac7698b6 Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/rawMeat.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/rice.png b/repo/js/Auto Theft NPC & 原食/assets/images/rice.png new file mode 100644 index 000000000..b61389c49 Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/rice.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/salt.png b/repo/js/Auto Theft NPC & 原食/assets/images/salt.png new file mode 100644 index 000000000..ba7da5812 Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/salt.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/shrimp.png b/repo/js/Auto Theft NPC & 原食/assets/images/shrimp.png new file mode 100644 index 000000000..7841dec24 Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/shrimp.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/tofu.png b/repo/js/Auto Theft NPC & 原食/assets/images/tofu.png new file mode 100644 index 000000000..2cad7d008 Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/tofu.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/tomato.png b/repo/js/Auto Theft NPC & 原食/assets/images/tomato.png new file mode 100644 index 000000000..daca5cc65 Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/tomato.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/images/wheat.png b/repo/js/Auto Theft NPC & 原食/assets/images/wheat.png new file mode 100644 index 000000000..c3b7767c3 Binary files /dev/null and b/repo/js/Auto Theft NPC & 原食/assets/images/wheat.png differ diff --git a/repo/js/Auto Theft NPC & 原食/assets/path/东升.json b/repo/js/Auto Theft NPC & 原食/assets/path/东升.json new file mode 100644 index 000000000..f9c260ddd --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/assets/path/东升.json @@ -0,0 +1,30 @@ +{ + "info": { + "name": "ds", + "type": "collect", + "author": "听雨♪", + "version": "1.0", + "description": "", + "bgiVersion": "0.35.1" + }, + "positions": [ + { + "id": 1, + "action": "", + "move_mode": "walk", + "type": "teleport", + "x": 267.9560546875, + "y": -665.14794921875, + "action_params": "" + }, + { + "id": 2, + "x": 257.146484375, + "y": -682.4951171875, + "type": "target", + "move_mode": "walk", + "action": "", + "action_params": "" + } + ] +} \ No newline at end of file diff --git a/repo/js/Auto Theft NPC & 原食/assets/path/卯师父.json b/repo/js/Auto Theft NPC & 原食/assets/path/卯师父.json new file mode 100644 index 000000000..02032c108 --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/assets/path/卯师父.json @@ -0,0 +1,39 @@ +{ + "info": { + "name": "卯师父", + "type": "collect", + "author": "听雨♪", + "version": "1.0", + "description": "", + "bgiVersion": "0.35.1" + }, + "positions": [ + { + "id": 1, + "action": "", + "move_mode": "walk", + "type": "teleport", + "x": 267.9580078125, + "y": -665.1201171875, + "action_params": "" + }, + { + "id": 2, + "x": 226.04296875, + "y": -660.0048828125, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 3, + "x": 227.4072265625, + "y": -668.20751953125, + "type": "target", + "move_mode": "walk", + "action": "", + "action_params": "" + } + ] +} \ No newline at end of file diff --git a/repo/js/Auto Theft NPC & 原食/assets/path/哈马维.json b/repo/js/Auto Theft NPC & 原食/assets/path/哈马维.json new file mode 100644 index 000000000..2ae080edf --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/assets/path/哈马维.json @@ -0,0 +1,75 @@ +{ + "info": { + "name": "哈马维", + "type": "collect", + "author": "听雨♪", + "version": "1.0", + "description": "", + "bgiVersion": "0.35.1" + }, + "positions": [ + { + "id": 1, + "action": "", + "move_mode": "walk", + "type": "teleport", + "x": 2786.9755859375, + "y": -503.09130859375, + "action_params": "" + }, + { + "id": 2, + "x": 2788.0830078125, + "y": -488.28173828125, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 3, + "x": 2771.4755859375, + "y": -476.07421875, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 4, + "x": 2763.0478515625, + "y": -453.83349609375, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 5, + "x": 2760.521484375, + "y": -439.513671875, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 6, + "x": 2778.63671875, + "y": -435.7626953125, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 7, + "x": 2778.24609375, + "y": -430.80810546875, + "type": "target", + "move_mode": "walk", + "action": "", + "action_params": "" + } + ] +} \ No newline at end of file diff --git a/repo/js/Auto Theft NPC & 原食/assets/path/小畑.json b/repo/js/Auto Theft NPC & 原食/assets/path/小畑.json new file mode 100644 index 000000000..bf5b1da30 --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/assets/path/小畑.json @@ -0,0 +1,121 @@ +{ + "info": { + "name": "小畑", + "type": "collect", + "author": "听雨♪", + "version": "", + "description": "", + "bgiVersion": "0.35.1" + }, + "positions": [ + { + "id": 1, + "x": -3812.7041015625, + "y": -2546.6064453125, + "action": "", + "move_mode": "walk", + "action_params": "", + "type": "teleport" + }, + { + "id": 2, + "x": -3811.9248046875, + "y": -2567.5771484375, + "action": "", + "move_mode": "walk", + "action_params": "", + "type": "path" + }, + { + "id": 3, + "x": -3727.125996598583, + "y": -2570.25, + "action": "", + "move_mode": "walk", + "action_params": "", + "type": "path" + }, + { + "id": 4, + "x": -3720.250047457075, + "y": -2569.625 + }, + { + "id": 5, + "x": -3713.6250949141504, + "y": -2568.5 + }, + { + "id": 6, + "x": -3706.7501423712256, + "y": -2567.875 + }, + { + "id": 7, + "x": -3700.625284742451, + "y": -2566.875 + }, + { + "id": 8, + "x": -3693.2480542599114, + "y": -2564.875 + }, + { + "id": 9, + "x": -3684.874810171699, + "y": -2562.375 + }, + { + "id": 10, + "x": -3680.4998576287744, + "y": -2561.25 + }, + { + "id": 11, + "x": -3677.6251423712256, + "y": -2558.125 + }, + { + "id": 12, + "x": -3675.5, + "y": -2558.25, + "action": "", + "move_mode": "walk", + "action_params": "", + "type": "path" + }, + { + "id": 13, + "x": -3674.124952542925, + "y": -2560.125 + }, + { + "id": 14, + "x": -3672.624952542925, + "y": -2564, + "action": "", + "move_mode": "walk", + "action_params": "", + "type": "path" + }, + { + "id": 15, + "x": -3670.2495728863214, + "y": -2567.75 + }, + { + "id": 16, + "x": -3666.0014237122596, + "y": -2566 + }, + { + "id": 17, + "x": -3667.37571185613, + "y": -2561.125, + "action": "", + "move_mode": "walk", + "action_params": "", + "type": "target" + } + ] +} \ No newline at end of file diff --git a/repo/js/Auto Theft NPC & 原食/assets/path/布兰琪.json b/repo/js/Auto Theft NPC & 原食/assets/path/布兰琪.json new file mode 100644 index 000000000..9fe3e20ab --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/assets/path/布兰琪.json @@ -0,0 +1,39 @@ +{ + "info": { + "name": "布兰琪", + "type": "collect", + "author": "听雨♪", + "version": "1.0", + "description": "", + "bgiVersion": "0.35.1" + }, + "positions": [ + { + "id": 1, + "action": "", + "move_mode": "walk", + "type": "teleport", + "x": -867.720703125, + "y": 2281.377685546875, + "action_params": "" + }, + { + "id": 2, + "x": -893.705078125, + "y": 2258.10791015625, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 3, + "x": -895.7216796875, + "y": 2264.712890625, + "type": "target", + "move_mode": "walk", + "action": "", + "action_params": "" + } + ] +} \ No newline at end of file diff --git a/repo/js/Auto Theft NPC & 原食/assets/path/布希柯.json b/repo/js/Auto Theft NPC & 原食/assets/path/布希柯.json new file mode 100644 index 000000000..5c0b2a1cd --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/assets/path/布希柯.json @@ -0,0 +1,57 @@ +{ + "info": { + "name": "布希柯", + "type": "collect", + "author": "听雨♪", + "version": "1.0", + "description": "", + "bgiVersion": "0.35.1" + }, + "positions": [ + { + "id": 1, + "action": "", + "move_mode": "walk", + "type": "teleport", + "x": 4508.96875, + "y": 3630.584228515625, + "action_params": "" + }, + { + "id": 2, + "x": 4514.79296875, + "y": 3605.441650390625, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 3, + "x": 4497.20556640625, + "y": 3586.030029296875, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 4, + "x": 4475.7421875, + "y": 3559.308837890625, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 5, + "x": 4470.52685546875, + "y": 3560.251708984375, + "type": "target", + "move_mode": "walk", + "action": "", + "action_params": "" + } + ] +} \ No newline at end of file diff --git a/repo/js/Auto Theft NPC & 原食/assets/path/布特罗斯.json b/repo/js/Auto Theft NPC & 原食/assets/path/布特罗斯.json new file mode 100644 index 000000000..f08a1e8bc --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/assets/path/布特罗斯.json @@ -0,0 +1,30 @@ +{ + "info": { + "name": "布特罗斯", + "type": "collect", + "author": "听雨♪", + "version": "1.0", + "description": "", + "bgiVersion": "0.35.1" + }, + "positions": [ + { + "id": 1, + "action": "", + "move_mode": "walk", + "type": "teleport", + "x": 2679.8427734375, + "y": -1935.005859375, + "action_params": "" + }, + { + "id": 2, + "x": 2659.951171875, + "y": -1928.943359375, + "type": "target", + "move_mode": "walk", + "action": "", + "action_params": "" + } + ] +} \ No newline at end of file diff --git a/repo/js/Auto Theft NPC & 原食/assets/path/志村勘兵卫.json b/repo/js/Auto Theft NPC & 原食/assets/path/志村勘兵卫.json new file mode 100644 index 000000000..f5f2e5f1d --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/assets/path/志村勘兵卫.json @@ -0,0 +1,39 @@ +{ + "info": { + "name": "志村勘兵卫", + "type": "collect", + "author": "听雨♪", + "version": "1.0", + "description": "", + "bgiVersion": "0.35.1" + }, + "positions": [ + { + "id": 1, + "x": -4402.5703125, + "y": -3053.0234375, + "action": "", + "move_mode": "walk", + "action_params": "", + "type": "teleport" + }, + { + "id": 2, + "x": -4418.000213556839, + "y": -3083.5625, + "action": "", + "move_mode": "walk", + "action_params": "", + "type": "path" + }, + { + "id": 3, + "x": -4424.500332199528, + "y": -3080.375, + "action": "", + "move_mode": "walk", + "action_params": "", + "type": "target" + } + ] +} \ No newline at end of file diff --git a/repo/js/Auto Theft NPC & 原食/assets/path/珀姆.json b/repo/js/Auto Theft NPC & 原食/assets/path/珀姆.json new file mode 100644 index 000000000..325a89405 --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/assets/path/珀姆.json @@ -0,0 +1,39 @@ +{ + "info": { + "name": "珀姆", + "type": "collect", + "author": "听雨♪", + "version": "1.0", + "description": "", + "bgiVersion": "0.35.1" + }, + "positions": [ + { + "id": 1, + "action": "", + "move_mode": "walk", + "type": "teleport", + "x": 2786.958984375, + "y": -503.0859375, + "action_params": "" + }, + { + "id": 2, + "x": 2809.5712890625, + "y": -514.7138671875, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 3, + "x": 2811.244140625, + "y": -509.603515625, + "type": "target", + "move_mode": "walk", + "action": "", + "action_params": "" + } + ] +} \ No newline at end of file diff --git a/repo/js/Auto Theft NPC & 原食/assets/path/老孙.json b/repo/js/Auto Theft NPC & 原食/assets/path/老孙.json new file mode 100644 index 000000000..64d92cde1 --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/assets/path/老孙.json @@ -0,0 +1,102 @@ +{ + "info": { + "name": "买鱼-1", + "type": "buy", + "author": "听雨♪", + "version": "1.0", + "description": "", + "bgiVersion": "0.35.1" + }, + "positions": [ + { + "id": 1, + "x": 263.5, + "y": -672.5, + "action": "", + "move_mode": "walk", + "action_params": "", + "type": "teleport" + }, + { + "id": 2, + "x": 247.5, + "y": -664.5, + "action": "", + "move_mode": "run", + "action_params": "", + "type": "path" + }, + { + "id": 3, + "x": 214.5, + "y": -661.5, + "action": "", + "move_mode": "run", + "action_params": "", + "type": "path" + }, + { + "id": 4, + "x": 192.5, + "y": -682, + "action": "", + "move_mode": "run", + "action_params": "", + "type": "path" + }, + { + "id": 5, + "x": 162.5, + "y": -681, + "action": "", + "move_mode": "run", + "action_params": "", + "type": "path" + }, + { + "id": 6, + "x": 157.5000949141504, + "y": -630.375, + "action": "", + "move_mode": "run", + "action_params": "", + "type": "path" + }, + { + "id": 7, + "x": 139.99022999999943, + "y": -608.2969000000003, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 8, + "x": 162.32030999999915, + "y": -592.3183600000002, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 9, + "x": 167.29102000000057, + "y": -599.75684, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 10, + "x": 163.2538999999997, + "y": -603.9433600000002, + "type": "target", + "move_mode": "walk", + "action": "", + "action_params": "" + } + ] +} \ No newline at end of file diff --git a/repo/js/Auto Theft NPC & 原食/assets/path/老高.json b/repo/js/Auto Theft NPC & 原食/assets/path/老高.json new file mode 100644 index 000000000..1df3d2606 --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/assets/path/老高.json @@ -0,0 +1,93 @@ +{ + "info": { + "name": "牢高", + "type": "collect", + "author": "听雨♪", + "version": "1.0", + "description": "", + "bgiVersion": "0.35.1" + }, + "positions": [ + { + "id": 1, + "x": 263.5, + "y": -672.5, + "action": "", + "move_mode": "walk", + "action_params": "", + "type": "teleport" + }, + { + "id": 2, + "x": 247.5, + "y": -664.5, + "action": "", + "move_mode": "run", + "action_params": "", + "type": "path" + }, + { + "id": 3, + "x": 214.5, + "y": -661.5, + "action": "", + "move_mode": "run", + "action_params": "", + "type": "path" + }, + { + "id": 4, + "x": 192.5, + "y": -682, + "action": "", + "move_mode": "run", + "action_params": "", + "type": "path" + }, + { + "id": 5, + "x": 162.5, + "y": -681, + "action": "", + "move_mode": "run", + "action_params": "", + "type": "path" + }, + { + "id": 6, + "x": 157.5000949141504, + "y": -630.375, + "action": "", + "move_mode": "run", + "action_params": "", + "type": "path" + }, + { + "id": 7, + "x": 139.99022999999943, + "y": -608.2969000000003, + "action": "", + "move_mode": "walk", + "action_params": "", + "type": "path" + }, + { + "id": 8, + "x": 162.32030999999915, + "y": -592.3183600000002, + "action": "", + "move_mode": "walk", + "action_params": "", + "type": "path" + }, + { + "id": 9, + "x": 158.751953125, + "y": -586.27294921875, + "type": "target", + "move_mode": "walk", + "action": "", + "action_params": "" + } + ] +} \ No newline at end of file diff --git a/repo/js/Auto Theft NPC & 原食/assets/path/莎拉.json b/repo/js/Auto Theft NPC & 原食/assets/path/莎拉.json new file mode 100644 index 000000000..1b760bcf7 --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/assets/path/莎拉.json @@ -0,0 +1,39 @@ +{ + "info": { + "name": "莎拉", + "type": "collect", + "author": "听雨♪", + "version": "1.0", + "description": "", + "bgiVersion": "0.35.1" + }, + "positions": [ + { + "id": 1, + "action": "", + "move_mode": "walk", + "type": "teleport", + "x": -867.7138671875, + "y": 2281.37646484375, + "action_params": "" + }, + { + "id": 2, + "x": -891.755859375, + "y": 2255.769775390625, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 3, + "x": -888.6591796875, + "y": 2240.89892578125, + "type": "target", + "move_mode": "walk", + "action": "", + "action_params": "" + } + ] +} \ No newline at end of file diff --git a/repo/js/Auto Theft NPC & 原食/assets/path/葵.json b/repo/js/Auto Theft NPC & 原食/assets/path/葵.json new file mode 100644 index 000000000..a5f932972 --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/assets/path/葵.json @@ -0,0 +1,30 @@ +{ + "info": { + "name": "葵", + "type": "collect", + "author": "听雨♪", + "version": "1.1", + "description": "", + "bgiVersion": "0.35.1" + }, + "positions": [ + { + "id": 1, + "x": -4402.5390625, + "y": -3053.0341796875, + "action": "", + "move_mode": "walk", + "action_params": "", + "type": "teleport" + }, + { + "id": 2, + "x": -4402.687357628773, + "y": -3072.3125, + "action": "", + "move_mode": "walk", + "action_params": "", + "type": "target" + } + ] +} \ No newline at end of file diff --git a/repo/js/Auto Theft NPC & 原食/assets/path/阿扎莱.json b/repo/js/Auto Theft NPC & 原食/assets/path/阿扎莱.json new file mode 100644 index 000000000..65cb5607f --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/assets/path/阿扎莱.json @@ -0,0 +1,66 @@ +{ + "info": { + "name": "阿扎莱", + "type": "collect", + "author": "听雨♪", + "version": "1.0", + "description": "", + "bgiVersion": "0.35.1" + }, + "positions": [ + { + "id": 1, + "action": "", + "move_mode": "walk", + "type": "teleport", + "x": 4096.03125, + "y": -2025.9755859375, + "action_params": "" + }, + { + "id": 2, + "x": 4085.078125, + "y": -2018.173828125, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 3, + "x": 4076.845703125, + "y": -1995.6533203125, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 4, + "x": 4100.158203125, + "y": -1986.6904296875, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 5, + "x": 4100.736328125, + "y": -1979.58837890625, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + }, + { + "id": 6, + "x": 4091.5751953125, + "y": -1980.16015625, + "type": "path", + "move_mode": "walk", + "action": "", + "action_params": "" + } + ] +} \ No newline at end of file diff --git a/repo/js/Auto Theft NPC & 原食/assets/path/阿鲁埃.json b/repo/js/Auto Theft NPC & 原食/assets/path/阿鲁埃.json new file mode 100644 index 000000000..dd3a8a7e3 --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/assets/path/阿鲁埃.json @@ -0,0 +1,57 @@ +{ + "info": { + "name": "ale", + "type": "collect", + "author": "听雨♪", + "version": "1.0", + "description": "", + "bgiVersion": "0.35.1" + }, + "positions": [ + { + "id": 1, + "action": "", + "move_mode": "walk", + "type": "teleport", + "x": 4645.490234375, + "y": 3467.8603515625, + "action_params": "" + }, + { + "id": 2, + "x": 4635.865234375, + "y": 3475.1591796875, + "type": "path", + "move_mode": "fly", + "action": "", + "action_params": "" + }, + { + "id": 3, + "x": 4639.42724609375, + "y": 3505.39697265625, + "type": "path", + "move_mode": "fly", + "action": "", + "action_params": "" + }, + { + "id": 4, + "x": 4622.95654296875, + "y": 3509.7421875, + "type": "path", + "move_mode": "fly", + "action": "stop_flying", + "action_params": "" + }, + { + "id": 5, + "x": 4602.0556640625, + "y": 3515.504150390625, + "type": "target", + "move_mode": "walk", + "action": "", + "action_params": "" + } + ] +} \ No newline at end of file diff --git a/repo/js/Auto Theft NPC & 原食/main.js b/repo/js/Auto Theft NPC & 原食/main.js new file mode 100644 index 000000000..2d07adb7d --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/main.js @@ -0,0 +1,540 @@ +const npcData = { + "Blanche": { + "name": "布兰琪", + "enable": true, + "page": 2, + "time": "night", + "path": "assets/path/布兰琪.json", + "goods": ["盐", "胡椒", "洋葱", "牛奶", "番茄", "卷心菜", "土豆", "小麦"] + }, + "DongSheng": { + "name": "东升", + "enable": true, + "page": 2, + "time": "any", + "path": "assets/path/东升.json", + "goods": ["洋葱", "牛奶", "卷心菜", "土豆", "小麦", "稻米", "虾仁", "豆腐", "杏仁", "盐", "胡椒", "番茄"] + }, + "ChefMao": { + "name": "香菱爹", + "enable": true, + "page": 5, + "time": "any", + "path": "assets/path/卯师父.json", + "goods": ["鱼肉", "螃蟹"] + }, + "UncleSun": { + "name": "奸商老孙", + "enable": true, + "page": 1, + "time": "day", + "path": "assets/path/老孙.json", + "goods": ["鱼肉", "螃蟹", "虾仁"] + }, + "UncleGao": { + "name": "奸商老高", + "enable": true, + "page": 1, + "time": "day", + "path": "assets/path/老高.json", + "goods": ["鱼肉"] + }, + "Aoi": { + "name": "葵", + "enable": true, + "page": 2, + "time": "any", + "path": "assets/path/葵.json", + "goods": ["洋葱", "牛奶", "卷心菜", "土豆", "稻米", "虾仁", "豆腐", "盐", "胡椒", "番茄"] + }, + "ShimuraKanbei": { + "name": "志村勘兵卫", + "enable": true, + "page": 4, + "time": "any", + "path": "assets/path/志村勘兵卫.json", + "goods": ["鱼肉", "螃蟹"] + }, + "Butrus": { + "name": "布特罗斯", + "enable": true, + "page": 1, + "time": "any", + "path": "assets/path/布特罗斯.json", + "goods": ["鱼肉", "螃蟹", "虾仁"] + }, + "Pam": { + "name": "珀姆", + "enable": true, + "page": 1, + "time": "any", + "path": "assets/path/珀姆.json", + "goods": ["鱼肉", "螃蟹", "虾仁"] + }, + "Hamawi": { + "name": "哈马维", + "enable": true, + "page": 2, + "time": "any", + "path": "assets/path/哈马维.json", + "goods": ["洋葱", "牛奶", "卷心菜", "土豆", "小麦", "稻米", "虾仁", "豆腐", "盐", "胡椒", "番茄"] + }, + "Azalai": { + "name": "阿扎莱", + "enable": true, + "page": 2, + "time": "any", + "path": "assets/path/阿扎莱.json", + "goods": ["鱼肉", "兽肉", "秃秃豆"] + }, + "Boucicaut": { + "name": "布希柯", + "enable": true, + "page": 2, + "time": "any", + "path": "assets/path/布希柯.json", + "goods": ["枫达", "洋葱", "牛奶", "卷心菜", "土豆", "小麦", "秃秃豆", "杏仁", "发酵果实汁", "盐", "胡椒", "番茄"] + }, + "Arouet": { + "name": "阿鲁埃", + "enable": true, + "page": 2, + "time": "any", + "path": "assets/path/阿鲁埃.json", + "goods": ["咖啡豆", "枫达"] + } + +} + +const goodsData = { + "salt": { + "id": "salt", + "name": "盐", + "file": "assets/images/salt.png" + }, + "pepper": { + "id": "pepper", + "name": "胡椒", + "file": "assets/images/pepper.png" + }, + "onion": { + "id": "onion", + "name": "洋葱", + "file": "assets/images/onion.png" + }, + "milk": { + "id": "milk", + "name": "牛奶", + "file": "assets/images/milk.png" + }, + "tomato": { + "id": "tomato", + "name": "番茄", + "file": "assets/images/tomato.png" + }, + "potato": { + "id": "potato", + "name": "土豆", + "file": "assets/images/potato.png" + }, + "wheat": { + "id": "wheat", + "name": "小麦", + "file": "assets/images/wheat.png" + }, + "rice": { + "id": "rice", + "name": "稻米", + "file": "assets/images/rice.png" + }, + "shrimp": { + "id": "shrimp", + "name": "虾仁", + "file": "assets/images/shrimp.png" + }, + "almond": { + "id": "almond", + "name": "杏仁", + "file": "assets/images/almond.png" + }, + "cabbage": { + "id": "cabbage", + "name": "卷心菜", + "file": "assets/images/cabbage.png" + }, + "tofu": { + "id": "tofu", + "name": "豆腐", + "file": "assets/images/tofu.png" + }, + "fish": { + "id": "fish", + "name": "鱼肉", + "file": "assets/images/fish.png" + }, + "crab": { + "id": "crab", + "name": "螃蟹", + "file": "assets/images/crab.png" + }, + "coffeeBeans": { + "id": "coffeeBeans", + "name": "咖啡豆", + "file": "assets/images/coffeeBeans.png" + }, + "glabrousBeans": { + "id": "glabrousBeans", + "name": "秃秃豆", + "file": "assets/images/glabrousBeans.png" + }, + "rawMeat": { + "id": "rawMeat", + "name": "兽肉", + "file": "assets/images/rawMeat.png" + }, + "fermentedJuice": { + "id": "fermentedJuice", + "name": "发酵果实汁", + "file": "assets/images/fermentedJuice.png" + }, + "fonta": { + "id": "fonta", + "name": "枫达", + "file": "assets/images/fonta.png" + } +}; + +const translationList = {}; + +const enableGoods = new Set([]); + +const othrtRo = { + "buy": { + "name": "购买按钮", + "file": "assets/images/buyBtn.png" + } +} + +// 设置游戏时间 +async function setTime(hour, minute) { + // 关于setTime + // 原作者: Tim + // 脚本名称: SetTimeMinute - 精确调整游戏时间到分钟 + // 脚本版本: 1.0 + // Hash: f5c2547dfc286fc643c733d630f775e8fbf12971 + + // 设置游戏分辨率和DPI缩放 + setGameMetrics(1920, 1080, 1); + // 圆心坐标 + const centerX = 1441; + const centerY = 501.6; + // 半径 + const r1 = 30; + const r2 = 150; + const r3 = 300; + const stepDuration = 50; + + function getPosition(r, index) { + let angle = index * Math.PI / 720; + return [Math.round(centerX + r * Math.cos(angle)), Math.round(centerY + r * Math.sin(angle))]; + } + async function mouseClick(x, y) { + moveMouseTo(x, y); + await sleep(50); + leftButtonDown(); + await sleep(50); + leftButtonUp(); + await sleep(stepDuration); + } + async function mouseClickAndMove(x1, y1, x2, y2) { + moveMouseTo(x1, y1); + await sleep(50); + leftButtonDown(); + await sleep(50); + moveMouseTo(x2, y2); + await sleep(50); + leftButtonUp(); + await sleep(stepDuration); + } + async function setTime(hour, minute) { + const end = (hour + 6) * 60 + minute - 20; + const n = 3; + for (let i = - n + 1; i < 1; i++) { + let [x, y] = getPosition(r1, end + i * 1440 / n); + await mouseClick(x, y); + } + let [x1, y1] = getPosition(r2, end + 5); + let [x2, y2] = getPosition(r3, end + 20 + 0.5); + await mouseClickAndMove(x1, y1, x2, y2); + } + + let h = Math.floor(hour + minute / 60); + const m = Math.floor(hour * 60 + minute) - h * 60; + h = ((h % 24) + 24) % 24; + log.info(`设置时间到 ${h} 点 ${m} 分`); + await keyPress("Escape"); + await sleep(1000); + await click(50, 700); + await sleep(2000); + await setTime(h, m); + await sleep(1000); + await click(1500, 1000);//确认 + await sleep(18000); + await keyPress("Escape"); + await sleep(2000); + await keyPress("Escape"); + await sleep(2000); +} + +// 地图追踪 +async function autoPath(locationPath) { + try { + let filePath = locationPath; + await pathingScript.runFile(filePath); + sleep(2000); + + return true; + } catch (error) { + log.error(`执行 ${locationName} 路径时发生错误`); + log.error(error.message); + } + + return false; +} + +// 平滑过渡函数(缓动效果) +function smoothStep(t) { + return t * t * (3 - 2 * t); +} + +// 模拟鼠标移动到指定位置(带曲线路径) +async function naturalMove(initX, initY, targetX, targetY, duration, wiggle = 30) { + + // 生成控制点(使路径形成曲线) + const controlX = (initX + targetX) / 2 + (Math.random() * wiggle * 2 - wiggle); + const controlY = (initY + targetY) / 2 + (Math.random() * wiggle * 2 - wiggle); + + const steps = Math.max(duration / 20, 10); // 计算步数 + + for (let i = 0; i <= steps; i++) { + const progress = i / steps; + const t = smoothStep(progress); // 使用平滑过渡 + + // 二次贝塞尔曲线计算 + const x = (1 - t) * (1 - t) * initX + 2 * (1 - t) * t * controlX + t * t * targetX; + const y = (1 - t) * (1 - t) * initY + 2 * (1 - t) * t * controlY + t * t * targetY; + + moveMouseTo(Math.trunc(x), Math.trunc(y)); + + // 随机延迟使移动更自然 + await sleep(Math.trunc(duration / steps * (0.8 + Math.random() * 0.4))); + } + + // 确保最终位置准确 + moveMouseTo(targetX, targetY); +} + +// 切换下一页商品 +async function nextGoodsPage() { + //设置脚本环境的游戏分辨率和DPI缩放 + setGameMetrics(3840, 2160, 1.5); + + let [initX, initY] = [1500, 1850]; + let [targetX, targetY] = [1800, 260]; + + moveMouseTo(initX, initY); + leftButtonDown(); + await naturalMove(initX, initY, targetX, targetY, 300); + + // 按住了, 防止弹太远 + await sleep(520); + leftButtonUp(); +} + +// 快速购买 +async function qucikBuy() { + //设置脚本环境的游戏分辨率和DPI缩放 + setGameMetrics(3840, 2160, 1.5); + + let [buyBtnX, buyBtnY] = [3200, 2045]; + let [confirmBtnX, confirmBtnY] = [2025, 1570]; + let [addNumX, addNumY] = [2060, 1208]; + + // 等待界面切换 + await sleep(200); + + // 查找购买按钮 + let captureRegion = captureGameRegion(); + let buyBtn = captureRegion.Find(othrtRo.buy.ro); + if (buyBtn.isEmpty()) { + return false; + } + // 点击购买按钮 + click(buyBtn.x * 2 + buyBtn.width, buyBtn.y * 2 + buyBtn.height); + // 等待购买窗口弹出 + await sleep(300); + + // 增加数量至最大 + leftButtonDown(); + await naturalMove(addNumX, addNumY, addNumX + 666, addNumY - 233, 100); + leftButtonUp(); + + // 点击确认按钮 + click(confirmBtnX, confirmBtnY); + // 等待购买完成 + await sleep(200); + // 点击空白关闭 + click(buyBtnX, buyBtnY); + await sleep(200); + + return true; +} + +// 跳过对话 +async function spikChat(count = 5) { + await sleep(100); + for (let i = 0; i < count; i++) { + keyPress("VK_F"); + await sleep(1300); + } + await sleep(1000); +} + +// 购买逻辑 +async function buyGoods(npcName) { + // 设置脚本环境的游戏分辨率和DPI缩放 + setGameMetrics(3840, 2160, 1.5); + + let tempGoods = [...npcData[npcName].enableGoods]; + + // 多页购买 + for (let i = 0; i < npcData[npcName].page; i++) { + log.info("购买列表: {goods}", [...tempGoods].join(", ")); + + // 获取一张截图 + let captureRegion = captureGameRegion(); + + // 记录已经购买的物品 + let boughtGoods = new Set([]); + + // 匹配商品 + for (let item of tempGoods) { + let resList = captureRegion.FindMulti(goodsData[item].ro); + for (let res of resList) { + log.info("找到物品: {i} 位置({x},{y},{h},{w})", goodsData[item].name, res.x, res.y, res.width, res.height); + // 移除已购买的物品 + boughtGoods.add(item); + // 点击商品 + click(res.x * 2 + res.width, res.y * 2 + res.height); + if (await qucikBuy()) { + log.info("购买成功: {item}", goodsData[item].name); + await sleep(500); + // 重新截图 + captureRegion = captureGameRegion(); + } + else { + log.info("购买失败: {item}, 背包已经满或商品已售罄", goodsData[item].name); + } + } + } + + // 从已购买物品中移除 + tempGoods = tempGoods.filter(item => !boughtGoods.has(item)); + + + // 若不是最后一页且还有未购买的物品 + if (tempGoods.length > 0 && i !== npcData[npcName].page - 1) { + log.info("切换到下一页商品"); + await nextGoodsPage(); + + // 最后一次切换界面, 等待UI回弹 + if (i === npcData[npcName].page - 2) { + log.info("等待界面回弹"); + await sleep(500); + } + } + } +} + +// 初始化NPC商品 +async function initNpcData() { + for (let [key, npc] of Object.entries(npcData)) { + + // 翻译物品名称 + let npcGoods = new Set([]); + Object.entries(npc.goods).forEach(([count, item]) => { + npcGoods.add(translationList[item]); + }); + + // 筛选已启用的商品 + npc.enableGoods = [...enableGoods].filter(item => npcGoods.has(item)); + + // 如果没有启用的商品, 则不启用该NPC + if (npc.enableGoods.length === 0) { + npc.enable = false; + } + } +} + +// 加载识别对象 +async function initRo() { + try { + // 加载识别对象 + for (let [key, item] of Object.entries(goodsData)) { + // 填充中英文对照表 + translationList[item.name] = item.id; + // 判断启动商品、加载识别对象 + if (settings[item.id]) { + enableGoods.add(item.id); + item.ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync(item.file)); + item.ro.Threshold = 0.75; + item.ro.Use3Channels = true; + } + } + // 加载其他识别对象 + for (let [key, item] of Object.entries(othrtRo)) { + item.ro = RecognitionObject.TemplateMatch(file.ReadImageMatSync(item.file)); + item.ro.Threshold = 0.85; + } + return true; + } + catch (error) { + log.error("加载识别对象时发生错误: {error}", error.message); + throw error; + } +} + +(async function () { + // ==================== 初始化识别对象 ==================== + await initRo(); + log.info("识别对象初始化完成"); + + // ==================== 初始化NPC数据 ==================== + await initNpcData(); + log.info("NPC数据初始化完成"); + + // ==================== 自动购买 ==================== + for (let [key, npc] of Object.entries(npcData)) { + if (npc.enable) { + log.info("开始购买NPC: {npcName}", npc.name); + // 设置游戏时间 + if (npc.time === "night") { + await setTime(20, 0); // 设置为晚上8点 + } + else if (npc.time === "day") { + await setTime(8, 0); // 设置为早上8点 + } + await autoPath(npc.path); + await spikChat(); + await buyGoods(key); + // 返回主界面 + await genshin.returnMainUi(); + log.info("完成购买NPC: {npcName}", npc.name); + } + else { + log.info("跳过未启用的NPC: {npcName}", npc.name); + } + } +})(); + + diff --git a/repo/js/Auto Theft NPC & 原食/manifest.json b/repo/js/Auto Theft NPC & 原食/manifest.json new file mode 100644 index 000000000..cef82bf19 --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/manifest.json @@ -0,0 +1,14 @@ +{ + "manifest_version": 1, + "name": "抢劫(购买)NPC商品-图像识别", + "version": "2.0.0", + "description": "原食脚本: 基于图像识别的抢劫NPC商品, 可选择性购买商品, 节省大量摩拉与时间.", + "authors": [ + { + "name": "听雨♪", + "link": "https://github.com/TingYu-lulumi" + } + ], + "settings_ui": "settings.json", + "main": "main.js" +} \ No newline at end of file diff --git a/repo/js/Auto Theft NPC & 原食/settings.json b/repo/js/Auto Theft NPC & 原食/settings.json new file mode 100644 index 000000000..4a9a8db9f --- /dev/null +++ b/repo/js/Auto Theft NPC & 原食/settings.json @@ -0,0 +1,116 @@ +[ + { + "name": "salt", + "type": "checkbox", + "label": "盐", + "default": true + }, + { + "name": "pepper", + "type": "checkbox", + "label": "胡椒", + "default": true + }, + { + "name": "onion", + "type": "checkbox", + "label": "洋葱", + "default": true + }, + { + "name": "milk", + "type": "checkbox", + "label": "牛奶", + "default": true + }, + { + "name": "tomato", + "type": "checkbox", + "label": "番茄", + "default": true + }, + { + "name": "potato", + "type": "checkbox", + "label": "土豆", + "default": true + }, + { + "name": "wheat", + "type": "checkbox", + "label": "小麦", + "default": true + }, + { + "name": "rice", + "type": "checkbox", + "label": "稻米", + "default": true + }, + { + "name": "shrimp", + "type": "checkbox", + "label": "虾仁", + "default": true + }, + { + "name": "almond", + "type": "checkbox", + "label": "杏仁", + "default": true + }, + { + "name": "cabbage", + "type": "checkbox", + "label": "卷心菜", + "default": true + }, + { + "name": "tofu", + "type": "checkbox", + "label": "豆腐", + "default": true + }, + { + "name": "fish", + "type": "checkbox", + "label": "鱼肉", + "default": true + }, + { + "name": "crab", + "type": "checkbox", + "label": "螃蟹", + "default": true + }, + { + "name": "coffeeBeans", + "type": "checkbox", + "label": "咖啡豆", + "default": true + }, + { + "name": "glabrousBeans", + "type": "checkbox", + "label": "秃秃豆", + "default": true + }, + { + "name": "rawMeat", + "type": "checkbox", + "label": "兽肉", + "default": true + }, + { + "name": "fermentedJuice", + "type": "checkbox", + "label": "发酵果实汁", + "default": true + }, + { + "name": "fonta", + "type": "checkbox", + "label": "苏乐达(枫达)", + "default": true + } +] \ No newline at end of file