批量修改农场土地

This commit is contained in:
2025-07-21 09:51:28 +08:00
parent d39c0e1634
commit 64f9f16351
8 changed files with 244 additions and 257 deletions

View File

@@ -394,7 +394,7 @@ func _handle_visit_player_response(data):
"money": money, "money": money,
"experience": experience, "experience": experience,
"stamina": stamina, "stamina": stamina,
"farm_lots": farm_lots.duplicate(true), "农场土地": farm_lots.duplicate(true),
"种子仓库": player_bag.duplicate(true) "种子仓库": player_bag.duplicate(true)
} }
@@ -407,7 +407,7 @@ func _handle_visit_player_response(data):
experience = target_player_data.get("experience", 0) experience = target_player_data.get("experience", 0)
level = target_player_data.get("level", 1) level = target_player_data.get("level", 1)
stamina = target_player_data.get("体力值", 20) stamina = target_player_data.get("体力值", 20)
farm_lots = target_player_data.get("farm_lots", []) farm_lots = target_player_data.get("农场土地", [])
player_bag = target_player_data.get("种子仓库", []) player_bag = target_player_data.get("种子仓库", [])
crop_warehouse = target_player_data.get("作物仓库", []) crop_warehouse = target_player_data.get("作物仓库", [])
item_bag = target_player_data.get("道具背包", []) item_bag = target_player_data.get("道具背包", [])
@@ -484,7 +484,7 @@ func _handle_return_my_farm_response(data):
experience = player_data.get("experience", 0) experience = player_data.get("experience", 0)
level = player_data.get("level", 1) level = player_data.get("level", 1)
stamina = player_data.get("体力值", 20) stamina = player_data.get("体力值", 20)
farm_lots = player_data.get("farm_lots", []) farm_lots = player_data.get("农场土地", [])
player_bag = player_data.get("种子仓库", []) player_bag = player_data.get("种子仓库", [])
crop_warehouse = player_data.get("作物仓库", []) crop_warehouse = player_data.get("作物仓库", [])
item_bag = player_data.get("道具背包", []) item_bag = player_data.get("道具背包", [])
@@ -631,10 +631,10 @@ func _handle_crop_update(update_data):
if is_visiting_update and is_visiting_mode: if is_visiting_update and is_visiting_mode:
# 访问模式下的更新,更新被访问玩家的农场数据 # 访问模式下的更新,更新被访问玩家的农场数据
farm_lots = update_data["farm_lots"] farm_lots = update_data["农场土地"]
elif not is_visiting_update and not is_visiting_mode: elif not is_visiting_update and not is_visiting_mode:
# 正常模式下的更新,更新自己的农场数据 # 正常模式下的更新,更新自己的农场数据
farm_lots = update_data["farm_lots"] farm_lots = update_data["农场土地"]
else: else:
# 状态不匹配,忽略更新 # 状态不匹配,忽略更新
print("忽略不匹配的作物更新,当前访问模式:", is_visiting_mode, ",更新类型:", is_visiting_update) print("忽略不匹配的作物更新,当前访问模式:", is_visiting_mode, ",更新类型:", is_visiting_update)

View File

@@ -355,7 +355,7 @@ func _on_data_received(data):
elif action_type == "use_item": elif action_type == "use_item":
if success: if success:
main_game.item_bag = updated_data["道具背包"] main_game.item_bag = updated_data["道具背包"]
main_game.farm_lots = updated_data["farm_lots"] main_game.farm_lots = updated_data["农场土地"]
main_game.experience = updated_data["experience"] main_game.experience = updated_data["experience"]
main_game.level = updated_data["level"] main_game.level = updated_data["level"]
main_game._update_ui() main_game._update_ui()
@@ -371,7 +371,7 @@ func _on_data_received(data):
main_game.money = updated_data["money"] main_game.money = updated_data["money"]
main_game.experience = updated_data["experience"] main_game.experience = updated_data["experience"]
main_game.level = updated_data["level"] main_game.level = updated_data["level"]
main_game.farm_lots = updated_data["farm_lots"] main_game.farm_lots = updated_data["农场土地"]
main_game.player_bag = updated_data["种子仓库"] main_game.player_bag = updated_data["种子仓库"]
main_game._update_ui() main_game._update_ui()
main_game._update_farm_lots_state() main_game._update_farm_lots_state()
@@ -384,7 +384,7 @@ func _on_data_received(data):
elif action_type == "remove_crop": elif action_type == "remove_crop":
if success: if success:
main_game.money = updated_data["money"] main_game.money = updated_data["money"]
main_game.farm_lots = updated_data["farm_lots"] main_game.farm_lots = updated_data["农场土地"]
main_game._update_ui() main_game._update_ui()
main_game._update_farm_lots_state() main_game._update_farm_lots_state()
Toast.show(message, Color.GREEN) Toast.show(message, Color.GREEN)
@@ -395,7 +395,7 @@ func _on_data_received(data):
elif action_type == "water_crop": elif action_type == "water_crop":
if success: if success:
main_game.money = updated_data["money"] main_game.money = updated_data["money"]
main_game.farm_lots = updated_data["farm_lots"] main_game.farm_lots = updated_data["农场土地"]
main_game.experience = updated_data["experience"] main_game.experience = updated_data["experience"]
main_game.level = updated_data["level"] main_game.level = updated_data["level"]
main_game._update_ui() main_game._update_ui()
@@ -408,7 +408,7 @@ func _on_data_received(data):
elif action_type == "fertilize_crop": elif action_type == "fertilize_crop":
if success: if success:
main_game.money = updated_data["money"] main_game.money = updated_data["money"]
main_game.farm_lots = updated_data["farm_lots"] main_game.farm_lots = updated_data["农场土地"]
main_game.experience = updated_data["experience"] main_game.experience = updated_data["experience"]
main_game.level = updated_data["level"] main_game.level = updated_data["level"]
main_game._update_ui() main_game._update_ui()
@@ -421,7 +421,7 @@ func _on_data_received(data):
elif action_type == "upgrade_land": elif action_type == "upgrade_land":
if success: if success:
main_game.money = updated_data["money"] main_game.money = updated_data["money"]
main_game.farm_lots = updated_data["farm_lots"] main_game.farm_lots = updated_data["农场土地"]
main_game._update_ui() main_game._update_ui()
main_game._update_farm_lots_state() main_game._update_farm_lots_state()
Toast.show(message, Color.GOLD) Toast.show(message, Color.GOLD)
@@ -432,7 +432,7 @@ func _on_data_received(data):
elif action_type == "buy_new_ground": elif action_type == "buy_new_ground":
if success: if success:
main_game.money = updated_data["money"] main_game.money = updated_data["money"]
main_game.farm_lots = updated_data["farm_lots"] main_game.farm_lots = updated_data["农场土地"]
main_game._create_farm_buttons() main_game._create_farm_buttons()
main_game._update_farm_lots_state() main_game._update_farm_lots_state()
main_game._update_ui() main_game._update_ui()

