µ±Ç°Î»Öà : 145zÓÎÏ·Õ¾¡¡|¡¡ÖïÏÉ¡¡|¡¡¼¼Êõ½Ì³Ì¡¡|¡¡

ÖïÏÉGM¹ÜÀí¹¤¾ßʵսÊֲ᣺ȨÏÞ·ÖÅä+×Ô¶¯Ñ²¼ì£¬Ò»ÈËÇáËɹܰÙÈËÕ½³¡

Èȶȣº
⚙️ GMϵͳ¹¦ÄÜÈ«¾°Í¼

graph TD
A[GMºËÐÄϵͳ] --> B[ȨÏÞ¹ÜÀí]
--> C[Íæ¼Ò¹ÜÀí]

--> D[ÔËά¼à¿Ø]

--> E[Êý¾Ýͳ¼Æ]

--> B1[½ÇÉ«·Ö¼¶£º³¬¼¶GM/¿Í·þ/ѲÂß]

--> C1[ʵʱ²éÖ¤+Ô¶³Ì½ûÑÔ]

--> D1[×Ô¶¯×ÊÔ´ÇåÀí]

--> E1[ÔÚÏßÍæ¼ÒÈÈÁ¦Í¼]

🔑 Ò»¡¢È¨ÏÞ·Ö¼¶ÓëΣÏÕ²Ù×÷¹Ü¿Ø£¨·ÀÖ¹“Äڹ픻ٷþ£©
GMÕ˺ŷּ¶ÅäÖñí

½ÇÉ« ȨÏÞ·¶Î§ ΣÏÕÃüÁîÏÞÖÆ ²Ù×÷ÈÕÖ¾ÁôºÛ

³¬¼¶¹ÜÀíÔ± È«¹¦ÄÜ+ȨÏÞ·ÖÅä ÎÞÏÞÖÆ ✔Ç¿ÖÆË«È˸´ºË
¿Í·þ¾­Àí ÎïÆ··¢·Å/½ûÑÔ/½â·â ÆÁ±Îkick allµÈ·¶Î§ÃüÁî ✔²Ù×÷¼Ïñ
ѲÂßGM ¾Ù±¨´¦Àí/Î¥¹æ¼ì²â ½ö²éѯÀàÃüÁî ✔¶¨Î»Ë®Ó¡

Ãô¸Ð²Ù×÷¶þ´ÎÑéÖ¤ÅäÖÃ

ÔÚgm_command.pyÖÐÌí¼Ó¸ßΣÃüÁîÀ¹½Ø

def dangerous_cmd(cmd):
risk_commands = ["shutdown", "cleardb", "grant all"]
if any(risk in cmd for risk in risk_commands):
require_otp() # ´¥·¢¶ÌÐÅÑéÖ¤Âë
log_to_audit(cmd, get_player_ip()) # ¼Ç¼²Ù×÷Ô´IP

📊 ¶þ¡¢Íæ¼Ò¹ÜÀíЧÂÊÌáÉý10±¶µÄºËÐļ¼ÇÉ
ÅúÁ¿´¦ÀíÍæ¼Ò²Ù×÷£¨¸æ±ðµ¥¸ö´¦Àí£©

-- °¸Àý1£ºÈ«·þ²¹³¥·¢·Å£¨²»°üº¬ÒÑ·âºÅÍæ¼Ò£©
INSERT INTO mail (receiver, itemid, count)
SELECT char_id, 12345, 1 FROM characters
WHERE status = 0 AND last_login > '2023-08-01';

-- °¸Àý2£ºÇåÀí¹Ò»úСºÅ£¨30ÌìδµÇ¼+µÈ¼¶<30£©
DELETE FROM characters WHERE level < 30
AND last_login < NOW() - INTERVAL 30 DAY;

Íæ¼ÒÊý¾Ýʵʱ׷×ÙÃæ°å

²éѯÀàÐÍ ºǫ́ÃüÁî ·µ»Ø½á¹ûʾÀý

Íæ¼ÒʵʱλÖà locate_player ·çÑ© ·çÑ©[ID:1001] µ±Ç°ÔÚºÓÑô³Ç (125,88)
±³°üÎïÆ·ËÝÔ´ trace_item ÍÀÁúµ¶ ÍÀÁúµ¶[ID:888] ÓÉGM[Admin]ÓÚ2023-08-10·¢·Å
Òì³£Êý¾Ý¼ì²â scan_abnormal_gold ¼ì²âµ½[ÎÞµÐÕ½Éñ]½ð±Ò1СʱÄÚ+5000Íò (Òì³£)

