藏宝湾网游单机站

 找回密码
 注册

QQ登录

只需一步,快速开始

★69 元包站 Gm 手游平台★

★69 元包站 Gm 手游平台★

★Gm 游戏平台【无限资源包站平台,真正体验gm和土豪感觉】★

★白嫖放置传奇 玩通关算你赢★

★白嫖放置传奇 玩通关算你赢★

★白嫖长久耐玩型 放置类挂机传奇游戏 充值可打 安全挂机 可交易 无PK★

★@梦幻长久耐玩全新大唐九黎★

★@!!——梦幻长久耐玩全新大唐九黎——!!★

★★新增全新门派九黎城, ★侵烛系统 ★静脉系统 ★赐福系统 ★战斗动作声效系统 ★全场景NPC、召唤兽迭代最新 ★17个副本,完全还原 ★独家PK系统,享受极致免费PK★★

承接推广
★承接推广★

★承接推广★

☆ 六一活动开放-放置传奇☆

★ 六一活动开放-放置传奇★

★可白嫖 上班摸鱼类 放置文字传奇游戏(放置休闲)qq群756025698★

★三职业复古★开局送神装★爆率100%★零氪首选★

★三职业复古★开局送神装★爆率100%★零氪首选★

★〖双线〗〖无忧传奇〗〖每日新区〗〖开局送神装 100%高爆率 装备元宝打怪爆〗★

承接推广

★承接推广★

★承接推广★

承接推广

★承接推广★

★承接推广★

★DNF★全职业平衡★公益服★
★DNF★全职业平衡★公益服★

【dnf86版本】【怀旧服】【全职业平衡】【非变态服】【非商业服】【774031300】

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

查看: 784|回复: 1

[原创] 话西游GM代码列表

[复制链接]
 楼主| 发表于 2025-2-27 14:51:07 | 显示全部楼层 |阅读模式
我今天做个代码 可以拿源代码来实现他有什么帮助可以在下面留言我会回复

看图

(1)定义GM日志记录函数
  1. import sqlite3
  2. from datetime import datetime

  3. def log_gm_action(db_connection, gm_id, command_id, player_id, action_details):
  4.     cursor = db_connection.cursor()
  5.     cursor.execute("""
  6.         INSERT INTO GMLogs (gm_id, command_id, player_id, timestamp, action_details)
  7.         VALUES (?, ?, ?, ?, ?)
  8.     """, (gm_id, command_id, player_id, datetime.now(), action_details))
  9.     db_connection.commit()
复制代码
定义GM指令执行函数
  1. def execute_gm_command(db_connection, gm_id, command_name, player_id, params):
  2.     cursor = db_connection.cursor()
  3.    
  4.     # 查询指令信息
  5.     cursor.execute("SELECT command_id, required_permission FROM GMCommands WHERE command_name = ?", (command_name,))
  6.     command = cursor.fetchone()
  7.     if not command:
  8.         print("Invalid command.")
  9.         return
  10.    
  11.     command_id, required_permission = command
  12.    
  13.     # 模拟权限检查
  14.     cursor.execute("SELECT permission_level FROM GMAccounts WHERE gm_id = ?", (gm_id,))
  15.     gm_permission = cursor.fetchone()
  16.     if not gm_permission or gm_permission[0] < required_permission:
  17.         print("Permission denied.")
  18.         return
  19.    
  20.     # 根据指令类型执行操作
  21.     if command_name == ".modify":
  22.         attribute, value = params.split()
  23.         cursor.execute(f"UPDATE Players SET {attribute} = ? WHERE player_id = ?", (value, player_id))
  24.         db_connection.commit()
  25.         log_gm_action(db_connection, gm_id, command_id, player_id, f"Modified {attribute} to {value}")
  26.         print(f"Modified player {player_id}'s {attribute} to {value}.")
  27.     elif command_name == ".additem":
  28.         item_id, quantity = params.split()
  29.         cursor.execute("UPDATE Players SET items = json_set(items, '$.items', json(items || json(?))) WHERE player_id = ?", (f'{{"item_id":{item_id}, "quantity":{quantity}}}', player_id))
  30.         db_connection.commit()
  31.         log_gm_action(db_connection, gm_id, command_id, player_id, f"Added item {item_id} x{quantity}")
  32.         print(f"Added item {item_id} x{quantity} to player {player_id}.")
  33.     else:
  34.         print("Command not implemented.")