View File

@@ -419,7 +419,7 @@ func _handle_login_success(user_data: Dictionary):
# 更新主游戏数据 # 更新主游戏数据
main_game.experience = user_data.get("experience", 0) main_game.experience = user_data.get("experience", 0)
main_game.farm_lots = user_data.get("farm_lots", []) main_game.farm_lots = user_data.get("农场土地", [])
main_game.level = user_data.get("level", 1) main_game.level = user_data.get("level", 1)
main_game.money = user_data.get("money", 0) main_game.money = user_data.get("money", 0)
main_game.stamina = user_data.get("体力值", 20) main_game.stamina = user_data.get("体力值", 20)

View File

@@ -613,7 +613,7 @@ class TCPGameServer(TCPServer):
"""通用的作物更新逻辑""" """通用的作物更新逻辑"""
growth_updated = False growth_updated = False
for farm_lot in player_data.get("farm_lots", []): for farm_lot in player_data.get("农场土地", []):
if (farm_lot.get("crop_type") and farm_lot.get("is_planted") and if (farm_lot.get("crop_type") and farm_lot.get("is_planted") and
not farm_lot.get("is_dead") and farm_lot["grow_time"] < farm_lot["max_grow_time"]): not farm_lot.get("is_dead") and farm_lot["grow_time"] < farm_lot["max_grow_time"]):
@@ -701,7 +701,7 @@ class TCPGameServer(TCPServer):
update_message = { update_message = {
"type": "crop_update", "type": "crop_update",
"farm_lots": target_player_data.get("farm_lots", []), "农场土地": target_player_data.get("农场土地", []),
"timestamp": time.time(), "timestamp": time.time(),
"is_visiting": True, "is_visiting": True,
"visited_player": visiting_target, "visited_player": visiting_target,
@@ -714,7 +714,7 @@ class TCPGameServer(TCPServer):
"""发送正常模式的更新""" """发送正常模式的更新"""
update_message = { update_message = {
"type": "crop_update", "type": "crop_update",
"farm_lots": player_data.get("farm_lots", []), "农场土地": player_data.get("农场土地", []),
"timestamp": time.time(), "timestamp": time.time(),
"is_visiting": False "is_visiting": False
} }
@@ -1001,10 +1001,10 @@ class TCPGameServer(TCPServer):
def _send_initial_login_data(self, client_id, player_data): def _send_initial_login_data(self, client_id, player_data):
"""发送登录后的初始数据""" """发送登录后的初始数据"""
# 立即向客户端发送一次作物状态 # 立即向客户端发送一次作物状态
farm_lots = player_data.get("farm_lots", []) farm_lots = player_data.get("农场土地", [])
initial_crop_update = { initial_crop_update = {
"type": "crop_update", "type": "crop_update",
"farm_lots": farm_lots, "农场土地": farm_lots,
"timestamp": time.time() "timestamp": time.time()
} }
self.send_data(client_id, initial_crop_update) self.send_data(client_id, initial_crop_update)
@@ -1115,10 +1115,10 @@ class TCPGameServer(TCPServer):
}) })
# 确保农场地块存在 # 确保农场地块存在
if "farm_lots" not in player_data: if "农场土地" not in player_data:
player_data["farm_lots"] = [] player_data["农场土地"] = []
for i in range(40): for i in range(40):
player_data["farm_lots"].append({ player_data["农场土地"].append({
"crop_type": "", "crop_type": "",
"grow_time": 0, "grow_time": 0,
"is_dead": False, "is_dead": False,
@@ -1410,10 +1410,10 @@ class TCPGameServer(TCPServer):
return self._send_action_error(client_id, "harvest_crop", f"无法找到玩家 {target_username} 的数据") return self._send_action_error(client_id, "harvest_crop", f"无法找到玩家 {target_username} 的数据")
# 验证地块索引 # 验证地块索引
if lot_index < 0 or lot_index >= len(target_player_data.get("farm_lots", [])): if lot_index < 0 or lot_index >= len(target_player_data.get("农场土地", [])):
return self._send_action_error(client_id, "harvest_crop", "无效的地块索引") return self._send_action_error(client_id, "harvest_crop", "无效的地块索引")
target_lot = target_player_data["farm_lots"][lot_index] target_lot = target_player_data["农场土地"][lot_index]
# 检查地块状态 # 检查地块状态
if not target_lot.get("is_planted", False) or not target_lot.get("crop_type", ""): if not target_lot.get("is_planted", False) or not target_lot.get("crop_type", ""):
@@ -1448,10 +1448,10 @@ class TCPGameServer(TCPServer):
else: else:
# 正常模式:收获自己的作物 # 正常模式:收获自己的作物
# 验证地块索引 # 验证地块索引
if lot_index < 0 or lot_index >= len(current_player_data.get("farm_lots", [])): if lot_index < 0 or lot_index >= len(current_player_data.get("农场土地", [])):
return self._send_action_error(client_id, "harvest_crop", "无效的地块索引") return self._send_action_error(client_id, "harvest_crop", "无效的地块索引")
lot = current_player_data["farm_lots"][lot_index] lot = current_player_data["农场土地"][lot_index]
# 检查地块状态 # 检查地块状态
if not lot.get("is_planted", False) or not lot.get("crop_type", ""): if not lot.get("is_planted", False) or not lot.get("crop_type", ""):
@@ -2056,7 +2056,7 @@ class TCPGameServer(TCPServer):
"""为指定玩家的空地生长杂草""" """为指定玩家的空地生长杂草"""
import random import random
farm_lots = player_data.get("farm_lots", []) farm_lots = player_data.get("农场土地", [])
if not farm_lots: if not farm_lots:
return 0 return 0
@@ -2126,10 +2126,10 @@ class TCPGameServer(TCPServer):
crop_name = message.get("crop_name", "") crop_name = message.get("crop_name", "")
# 验证参数 # 验证参数
if lot_index < 0 or lot_index >= len(player_data.get("farm_lots", [])): if lot_index < 0 or lot_index >= len(player_data.get("农场土地", [])):
return self._send_action_error(client_id, "plant_crop", "无效的地块索引") return self._send_action_error(client_id, "plant_crop", "无效的地块索引")
lot = player_data["farm_lots"][lot_index] lot = player_data["农场土地"][lot_index]
# 检查地块状态 # 检查地块状态
if not lot.get("is_diged", False): if not lot.get("is_diged", False):
@@ -3177,10 +3177,10 @@ class TCPGameServer(TCPServer):
lot_index = message.get("lot_index", -1) lot_index = message.get("lot_index", -1)
# 验证地块索引 # 验证地块索引
if lot_index < 0 or lot_index >= len(player_data.get("farm_lots", [])): if lot_index < 0 or lot_index >= len(player_data.get("农场土地", [])):
return self._send_action_error(client_id, "dig_ground", "无效的地块索引") return self._send_action_error(client_id, "dig_ground", "无效的地块索引")
lot = player_data["farm_lots"][lot_index] lot = player_data["农场土地"][lot_index]
# 检查地块是否已开垦 # 检查地块是否已开垦
if lot.get("is_diged", False): if lot.get("is_diged", False):
@@ -3194,7 +3194,7 @@ class TCPGameServer(TCPServer):
"""处理土地开垦逻辑""" """处理土地开垦逻辑"""
# 计算开垦费用 - 基于已开垦地块数量 # 计算开垦费用 - 基于已开垦地块数量
digged_count = sum(1 for l in player_data.get("farm_lots", []) if l.get("is_diged", False)) digged_count = sum(1 for l in player_data.get("农场土地", []) if l.get("is_diged", False))
dig_money = digged_count * 1000 dig_money = digged_count * 1000
# 检查玩家金钱是否足够 # 检查玩家金钱是否足够
@@ -3258,7 +3258,7 @@ class TCPGameServer(TCPServer):
"money": player_data["money"], "money": player_data["money"],
"experience": player_data["experience"], "experience": player_data["experience"],
"level": player_data["level"], "level": player_data["level"],
"farm_lots": player_data["farm_lots"], "农场土地": player_data["农场土地"],
"种子仓库": player_data["种子仓库"] "种子仓库": player_data["种子仓库"]
} }
}) })
@@ -3325,10 +3325,10 @@ class TCPGameServer(TCPServer):
lot_index = message.get("lot_index", -1) lot_index = message.get("lot_index", -1)
# 验证地块索引 # 验证地块索引
if lot_index < 0 or lot_index >= len(player_data.get("farm_lots", [])): if lot_index < 0 or lot_index >= len(player_data.get("农场土地", [])):
return self._send_action_error(client_id, "remove_crop", "无效的地块索引") return self._send_action_error(client_id, "remove_crop", "无效的地块索引")
lot = player_data["farm_lots"][lot_index] lot = player_data["农场土地"][lot_index]
# 检查地块状态 # 检查地块状态
if not lot.get("is_planted", False) or not lot.get("crop_type", ""): if not lot.get("is_planted", False) or not lot.get("crop_type", ""):
@@ -3372,7 +3372,7 @@ class TCPGameServer(TCPServer):
"message": f"成功铲除作物 {crop_type},花费 {removal_cost} 金钱", "message": f"成功铲除作物 {crop_type},花费 {removal_cost} 金钱",
"updated_data": { "updated_data": {
"money": player_data["money"], "money": player_data["money"],
"farm_lots": player_data["farm_lots"] "农场土地": player_data["农场土地"]
} }
}) })
@@ -3406,10 +3406,10 @@ class TCPGameServer(TCPServer):
return self._send_action_error(client_id, "water_crop", f"无法找到玩家 {target_username} 的数据") return self._send_action_error(client_id, "water_crop", f"无法找到玩家 {target_username} 的数据")
# 验证地块索引 # 验证地块索引
if lot_index < 0 or lot_index >= len(target_player_data.get("farm_lots", [])): if lot_index < 0 or lot_index >= len(target_player_data.get("农场土地", [])):
return self._send_action_error(client_id, "water_crop", "无效的地块索引") return self._send_action_error(client_id, "water_crop", "无效的地块索引")
target_lot = target_player_data["farm_lots"][lot_index] target_lot = target_player_data["农场土地"][lot_index]
# 检查地块状态 # 检查地块状态
if not target_lot.get("is_planted", False) or not target_lot.get("crop_type", ""): if not target_lot.get("is_planted", False) or not target_lot.get("crop_type", ""):
@@ -3420,10 +3420,10 @@ class TCPGameServer(TCPServer):
else: else:
# 正常模式:浇水自己的作物 # 正常模式:浇水自己的作物
# 验证地块索引 # 验证地块索引
if lot_index < 0 or lot_index >= len(current_player_data.get("farm_lots", [])): if lot_index < 0 or lot_index >= len(current_player_data.get("农场土地", [])):
return self._send_action_error(client_id, "water_crop", "无效的地块索引") return self._send_action_error(client_id, "water_crop", "无效的地块索引")
lot = current_player_data["farm_lots"][lot_index] lot = current_player_data["农场土地"][lot_index]
# 检查地块状态 # 检查地块状态
if not lot.get("is_planted", False) or not lot.get("crop_type", ""): if not lot.get("is_planted", False) or not lot.get("crop_type", ""):
@@ -3509,7 +3509,7 @@ class TCPGameServer(TCPServer):
"money": player_data["money"], "money": player_data["money"],
"experience": player_data["experience"], "experience": player_data["experience"],
"level": player_data["level"], "level": player_data["level"],
"farm_lots": player_data["farm_lots"] "农场土地": player_data["农场土地"]
} }
}) })
@@ -3623,10 +3623,10 @@ class TCPGameServer(TCPServer):
return self._send_action_error(client_id, "fertilize_crop", f"无法找到玩家 {target_username} 的数据") return self._send_action_error(client_id, "fertilize_crop", f"无法找到玩家 {target_username} 的数据")
# 验证地块索引 # 验证地块索引
if lot_index < 0 or lot_index >= len(target_player_data.get("farm_lots", [])): if lot_index < 0 or lot_index >= len(target_player_data.get("农场土地", [])):
return self._send_action_error(client_id, "fertilize_crop", "无效的地块索引") return self._send_action_error(client_id, "fertilize_crop", "无效的地块索引")
target_lot = target_player_data["farm_lots"][lot_index] target_lot = target_player_data["农场土地"][lot_index]
# 检查地块状态 # 检查地块状态
if not target_lot.get("is_planted", False) or not target_lot.get("crop_type", ""): if not target_lot.get("is_planted", False) or not target_lot.get("crop_type", ""):
@@ -3637,10 +3637,10 @@ class TCPGameServer(TCPServer):
else: else:
# 正常模式:施肥自己的作物 # 正常模式:施肥自己的作物
# 验证地块索引 # 验证地块索引
if lot_index < 0 or lot_index >= len(current_player_data.get("farm_lots", [])): if lot_index < 0 or lot_index >= len(current_player_data.get("农场土地", [])):
return self._send_action_error(client_id, "fertilize_crop", "无效的地块索引") return self._send_action_error(client_id, "fertilize_crop", "无效的地块索引")
lot = current_player_data["farm_lots"][lot_index] lot = current_player_data["农场土地"][lot_index]
# 检查地块状态 # 检查地块状态
if not lot.get("is_planted", False) or not lot.get("crop_type", ""): if not lot.get("is_planted", False) or not lot.get("crop_type", ""):
@@ -3767,7 +3767,7 @@ class TCPGameServer(TCPServer):
"money": player_data["money"], "money": player_data["money"],
"experience": player_data["experience"], "experience": player_data["experience"],
"level": player_data["level"], "level": player_data["level"],
"farm_lots": player_data["farm_lots"] "农场土地": player_data["农场土地"]
} }
}) })
@@ -3925,10 +3925,10 @@ class TCPGameServer(TCPServer):
def _handle_normal_item_use(self, client_id, player_data, username, lot_index, item_name, use_type): def _handle_normal_item_use(self, client_id, player_data, username, lot_index, item_name, use_type):
"""处理正常模式下的道具使用""" """处理正常模式下的道具使用"""
if lot_index < 0 or lot_index >= len(player_data.get("farm_lots", [])): if lot_index < 0 or lot_index >= len(player_data.get("农场土地", [])):
return self._send_action_error(client_id, "use_item", "无效的地块索引") return self._send_action_error(client_id, "use_item", "无效的地块索引")
lot = player_data["farm_lots"][lot_index] lot = player_data["农场土地"][lot_index]
return self._process_item_use_normal(client_id, player_data, username, lot, lot_index, item_name, use_type) return self._process_item_use_normal(client_id, player_data, username, lot, lot_index, item_name, use_type)
def _handle_visiting_item_use(self, client_id, player_data, username, target_username, lot_index, item_name, use_type): def _handle_visiting_item_use(self, client_id, player_data, username, target_username, lot_index, item_name, use_type):
@@ -3937,10 +3937,10 @@ class TCPGameServer(TCPServer):
if not target_player_data: if not target_player_data:
return self._send_action_error(client_id, "use_item", f"无法找到玩家 {target_username} 的数据") return self._send_action_error(client_id, "use_item", f"无法找到玩家 {target_username} 的数据")
if lot_index < 0 or lot_index >= len(target_player_data.get("farm_lots", [])): if lot_index < 0 or lot_index >= len(target_player_data.get("农场土地", [])):
return self._send_action_error(client_id, "use_item", "无效的地块索引") return self._send_action_error(client_id, "use_item", "无效的地块索引")
target_lot = target_player_data["farm_lots"][lot_index] target_lot = target_player_data["农场土地"][lot_index]
return self._process_item_use_visiting(client_id, player_data, username, target_player_data, target_username, target_lot, lot_index, item_name, use_type) return self._process_item_use_visiting(client_id, player_data, username, target_player_data, target_username, target_lot, lot_index, item_name, use_type)
def _has_item_in_inventory(self, player_data, item_name): def _has_item_in_inventory(self, player_data, item_name):
@@ -4096,7 +4096,7 @@ class TCPGameServer(TCPServer):
"updated_data": { "updated_data": {
"experience": player_data["experience"], "experience": player_data["experience"],
"level": player_data["level"], "level": player_data["level"],
"farm_lots": player_data["farm_lots"], "农场土地": player_data["农场土地"],
"道具背包": player_data["道具背包"] "道具背包": player_data["道具背包"]
} }
}) })
@@ -4161,7 +4161,7 @@ class TCPGameServer(TCPServer):
"updated_data": { "updated_data": {
"experience": player_data["experience"], "experience": player_data["experience"],
"level": player_data["level"], "level": player_data["level"],
"farm_lots": player_data["farm_lots"], "农场土地": player_data["农场土地"],
"道具背包": player_data["道具背包"] "道具背包": player_data["道具背包"]
} }
}) })
@@ -4344,7 +4344,7 @@ class TCPGameServer(TCPServer):
"updated_data": { "updated_data": {
"experience": player_data["experience"], "experience": player_data["experience"],
"level": player_data["level"], "level": player_data["level"],
"farm_lots": player_data["farm_lots"], "农场土地": player_data["农场土地"],
"道具背包": player_data["道具背包"] "道具背包": player_data["道具背包"]
} }
}) })
@@ -4401,7 +4401,7 @@ class TCPGameServer(TCPServer):
"updated_data": { "updated_data": {
"experience": player_data["experience"], "experience": player_data["experience"],
"level": player_data["level"], "level": player_data["level"],
"farm_lots": player_data["farm_lots"], "农场土地": player_data["农场土地"],
"道具背包": player_data["道具背包"] "道具背包": player_data["道具背包"]
} }
}) })
@@ -5123,10 +5123,10 @@ class TCPGameServer(TCPServer):
lot_index = message.get("lot_index", -1) lot_index = message.get("lot_index", -1)
# 验证地块索引 # 验证地块索引
if lot_index < 0 or lot_index >= len(player_data.get("farm_lots", [])): if lot_index < 0 or lot_index >= len(player_data.get("农场土地", [])):
return self._send_action_error(client_id, "upgrade_land", "无效的地块索引") return self._send_action_error(client_id, "upgrade_land", "无效的地块索引")
lot = player_data["farm_lots"][lot_index] lot = player_data["农场土地"][lot_index]
# 检查地块是否已开垦 # 检查地块是否已开垦
if not lot.get("is_diged", False): if not lot.get("is_diged", False):
@@ -5187,7 +5187,7 @@ class TCPGameServer(TCPServer):
"message": f"土地升级成功!升级到{next_level}{next_name},作物将以{speed_multiplier}倍速度生长", "message": f"土地升级成功!升级到{next_level}{next_name},作物将以{speed_multiplier}倍速度生长",
"updated_data": { "updated_data": {
"money": player_data["money"], "money": player_data["money"],
"farm_lots": player_data["farm_lots"] "农场土地": player_data["农场土地"]
} }
}) })
#==========================升级土地处理========================== #==========================升级土地处理==========================
@@ -5223,7 +5223,7 @@ class TCPGameServer(TCPServer):
# 检查地块数量限制 # 检查地块数量限制
max_lots = 1000 # 最大地块数量限制 max_lots = 1000 # 最大地块数量限制
current_lots = len(player_data.get("farm_lots", [])) current_lots = len(player_data.get("农场土地", []))
if current_lots >= max_lots: if current_lots >= max_lots:
return self._send_action_error(client_id, "buy_new_ground", f"已达到最大地块数量限制({max_lots}个)") return self._send_action_error(client_id, "buy_new_ground", f"已达到最大地块数量限制({max_lots}个)")
@@ -5244,9 +5244,9 @@ class TCPGameServer(TCPServer):
} }
# 添加到农场地块数组 # 添加到农场地块数组
if "farm_lots" not in player_data: if "农场土地" not in player_data:
player_data["farm_lots"] = [] player_data["农场土地"] = []
player_data["farm_lots"].append(new_lot) player_data["农场土地"].append(new_lot)
# 保存玩家数据 # 保存玩家数据
self.save_player_data(username, player_data) self.save_player_data(username, player_data)
@@ -5254,7 +5254,7 @@ class TCPGameServer(TCPServer):
# 发送作物更新 # 发送作物更新
self._push_crop_update_to_player(username, player_data) self._push_crop_update_to_player(username, player_data)
new_lot_index = len(player_data["farm_lots"]) new_lot_index = len(player_data["农场土地"])
self.log('INFO', f"玩家 {username} 成功购买新地块,花费 {new_ground_cost} 金钱,新地块位置:{new_lot_index}", 'SERVER') self.log('INFO', f"玩家 {username} 成功购买新地块,花费 {new_ground_cost} 金钱,新地块位置:{new_lot_index}", 'SERVER')
return self.send_data(client_id, { return self.send_data(client_id, {
@@ -5264,7 +5264,7 @@ class TCPGameServer(TCPServer):
"message": f"购买新地块成功!花费 {new_ground_cost} 元,新地块位置:{new_lot_index}", "message": f"购买新地块成功!花费 {new_ground_cost} 元,新地块位置:{new_lot_index}",
"updated_data": { "updated_data": {
"money": player_data["money"], "money": player_data["money"],
"farm_lots": player_data["farm_lots"] "农场土地": player_data["农场土地"]
} }
}) })
@@ -6114,7 +6114,7 @@ class TCPGameServer(TCPServer):
"money": target_player_data.get("money", 0), "money": target_player_data.get("money", 0),
"experience": target_player_data.get("experience", 0), "experience": target_player_data.get("experience", 0),
"体力值": target_current_stamina, "体力值": target_current_stamina,
"farm_lots": target_player_data.get("farm_lots", []), "农场土地": target_player_data.get("农场土地", []),
"种子仓库": target_player_data.get("种子仓库", []), "种子仓库": target_player_data.get("种子仓库", []),
"作物仓库": target_player_data.get("作物仓库", []), "作物仓库": target_player_data.get("作物仓库", []),
"道具背包": target_player_data.get("道具背包", []), "道具背包": target_player_data.get("道具背包", []),
@@ -6186,7 +6186,7 @@ class TCPGameServer(TCPServer):
"money": player_data.get("money", 0), "money": player_data.get("money", 0),
"experience": player_data.get("experience", 0), "experience": player_data.get("experience", 0),
"体力值": my_current_stamina, "体力值": my_current_stamina,
"farm_lots": player_data.get("farm_lots", []), "农场土地": player_data.get("农场土地", []),
"种子仓库": player_data.get("种子仓库", []), "种子仓库": player_data.get("种子仓库", []),
"宠物背包": player_data.get("宠物背包", []), "宠物背包": player_data.get("宠物背包", []),
"巡逻宠物": self._convert_patrol_pets_to_full_data(player_data), "巡逻宠物": self._convert_patrol_pets_to_full_data(player_data),
@@ -9777,7 +9777,7 @@ class ConsoleCommands:
print(f"总在线时长: {player_data.get('总游玩时间', '0时0分0秒')}") print(f"总在线时长: {player_data.get('总游玩时间', '0时0分0秒')}")
# 显示土地信息 # 显示土地信息
farm_lots = player_data.get("farm_lots", []) farm_lots = player_data.get("农场土地", [])
planted_count = sum(1 for lot in farm_lots if lot.get("is_planted", False)) planted_count = sum(1 for lot in farm_lots if lot.get("is_planted", False))
digged_count = sum(1 for lot in farm_lots if lot.get("is_diged", False)) digged_count = sum(1 for lot in farm_lots if lot.get("is_diged", False))
print(f"土地状态: 总共{len(farm_lots)}块,已开垦{digged_count}块,已种植{planted_count}") print(f"土地状态: 总共{len(farm_lots)}块,已开垦{digged_count}块,已种植{planted_count}")
@@ -9812,10 +9812,10 @@ class ConsoleCommands:
return return
# 重置土地状态 # 重置土地状态
if "farm_lots" in template_data: if "农场土地" in template_data:
old_lots_count = len(player_data.get("farm_lots", [])) old_lots_count = len(player_data.get("农场土地", []))
player_data["farm_lots"] = template_data["farm_lots"] player_data["农场土地"] = template_data["农场土地"]
new_lots_count = len(player_data["farm_lots"]) new_lots_count = len(player_data["农场土地"])
# 保存数据 # 保存数据
self.server.save_player_data(qq_number, player_data) self.server.save_player_data(qq_number, player_data)