🤖 Èý¡¢×Ô¶¯»¯ÔËάϵͳ£¨½â·ÅË«ÊÖºËÐÄ·½°¸£©
ÖÇÄÜѲ¼ì»úÆ÷ÈËÅäÖÃ

auto_check.yaml

tasks:
name: Êý¾Ý¿â״̬¼à¿Ø

cron: "/5 *"
command: check_db_connection
alert_threshold: 2 # Á¬Ðø2´Îʧ°Ü¸æ¾¯
name: ·Ç·¨Íâ¹Ò½ø³Ì¼ì²â

cron: "0 "
command: scan_process --game zx
kill: true # ×Ô¶¯½áÊø×÷±×½ø³Ì
name: ¶¨Ê±È«·þ¹«¸æ

cron: "0 12,19 *"
command: broadcast --msg "¡¾ÏµÍ³¡¿Ã¿ÈÕ´ðÌâ»î¶¯ÒÑ¿ªÆô£¡"

×Ô¶¯·â½ûÂß¼­£¨»ùÓÚÐÐΪ·ÖÎö£©

Íâ¹ÒÌØÕ÷¹æÔòÒýÇæ

def cheat_detect(player):
if player.speed > 8.0: # ÒÆËÙ³¬±ê
auto_ban(player, '¼ÓËÙ¹Ò', 72)
elif player.click_per_sec > 20: # Òì³£µã»÷ƵÂÊ
send_captcha(player) # µ¯³öÑéÖ¤Âë

🛠️ ËÄ¡¢¿ªÔ´×Ô½¨GM¹¤¾ß·½°¸£¨³É±¾Îª0£¡£©
»ù´¡»·¾³´î½¨

°²×°±ØÒª×é¼þ£¨Python·½°¸Ê¾Àý£©

pip install flask pymysql watchdog

ÏîÄ¿½á¹¹

/gm_tools
©À©¤©¤ api_server.py # HTTP½Ó¿Ú·þÎñ
©À©¤©¤ command_exec.py # ÃüÁîÖ´ÐÐÒýÇæ
©À©¤©¤ templates/ # ÍøÒ³¹ÜÀí½çÃæ
©¸©¤©¤ logs/ # ²Ù×÷ÈÕÖ¾´æ´¢

ºËÐŦÄÜʵÏÖ´úÂë

ʵÏÖÍøÒ³°æGMÃüÁîÏ·¢

@app.route('/api/command', methods=['POST'])
def exec_command():
user = auth_check(request.headers['Token'])
cmd = request.json.get('command')
if user.has_permission(cmd):
result = execute_gm_cmd(cmd) # Á¬½ÓÓÎÏ··þÎñ¶Ë
return jsonify({'status': result})
else:
return jsonify({'error': 'ÎÞȨ²Ù×÷'}), 403

⚠️ ¸ß·çÏÕ²Ù×÷±Ü¿ÓÖ¸ÄÏ

¾ø¶Ô½ûÖ¹ÔÚÉú²ú»·¾³Ö±½ÓÖ´ÐеÄÃüÁ
DELETE FROM items WHERE 1;

UPDATE characters SET level=150;

GRANT gm_level TO public;

°²È«Ìæ´ú·½°¸£º
ÓÃLIMITÏÞÖÆ·¶Î§£ºDELETE ... LIMIT 100

²Ù×÷ǰ±¸·Ý£ºCREATE TABLE backup_20231001 SELECT * FROM...

ȨÏÞ×îС»¯£º½öÊÚÈ¨ÌØ¶¨IPµÄ²éѯȨÏÞ

📱 Îå¡¢ÒÆ¶¯¶Ë¼à¿Ø·½°¸£¨ÊÖ»ú¹Ü·þ£©

Æóҵ΢ÐÅ»úÆ÷ÈËÍÆËÍ

±¨¾¯£ºÄÚ´æ>90% ÔÚÏßÈËÊý±©µø50%

ÈÕ±¨£ºÃ¿ÈÕÐÂÔöÍæ¼Ò ÓªÊÕͳ¼Æ
TermuxÊÖ»úÖÕ¶Ë

bash
# ÊÖ»úSSHÁ¬½Ó·þÎñÆ÷
ssh gm@192.168.1.100 -p 2222
# Ö´ÐÐÇáÁ¿ÃüÁî
zxcli --online
>> µ±Ç°ÔÚÏß: 83ÈË ºÓÑô³Ç: 45ÈË