复制代码
服务端接收GM指令服务端需要监听GM工具发送的指令,并调用相应的存储函数执行操作
  1. import socket
  2. import threading

  3. def handle_client(client_socket, db_connection):
  4.     while True:
  5.         try:
  6.             command = client_socket.recv(1024).decode('utf-8')
  7.             if not command:
  8.                 break
  9.             print(f"Received command: {command}")
  10.             # 解析指令并执行
  11.             gm_id, command_name, player_id, params = command.split('|')
  12.             execute_gm_command(db_connection, int(gm_id), command_name, int(player_id), params)
  13.         except Exception as e:
  14.             print(f"Error: {e}")
  15.             break
  16.     client_socket.close()

  17. def start_server():
  18.     db_connection = sqlite3.connect("game.db")
  19.     server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  20.     server_socket.bind(('0.0.0.0', 8888))
  21.     server_socket.listen(5)
  22.     print("Server started. Listening on port 8888...")

  23.     while True:
  24.         client_socket, addr = server_socket.accept()
  25.         print(f"Accepted connection from {addr}")
  26.         client_handler = threading.Thread(target=handle_client, args=(client_socket, db_connection))
  27.         client_handler.start()

  28. if __name__ == "__main__":
  29.     start_server()
复制代码
客户端发送GM指令客户端通过网络连接到服务端,发送GM指令
  1. import socket

  2. def send_gm_command(gm_id, command_name, player_id, params):
  3.     client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  4.     client_socket.connect(('127.0.0.1', 8888))
  5.     command = f"{gm_id}|{command_name}|{player_id}|{params}"
  6.     client_socket.send(command.encode('utf-8'))
  7.     client_socket.close()

  8. # 示例:发送GM指令
  9. send_gm_command(1, ".modify", 123, "hp 1000")
  10. send_gm_command(1, ".additem", 123, "101 5")
复制代码
创建数据库表
  1. CREATE TABLE GMAccounts (
  2.     gm_id INT PRIMARY KEY,
  3.     username VARCHAR(255) NOT NULL,
  4.     password_hash VARCHAR(255) NOT NULL,
  5.     permission_level INT NOT NULL
  6. );

  7. CREATE TABLE GMCommands (
  8.     command_id INT PRIMARY KEY,
  9.     command_name VARCHAR(255) NOT NULL,
  10.     description TEXT,
  11.     required_permission INT NOT NULL
  12. );

  13. CREATE TABLE GMLogs (
  14.     log_id INT PRIMARY KEY,
  15.     gm_id INT NOT NULL,
  16.     command_id INT NOT NULL,
  17.     player_id INT NOT NULL,
  18.     timestamp DATETIME NOT NULL,
  19.     action_details TEXT
  20. );

  21. CREATE TABLE Players (
  22.     player_id INT PRIMARY KEY,
  23.     name VARCHAR(255) NOT NULL,
  24.     level INT NOT NULL,
  25.     hp INT NOT NULL,
  26.     mana INT NOT NULL,
  27.     gold INT NOT NULL,
  28.     items TEXT
  29. );
复制代码






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2025-2-27 23:57:57 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

本站内容如若侵犯到您的权益,请来电来函告知,我们会尽快处理!
联系QQ:1953150286,2251387361,123784736,免责申明

排行榜|联系我们|小黑屋|手机版|Archiver|游戏藏宝湾 |

GMT+8, 2026-6-7 03:25 , Processed in 0.150775 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表