flowerpig пре 1 година
родитељ
комит
e784bad41f
3 измењених фајлова са 140 додато и 0 уклоњено
  1. 66 0
      docs/auto_open_new.sh
  2. 28 0
      docs/srv_install.sh
  3. 46 0
      docs/tpl/server/script/Config.lua

+ 66 - 0
docs/auto_open_new.sh

@@ -0,0 +1,66 @@
+#!/bin/bash
+
+# 该脚本从数据库每5分钟读取一次开服信息,并根据开服时间自动安装节点以及开服
+# crontab -e 里面配置
+#*/5 * * * *  cd /data/server && sh ./auto_open_new.sh > /data/server/open_log.log 2>&1
+
+# 数据库配置
+DB_HOST="127.0.0.1"
+DB_PORT="3306"
+DB_USER="root"
+DB_PASS="xxxx"
+DB_NAME="sdk"
+TB_NAME="game_server"
+
+# 服务路径
+SRV_SOURCE="/data/server"
+
+# 当前时间戳
+CUR_SEC=$(date '+%s')
+CUR_SEC_L=$((CUR_SEC - 600))
+
+# SQL 查询语句
+SELECT_SQL="SELECT zone_id, open_time, srv_status, db_name FROM ${TB_NAME}"
+
+# 获取查询结果
+RESULT=($(mysql -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASS} -D${DB_NAME} -N -e "${SELECT_SQL}"))
+
+# 检查是否有结果
+if [ ${#RESULT[@]} -eq 0 ]; then
+  echo "No data found in the database."
+  exit 1
+fi
+
+# 处理查询结果
+for (( i=0; i<${#RESULT[@]}; i+=4 )); do
+  ZONE_ID=${RESULT[i]}
+  OPEN_TIME=${RESULT[i+1]}
+  SRV_STATUS=${RESULT[i+2]}
+  DB_NAME=${RESULT[i+3]}
+
+  # 将开服时间转化为时间戳
+  OPEN_TIME_SEC=$(date -d "${OPEN_TIME}" '+%s')
+  OPEN_TIME_BEFORE_10M=$((OPEN_TIME_SEC - 600))
+  OPEN_TIME_AFTER_10M=$((OPEN_TIME_SEC + 600))
+
+  # 判断是否在开服时间前后10分钟内
+  if [ ${OPEN_TIME_BEFORE_10M} -lt ${CUR_SEC} ] && [ ${OPEN_TIME_AFTER_10M} -gt ${CUR_SEC} ]; then
+    cd ${SRV_SOURCE}
+    sh srv.sh srv_install ${ZONE_ID}
+    echo "$(date) 开服成功 ZONE_ID=${ZONE_ID} OPEN_TIME=${OPEN_TIME} CUR_SEC=${CUR_SEC}" >> test.txt
+  elif [ ${CUR_SEC} -gt ${OPEN_TIME_AFTER_10M} ] && [ ${SRV_STATUS} -ne 1 ]; then
+    cd ${SRV_SOURCE}
+    echo "$(date) 检测 ZONE_ID=${ZONE_ID}" >> test.txt
+  else
+    echo "$(date) 未到开服时间标准 ZONE_ID=${ZONE_ID}" >> test.txt
+  fi
+done
+
+echo "自动脚本结束" >> test.txt
+
+
+
+
+
+
+

+ 28 - 0
docs/srv_install.sh

@@ -0,0 +1,28 @@
+#!/bin/bash
+
+if [[ -z "$1" || ! "$1" =~ ^[0-9]+$ ]]; then
+  echo "错误: 请输入有效的 zone_id (正整数)。"
+  exit 1
+fi
+
+zone_id=$1
+echo -e "获取服务器id: ${zone_id} \n"
+
+### 下面xxx修改为需要的路径
+to_dir=/xxx/data/server_${zone_id}
+
+cp -rf /xxx/tpl/server ${to_dir}
+
+port=$((8190 + zone_id))
+
+# 替换配置文件
+sed -i "24c\PORT_CLIENT = ${port}" ${to_dir}/script/Config.lua
+sed -i "28c\DB_NAME = \"ckwy_${zone_id}\"" ${to_dir}/script/Config.lua
+sed -i "31c\SVR_INDEX = ${zone_id}" ${to_dir}/script/Config.lua
+sed -i "32c\SVR_NAME = \"s${zone_id}\"" ${to_dir}/script/Config.lua
+
+
+#启动服务
+echo -e "开始启动服务:${zone_id}\n"
+cd /data/zone/server_${zone_id} && ./logic
+

+ 46 - 0
docs/tpl/server/script/Config.lua

@@ -0,0 +1,46 @@
+IS_LITTLE_MEM = false 
+IS_USE_GM_CMD = true
+IS_DEBUG = true
+if _G then
+	IS_WINDOWS = _G.os.getenv("OS") == "Windows_NT"
+end
+
+Q_CAP_LOG_LOGIC = IS_LITTLE_MEM and 1024 or 2048
+Q_CAP_MSG_DISCONNECT = IS_LITTLE_MEM and 128 or 2048
+Q_CAP_MSG_RECV = IS_LITTLE_MEM and 128 or 21845			-- 接受消息队列size
+Q_CAP_MSG_SEND = IS_LITTLE_MEM and 256 or 43690		-- 发送消息队列size
+Q_CAP_MSG_ADMIN = IS_LITTLE_MEM and 4 or 1024    		-- admin队列size
+Q_CAP_MSG_INNER = IS_LITTLE_MEM and 128 or 4096		-- 跨服与正常服交流消息size
+
+if _G and not IS_WINDOWS and not IS_USE_GM_CMD then
+	_G.print = function()end
+end
+
+DISCONNECT_PROTO_ID = 1
+
+IP_HTTP = "120.53.240.56"  --HTTP请求IP
+PORT_HTTP = 80              --HTTP请求端口
+
+PORT_CLIENT = 8192			-- 客户端连接端口
+PORT_ADMIN = 10001			-- 管理后台连接端口
+
+DB_IP = "127.0.0.1"
+DB_NAME = "ckwy_fy_S350002"
+DB_USER = "admin1"
+DB_PASS = "admin1"
+SVR_INDEX = 8105381				-- 服务器服号
+SVR_NAME = "S01"
+CHECK_AUTH_ADMIN = false		-- 后台是否验证
+
+
+ADMIN_KEY  = "ez1ozlZw2zqo7s6O2s0l7K8wpZ919Ues"   --后台认证KEY
+AUTH_KEY   = "bx32017616e8396cbfae965ba2162f32"	  --登录认证KEY
+
+HAS_GUIDE = true				-- 是否有新手指引
+PROJECT_NAME = "ssecy" 			-- sszh闪烁战火, ssecy闪烁二次元
+
+-- 跨服相关配置 后面三个logic的話只有debug下有效 middle的話只有port有效
+IS_MIDDLE = false				-- 是否跨服
+MIDDLE_IP = "127.0.0.1"			-- 跨服服IP供logic服连接用一般使用的云服务器的内网ip
+MIDDLE_PORT = 20001				-- 跨服服和正常服连接监听的端口
+MIDDLE_HOST = "ws://127.0.0.1:8195"	-- 跨服服让客户端连接用的域名(跨服发给本服)