View File

@@ -8,7 +8,7 @@
"user_password": "密码", "user_password": "密码",
"最后登录时间": "2025年07月20日17时19分16秒", "最后登录时间": "2025年07月20日17时19分16秒",
"总游玩时间": "0时0分0秒", "总游玩时间": "0时0分0秒",
"farm_lots": [], "农场土地": [],
"种子仓库": [], "种子仓库": [],
"作物仓库": [], "作物仓库": [],
"宠物背包": [], "宠物背包": [],

View File

@@ -8,7 +8,7 @@
"user_password": "tyh@19900420", "user_password": "tyh@19900420",
"最后登录时间": "2025年07月20日22时15分13秒", "最后登录时间": "2025年07月20日22时15分13秒",
"总游玩时间": "6时47分9秒", "总游玩时间": "6时47分9秒",
"farm_lots": [ "农场土地": [
{ {
"crop_type": "", "crop_type": "",
"grow_time": 0, "grow_time": 0,

View File

@@ -10,7 +10,7 @@
"总游玩时间": "0时8分51秒", "总游玩时间": "0时8分51秒",
"注册时间": "2025年07月20日23时08分10秒", "注册时间": "2025年07月20日23时08分10秒",
"个人简介": "啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊", "个人简介": "啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊",
"farm_lots": [ "农场土地": [
{ {
"crop_type": "树莓", "crop_type": "树莓",
"grow_time": 2770, "grow_time": 2770,
@@ -35,7 +35,7 @@
}, },
{ {
"crop_type": "龙果", "crop_type": "龙果",
"grow_time": 4440, "grow_time": 5840,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": true, "is_planted": true,
@@ -57,7 +57,7 @@
}, },
{ {
"crop_type": "苹果", "crop_type": "苹果",
"grow_time": 4310, "grow_time": 5710,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": true, "is_planted": true,

View File

@@ -1,44 +1,11 @@
{ {
"farm_lots": [ "农场土地": [
{ {
"crop_type": "", "crop_type": "小麦",
"grow_time": 0, "grow_time": 300,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": false, "is_planted": true,
"max_grow_time": 300,
"已浇水": false,
"已施肥": false,
"土地等级": 4
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 300,
"已浇水": false,
"已施肥": false,
"土地等级": 4
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 300,
"已浇水": false,
"已施肥": false,
"土地等级": 4
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 300, "max_grow_time": 300,
"已浇水": false, "已浇水": false,
"已施肥": false, "已施肥": false,
@@ -46,7 +13,40 @@
}, },
{ {
"crop_type": "杂交树2", "crop_type": "杂交树2",
"grow_time": 592, "grow_time": 1300,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 25200,
"已浇水": false,
"已施肥": false,
"土地等级": 4
},
{
"crop_type": "龙果",
"grow_time": 1320,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 14400,
"已浇水": false,
"已施肥": false,
"土地等级": 4
},
{
"crop_type": "杂交树1",
"grow_time": 1340,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 21600,
"已浇水": false,
"已施肥": false,
"土地等级": 4
},
{
"crop_type": "杂交树2",
"grow_time": 894,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": true, "is_planted": true,
@@ -56,19 +56,19 @@
"土地等级": 1 "土地等级": 1
}, },
{ {
"crop_type": "", "crop_type": "小麦",
"grow_time": 0, "grow_time": 300,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": false, "is_planted": true,
"max_grow_time": 240, "max_grow_time": 300,
"已浇水": false, "已浇水": false,
"已施肥": false, "已施肥": false,
"土地等级": 2 "土地等级": 2
}, },
{ {
"crop_type": "杂交树2", "crop_type": "杂交树2",
"grow_time": 1770, "grow_time": 2676,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": true, "is_planted": true,
@@ -78,30 +78,30 @@
"土地等级": 3 "土地等级": 3
}, },
{ {
"crop_type": "", "crop_type": "小麦",
"grow_time": 0, "grow_time": 101,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": false, "is_planted": true,
"max_grow_time": 14400, "max_grow_time": 300,
"已浇水": false, "已浇水": false,
"已施肥": false, "已施肥": false,
"土地等级": 0 "土地等级": 0
}, },
{ {
"crop_type": "胡萝卜", "crop_type": "小麦",
"grow_time": 240, "grow_time": 101,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": true, "is_planted": true,
"max_grow_time": 240, "max_grow_time": 300,
"已浇水": false, "已浇水": false,
"已施肥": false, "已施肥": false,
"土地等级": 0 "土地等级": 0
}, },
{ {
"crop_type": "杂交树2", "crop_type": "杂交树2",
"grow_time": 295, "grow_time": 446,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": true, "is_planted": true,
@@ -111,44 +111,44 @@
"土地等级": 0 "土地等级": 0
}, },
{ {
"crop_type": "", "crop_type": "土豆",
"grow_time": 0, "grow_time": 480,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": false, "is_planted": true,
"max_grow_time": 480, "max_grow_time": 480,
"已浇水": false, "已浇水": false,
"已施肥": false, "已施肥": false,
"土地等级": 4 "土地等级": 4
}, },
{ {
"crop_type": "", "crop_type": "土豆",
"grow_time": 0, "grow_time": 480,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": false, "is_planted": true,
"max_grow_time": 240,
"已浇水": false,
"已施肥": false,
"土地等级": 4
},
{
"crop_type": "",
"grow_time": 0,
"is_dead": false,
"is_diged": true,
"is_planted": false,
"max_grow_time": 480, "max_grow_time": 480,
"已浇水": false, "已浇水": false,
"已施肥": false, "已施肥": false,
"土地等级": 4 "土地等级": 4
}, },
{ {
"crop_type": "", "crop_type": "小麦",
"grow_time": 0, "grow_time": 300,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": false, "is_planted": true,
"max_grow_time": 300,
"已浇水": false,
"已施肥": false,
"土地等级": 4
},
{
"crop_type": "小麦",
"grow_time": 300,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 300, "max_grow_time": 300,
"已浇水": false, "已浇水": false,
"已施肥": false, "已施肥": false,
@@ -156,73 +156,7 @@
}, },
{ {
"crop_type": "土豆", "crop_type": "土豆",
"grow_time": 294, "grow_time": 445,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 480,
"已浇水": false,
"已施肥": false,
"土地等级": 0
},
{
"crop_type": "胡萝卜",
"grow_time": 240,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 240,
"已浇水": false,
"已施肥": false,
"土地等级": 0
},
{
"crop_type": "杂交树2",
"grow_time": 293,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 25200,
"已浇水": false,
"已施肥": false,
"土地等级": 0
},
{
"crop_type": "杂交树2",
"grow_time": 293,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 25200,
"已浇水": false,
"已施肥": false,
"土地等级": 0
},
{
"crop_type": "杂交树2",
"grow_time": 293,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 25200,
"已浇水": false,
"已施肥": false,
"土地等级": 0
},
{
"crop_type": "土豆",
"grow_time": 292,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 480,
"已浇水": false,
"已施肥": false,
"土地等级": 0
},
{
"crop_type": "土豆",
"grow_time": 292,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": true, "is_planted": true,
@@ -233,7 +167,7 @@
}, },
{ {
"crop_type": "小麦", "crop_type": "小麦",
"grow_time": 292, "grow_time": 100,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": true, "is_planted": true,
@@ -243,19 +177,85 @@
"土地等级": 0 "土地等级": 0
}, },
{ {
"crop_type": "", "crop_type": "杂交树2",
"grow_time": 0, "grow_time": 444,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": false, "is_planted": true,
"max_grow_time": 240, "max_grow_time": 25200,
"已浇水": false,
"已施肥": false,
"土地等级": 0
},
{
"crop_type": "杂交树2",
"grow_time": 444,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 25200,
"已浇水": false,
"已施肥": false,
"土地等级": 0
},
{
"crop_type": "杂交树2",
"grow_time": 444,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 25200,
"已浇水": false,
"已施肥": false,
"土地等级": 0
},
{
"crop_type": "土豆",
"grow_time": 443,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 480,
"已浇水": false,
"已施肥": false,
"土地等级": 0
},
{
"crop_type": "土豆",
"grow_time": 443,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 480,
"已浇水": false, "已浇水": false,
"已施肥": false, "已施肥": false,
"土地等级": 0 "土地等级": 0
}, },
{ {
"crop_type": "小麦", "crop_type": "小麦",
"grow_time": 291, "grow_time": 100,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 300,
"已浇水": false,
"已施肥": false,
"土地等级": 0
},
{
"crop_type": "小麦",
"grow_time": 100,
"is_dead": false,
"is_diged": true,
"is_planted": true,
"max_grow_time": 300,
"已浇水": false,
"已施肥": false,
"土地等级": 0
},
{
"crop_type": "小麦",
"grow_time": 100,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": true, "is_planted": true,
@@ -266,7 +266,7 @@
}, },
{ {
"crop_type": "土豆", "crop_type": "土豆",
"grow_time": 291, "grow_time": 442,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": true, "is_planted": true,
@@ -277,7 +277,7 @@
}, },
{ {
"crop_type": "杂交树2", "crop_type": "杂交树2",
"grow_time": 291, "grow_time": 442,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": true, "is_planted": true,
@@ -288,7 +288,7 @@
}, },
{ {
"crop_type": "小麦", "crop_type": "小麦",
"grow_time": 291, "grow_time": 99,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": true, "is_planted": true,
@@ -298,30 +298,30 @@
"土地等级": 0 "土地等级": 0
}, },
{ {
"crop_type": "胡萝卜", "crop_type": "小麦",
"grow_time": 240, "grow_time": 99,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": true, "is_planted": true,
"max_grow_time": 240, "max_grow_time": 300,
"已浇水": false, "已浇水": false,
"已施肥": false, "已施肥": false,
"土地等级": 0 "土地等级": 0
}, },
{ {
"crop_type": "胡萝卜", "crop_type": "小麦",
"grow_time": 240, "grow_time": 99,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": true, "is_planted": true,
"max_grow_time": 240, "max_grow_time": 300,
"已浇水": false, "已浇水": false,
"已施肥": false, "已施肥": false,
"土地等级": 0 "土地等级": 0
}, },
{ {
"crop_type": "杂交树2", "crop_type": "杂交树2",
"grow_time": 290, "grow_time": 441,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": true, "is_planted": true,
@@ -331,11 +331,11 @@
"土地等级": 0 "土地等级": 0
}, },
{ {
"crop_type": "胡萝卜", "crop_type": "",
"grow_time": 240, "grow_time": 0,
"is_dead": false, "is_dead": false,
"is_diged": true, "is_diged": true,
"is_planted": true, "is_planted": false,
"max_grow_time": 240, "max_grow_time": 240,
"已浇水": false, "已浇水": false,
"已施肥": false, "已施肥": false,
@@ -552,39 +552,24 @@
} }
], ],
"种子仓库": [ "种子仓库": [
{
"name": "龙果",
"quality": "传奇",
"count": 1
},
{
"name": "杂交树1",
"quality": "传奇",
"count": 1
},
{
"name": "杂交树2",
"quality": "传奇",
"count": 1
},
{ {
"name": "小麦", "name": "小麦",
"quality": "普通", "quality": "普通",
"count": 1 "count": 5
}, },
{ {
"name": "土豆", "name": "胡萝卜",
"quality": "普通", "quality": "普通",
"count": 2 "count": 3
} }
], ],
"experience": 1854, "experience": 1963,
"farm_name": "树萌芽の狗窝", "farm_name": "树萌芽の狗窝",
"player_name": "树萌芽", "player_name": "树萌芽",
"level": 64, "level": 64,
"money": 615197025864, "money": 615197025464,
"最后登录时间": "2025年07月21日09时30分33秒", "最后登录时间": "2025年07月21日09时48分48秒",
"总游玩时间": "162时52分25秒", "总游玩时间": "162时53分53秒",
"user_name": "3205788256", "user_name": "3205788256",
"user_password": "tyh@19900420", "user_password": "tyh@19900420",
"个人简介": "人生啊,就这样吧", "个人简介": "人生啊,就这样吧",
@@ -638,7 +623,7 @@
{ {
"name": "小麦", "name": "小麦",
"quality": "普通", "quality": "普通",
"count": 27 "count": 37
}, },
{ {
"name": "山葵", "name": "山葵",
@@ -688,7 +673,7 @@
{ {
"name": "胡萝卜", "name": "胡萝卜",
"quality": "普通", "quality": "普通",
"count": 14 "count": 25
}, },
{ {
"name": "土豆", "name": "土豆",
@@ -1115,8 +1100,10 @@
}, },
"在线礼包": { "在线礼包": {
"当前日期": "2025-07-21", "当前日期": "2025-07-21",
"今日在线时长": 17.757988214492798, "今日在线时长": 71.67846703529358,
"已领取礼包": [], "已领取礼包": [
"1分钟"
],
"登录时间": 1753061433.2417476 "登录时间": 1753061433.2417476
}, },
"玩家小卖部": [ "玩家小卖部": [