111
This commit is contained in:
parent
3e73f1ae54
commit
7a064bd674
|
|
@ -73,7 +73,7 @@ class Mysql extends Base_C_Object {
|
|||
//转为blob
|
||||
local blob = Sq_Point2Blob(intSizePoint, 4);
|
||||
//读取8位有符号整数
|
||||
local result = blob.readn('c');
|
||||
local result = blob.readn('i');
|
||||
Sq_Delete_Point(intSizePoint);
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -255,6 +255,51 @@ function TestCronTask(str) {
|
|||
|
||||
|
||||
Gm_InputFunc_Handle.TTT <- function(SUser, CmdString) {
|
||||
// local MoveSUser = World.GetUserByUidCid(2, 2);
|
||||
// local Pack = Packet();
|
||||
// Pack.Put_Header(0, 22);
|
||||
// Pack.Put_Short(MoveSUser.GetUniqueId());
|
||||
// Pack.Put_Short(500);
|
||||
// Pack.Put_Short(200);
|
||||
// Pack.Put_Byte(1);
|
||||
// Pack.Put_Short(0);
|
||||
// Pack.Finalize(true);
|
||||
// SUser.Send(Pack);
|
||||
// Pack.Delete();
|
||||
|
||||
local Pack = Packet();
|
||||
Pack.Put_Header(0, 23);
|
||||
Pack.Put_Short(SUser.GetUniqueId()); //唯一id
|
||||
Pack.Put_Byte(SUser.GetLocation().Town); //城镇
|
||||
|
||||
Pack.Delete();
|
||||
|
||||
// local RealList = [World.GetUserByUidCid(2, 2), World.GetUserByUidCid(1, 1)];
|
||||
|
||||
// foreach(_Index, Value in RealList) {
|
||||
// local SUser = Value;
|
||||
// local Pack = Packet();
|
||||
// Pack.Put_Header(0, 24);
|
||||
// Pack.Put_Byte(2); //城镇
|
||||
// Pack.Put_Byte(0); //区域
|
||||
// Pack.Put_Short((RealList.len() - 1)); //几个玩家 要减去自己
|
||||
// foreach(__Index, MapObj in RealList) {
|
||||
// // if (SUser.GetUID() == MapObj.GetUID()) continue;
|
||||
// Pack.Put_Short(MapObj.GetUniqueId());
|
||||
// Pack.Put_Short(MapObj.GetAreaPos().X);
|
||||
// Pack.Put_Short(MapObj.GetAreaPos().Y);
|
||||
// Pack.Put_Byte(MapObj.GetDirections()); //朝向
|
||||
// Pack.Put_Byte(MapObj.GetVisibleValues()); //是否可见
|
||||
// }
|
||||
// Pack.Put_Byte(1); //是否可见
|
||||
// Pack.Finalize(true);
|
||||
|
||||
// foreach(vavava in RealList) {
|
||||
// vavava.Send(Pack);
|
||||
// }
|
||||
// Pack.Delete();
|
||||
// }
|
||||
|
||||
// Timer.SetCronTask(TestCronTask, "1/0/0/0", "测试字符串参数");
|
||||
// print("注册任务");
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@
|
|||
文件用途:结婚系统
|
||||
*/
|
||||
class Marry {
|
||||
//当前频道
|
||||
Channel = null;
|
||||
//配置
|
||||
Config = null;
|
||||
//包头
|
||||
|
|
@ -14,8 +16,8 @@ class Marry {
|
|||
//进入礼堂前的位置信息
|
||||
EnterAuditoriumPosList = {};
|
||||
|
||||
|
||||
|
||||
//礼堂id 对应的用户信息
|
||||
AuditoriumUserInfo = {};
|
||||
|
||||
|
||||
//数据库操作集
|
||||
|
|
@ -101,6 +103,52 @@ class Marry {
|
|||
//把连接还池子
|
||||
MysqlPool.GetInstance().PutConnect(SqlObj);
|
||||
}
|
||||
|
||||
|
||||
//查询礼堂信息
|
||||
GetAuditoriumList = function() {
|
||||
local Sql = format(MARRY_SQL_LIST.GetAuditoriumList);
|
||||
//从池子拿连接
|
||||
local SqlObj = MysqlPool.GetInstance().GetConnect();
|
||||
local Ret = SqlObj.Select(Sql, ["int", "string", "int", "int", "int", "string", "int", "int"]);
|
||||
//把连接还池子
|
||||
MysqlPool.GetInstance().PutConnect(SqlObj);
|
||||
|
||||
return Ret;
|
||||
}
|
||||
|
||||
|
||||
//根据cid查询自己的礼堂编号
|
||||
GetAuditoriumIndexById = function(cid) {
|
||||
local Sql = format(MARRY_SQL_LIST.GetAuditoriumIndexById, cid);
|
||||
//从池子拿连接
|
||||
local SqlObj = MysqlPool.GetInstance().GetConnect();
|
||||
local Ret = SqlObj.Select(Sql, ["int"]);
|
||||
//把连接还池子
|
||||
MysqlPool.GetInstance().PutConnect(SqlObj);
|
||||
|
||||
if (Ret.len()< 1 || Ret[0][0] == null) {
|
||||
return null;
|
||||
} else {
|
||||
return Ret[0][0];
|
||||
}
|
||||
}
|
||||
|
||||
//根据cid查询婚礼开始时间
|
||||
GetAuditoriumTimeById = function(cid) {
|
||||
local Sql = format(MARRY_SQL_LIST.GetAuditoriumTimeById, cid);
|
||||
//从池子拿连接
|
||||
local SqlObj = MysqlPool.GetInstance().GetConnect();
|
||||
local Ret = SqlObj.Select(Sql, ["int"]);
|
||||
//把连接还池子
|
||||
MysqlPool.GetInstance().PutConnect(SqlObj);
|
||||
|
||||
if (Ret.len()< 1 || Ret[0][0] == null) {
|
||||
return null;
|
||||
} else {
|
||||
return Ret[0][0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -272,24 +320,20 @@ class Marry {
|
|||
} else {
|
||||
InvenObj.DeleteItemCount(NeedItem, 1);
|
||||
|
||||
// //注册婚礼礼堂信息
|
||||
// AuditoriumList.rawset(SUser.GetCID(), {
|
||||
// Time = Time,
|
||||
// Level = Level,
|
||||
// Target_CId = Target_CId,
|
||||
// Target_Name = Mysql_Operate_Func.CheckMarryTargetName(Target_CId),
|
||||
// });
|
||||
|
||||
//当前时间戳 作为礼堂编号
|
||||
local Index = time();
|
||||
|
||||
//获得婚礼仪式开始时间
|
||||
local Index = time() + (Time + 1) * 10 * 60;
|
||||
//注册婚礼礼堂信息
|
||||
Mysql_Operate_Func.InsertMarryRoom(SUser.GetCID(), SUser.GetCharacName(), Time, Level, Target_CId, Mysql_Operate_Func.CheckMarryTargetName(Target_CId), 1, Index);
|
||||
Mysql_Operate_Func.InsertMarryRoom(Target_CId, Mysql_Operate_Func.CheckMarryTargetName(Target_CId), Time, Level, SUser.GetCID(), SUser.GetCharacName(), 1, Index);
|
||||
AuditoriumUserInfo.rawset(SUser.GetCID(), {});
|
||||
|
||||
|
||||
Mysql_Operate_Func.ChangeMarryState(SUser.GetCID(), 2);
|
||||
Mysql_Operate_Func.ChangeMarryState(Target_CId, 2);
|
||||
|
||||
|
||||
local T = {
|
||||
op = OP + 10,
|
||||
Flag = 2
|
||||
|
|
@ -307,9 +351,14 @@ class Marry {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//进入礼堂
|
||||
function EnterAuditorium(SUser, Jso) {
|
||||
local RoomId = Jso.room;
|
||||
|
||||
local location = SUser.GetLocation();
|
||||
|
||||
//进入自己的礼堂
|
||||
if (RoomId == -1) {
|
||||
local MyState = Mysql_Operate_Func.CheckMarryState(SUser.GetCID());
|
||||
|
|
@ -317,12 +366,42 @@ class Marry {
|
|||
SUser.SendNotiBox("您访问的礼堂不存在!", 1);
|
||||
return;
|
||||
}
|
||||
RoomId = SUser.GetCID();
|
||||
//如果根据自己的cid不能拿到礼堂信息 说明这个礼堂的key是对象的
|
||||
if (!(AuditoriumUserInfo.rawin(RoomId))) {
|
||||
//对象的cid
|
||||
RoomId = Mysql_Operate_Func.GetAuditoriumIndexById(SUser.GetCID());
|
||||
}
|
||||
|
||||
location.rawset("所在礼堂编号", RoomId);
|
||||
//向缓存写入进入时的坐标
|
||||
EnterAuditoriumPosList.rawset(SUser.GetCID(), SUser.GetLocation());
|
||||
EnterAuditoriumPosList.rawset(SUser.GetCID(), location);
|
||||
//移动到礼堂
|
||||
World.MoveArea(SUser, Config["礼堂城镇编号"], Config["礼堂区域编号"], 55, 349);
|
||||
} else {
|
||||
location.rawset("所在礼堂编号", RoomId);
|
||||
//向缓存写入进入时的坐标
|
||||
EnterAuditoriumPosList.rawset(SUser.GetCID(), location);
|
||||
//移动到礼堂
|
||||
World.MoveArea(SUser, Config["礼堂城镇编号"], Config["礼堂区域编号"], 55, 349);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
AuditoriumUserInfo[RoomId].rawset(SUser.GetCID(), 1);
|
||||
|
||||
local UserCanSee = [];
|
||||
foreach(cid in AuditoriumUserInfo[RoomId]) {
|
||||
UserCanSee.push(cid);
|
||||
}
|
||||
|
||||
local T = {
|
||||
op = OP + 22,
|
||||
time = Mysql_Operate_Func.GetAuditoriumTimeById(RoomId) - time()
|
||||
}
|
||||
SUser.SendJso(T);
|
||||
|
||||
}
|
||||
|
||||
//离开礼堂
|
||||
|
|
@ -331,12 +410,111 @@ class Marry {
|
|||
local Info = EnterAuditoriumPosList[SUser.GetCID()];
|
||||
//离开礼堂回到进入时的位置
|
||||
World.MoveArea(SUser, Info.Town, Info.Area, Info.Pos.X, Info.Pos.Y);
|
||||
|
||||
|
||||
AuditoriumUserInfo[Info["所在礼堂编号"]].rawdelete(SUser.GetCID());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//获得礼堂列表
|
||||
function GetAuditoriumList(SUser, Jso) {
|
||||
local re = Mysql_Operate_Func.GetAuditoriumList();
|
||||
local SendArr = [];
|
||||
//判断用的
|
||||
local SelectMap = {};
|
||||
|
||||
foreach(v in re) {
|
||||
local TimeBuf = v.pop();
|
||||
local id = v[0];
|
||||
//不存在时PUSH
|
||||
if (!(SelectMap.rawin(v[4]))) {
|
||||
v.push(AuditoriumUserInfo.rawget(id).len());
|
||||
v.push(Channel);
|
||||
v.push(TimeBuf);
|
||||
SendArr.push(v);
|
||||
SelectMap.rawset(id, 1);
|
||||
}
|
||||
}
|
||||
local T = {
|
||||
op = OP + 20,
|
||||
info = SendArr
|
||||
}
|
||||
SUser.SendJso(T);
|
||||
}
|
||||
|
||||
function GetConfig(SUser, Jso) {
|
||||
local T = {
|
||||
op = OP + 778,
|
||||
town = Config["礼堂城镇编号"],
|
||||
area = Config["礼堂区域编号"],
|
||||
}
|
||||
SUser.SendJso(T);
|
||||
}
|
||||
|
||||
|
||||
//表示是否可见 参数为用户数组
|
||||
function MarryUserCallBack(RealList, MUser) {
|
||||
|
||||
foreach(_Index, Value in RealList) {
|
||||
local SUser = Value;
|
||||
if (!SUser || !SUser.GetState() >= 3) continue;
|
||||
if (SUser.GetUID() == MUser.GetUID()) continue;
|
||||
local Pack = Packet();
|
||||
Pack.Put_Header(0, 24);
|
||||
Pack.Put_Byte(SUser.GetLocation().Town); //城镇
|
||||
Pack.Put_Byte(SUser.GetArea(1)); //区域
|
||||
Pack.Put_Short((RealList.len() - 1)); //几个玩家 要减去自己
|
||||
foreach(__Index, MapObj in RealList) {
|
||||
if (SUser.GetUID() == MapObj.GetUID()) continue;
|
||||
Pack.Put_Short(MapObj.GetUniqueId());
|
||||
Pack.Put_Short(MapObj.GetAreaPos().X);
|
||||
Pack.Put_Short(MapObj.GetAreaPos().Y);
|
||||
Pack.Put_Byte(MapObj.GetDirections()); //朝向
|
||||
Pack.Put_Byte(MapObj.GetVisibleValues()); //是否可见
|
||||
}
|
||||
Pack.Put_Byte(1); //是否可见
|
||||
Pack.Finalize(true);
|
||||
|
||||
SUser.Send(Pack);
|
||||
Pack.Delete();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//退出可见列表
|
||||
function MarryUserDeleteCallBack(RealList, MUser) {
|
||||
|
||||
foreach(_Index, Value in RealList) {
|
||||
local SUser = Value;
|
||||
if (!SUser || !(SUser.GetState() >= 3) || !MUser || !(MUser.GetState() >= 3)) continue;
|
||||
if (SUser.GetUID() == MUser.GetUID()) continue;
|
||||
local Pack = Packet();
|
||||
Pack.Put_Header(0, 23);
|
||||
Pack.Put_Short(MUser.GetUniqueId()); //唯一id
|
||||
Pack.Put_Byte(MUser.GetLocation().Town); //城镇
|
||||
|
||||
|
||||
Pack.Put_Byte(MUser.GetArea(1)); //区域
|
||||
Pack.Put_Short(MUser.GetAreaPos().X);
|
||||
Pack.Put_Short(MUser.GetAreaPos().Y);
|
||||
Pack.Put_Byte(MUser.GetDirections()); //朝向
|
||||
Pack.Put_Byte(MUser.GetVisibleValues()); //是否可见
|
||||
Pack.Finalize(true);
|
||||
SUser.Send(Pack);
|
||||
Pack.Delete();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
constructor() {
|
||||
Config = dofile("/root/娱心插件配置/结婚系统配置.dat");
|
||||
local ConfigPath = Sq_Game_GetConfig();
|
||||
Channel = ConfigPath.slice(-6).slice(0, 2);
|
||||
|
||||
//注册来自客户端的收包
|
||||
ClientSocketPackFuncMap.rawset(OP + 9, CheckMarryStateCallBack.bindenv(this));
|
||||
|
|
@ -347,6 +525,20 @@ class Marry {
|
|||
ClientSocketPackFuncMap.rawset(OP + 13, ConfirmMarry.bindenv(this));
|
||||
ClientSocketPackFuncMap.rawset(OP + 15, EnterAuditorium.bindenv(this));
|
||||
ClientSocketPackFuncMap.rawset(OP + 17, LeaveAuditorium.bindenv(this));
|
||||
ClientSocketPackFuncMap.rawset(OP + 19, GetAuditoriumList.bindenv(this));
|
||||
ClientSocketPackFuncMap.rawset(OP + 777, GetConfig.bindenv(this));
|
||||
|
||||
//每次加载的时候都注册礼堂信息
|
||||
AuditoriumUserInfo.rawset(1, {});
|
||||
|
||||
local RealList = [];
|
||||
|
||||
RealList.push(World.GetUserByUid(1));
|
||||
RealList.push(World.GetUserByUid(2));
|
||||
|
||||
|
||||
|
||||
MarryUserDeleteCallBack(RealList, World.GetUserByUid(1));
|
||||
|
||||
//从池子拿连接
|
||||
local SqlObj = MysqlPool.GetInstance().GetConnect();
|
||||
|
|
|
|||
|
|
@ -27,3 +27,13 @@ MARRY_SQL_LIST.ChangeMarryState <- "UPDATE zyk.marry SET state = %d WHERE cid =
|
|||
//新增礼堂信息
|
||||
MARRY_SQL_LIST.InsertMarryRoom <- @"INSERT INTO zyk.marry_room (cid, name, time, level, target_cid, target_name, state, rindex)
|
||||
VALUES (%d, '%s', %d, %d, %d, '%s', %d, %d);";
|
||||
|
||||
|
||||
//查询礼堂列表
|
||||
MARRY_SQL_LIST.GetAuditoriumList <- @"SELECT * FROM zyk.marry_room";
|
||||
|
||||
//根据cid查询自己的礼堂编号
|
||||
MARRY_SQL_LIST.GetAuditoriumIndexById <- @"SELECT target_cid FROM zyk.marry_room WHERE cid = %d";
|
||||
|
||||
//根据cid查询自己的礼堂编号
|
||||
MARRY_SQL_LIST.GetAuditoriumTimeById <- @"SELECT rindex FROM zyk.marry_room WHERE cid = %d";
|
||||
Loading…
Reference in New Issue