Files
hjha-server/base/mjComEvent_sub.cs
xiaoou e9616125ce feat: initial commit - HJHA game server full source
6 major server modules (PdkFriendServer/GlobalSever/ServerCore/GameModule/GameNetModule) +
game logic (GameFix/GameDAL/ServerData) +
network layer (NetWorkMessage) +
data layer (ObjectModel) +
utilities (MrWu/Core/Config/CloudAPI/dll) +
adapters (zyxAdapter/base)

.NET 8.0 C# solution, 16 projects, 958 source files
2026-07-07 12:02:15 +08:00

195 lines
7.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Forms;
using System.Text;
using System.Runtime.InteropServices;
using System.IO;
using zyxAdapter;
using MrWu.Debug;
using Game.Data;
namespace nativeCom{
public partial class dcEvent_zyx:dcEvent_zyx0{
unsafe public override int doMsg_rukou(string dowhat/*^分割*/, string datas/*结构体地址 ^分割*/,ref tr_rltpchar t)//返回string/*^分割*/
{
return 1;
}
unsafe public override string doMsg(string dowhat/*^分割*/, string datas/*结构体地址 ^分割*/)//返回string/*^分割*/
{
//MrWu.Debug.Debug.Log("dowhat:" + dowhat);
try{
string result="null";
string[] dts =null;
if(datas!=null){ dts= datas.Split('^');
}
string[] dostr=dowhat.Split('^');
string[] cmds=dostr[0].Split('*');
switch(cmds[0]){
// case "showcsharpdllform":
// if (cmds[1]=="1") Formzyx.fmzyx. Show();else Formzyx.fmzyx. Hide();
// break;
case "yasuo":
ABlock ablockTmp= new ABlock();
myCom_zyx.Instance.getDataOfStruct<ABlock>(int.Parse(dts[0]), ref ablockTmp,(int*)&ablockTmp);
ABlock ablockTmp1= new ABlock();
myCom_zyx.Instance.getDataOfStruct<ABlock>(int.Parse(dts[1]), ref ablockTmp1,(int*)&ablockTmp1);
// log("xxxx "+ablockTmp.len+" "+ablockTmp1.len);
if (cmds[1][0]=='1') result= myCom_zyx.Instance.Compress(ref ablockTmp,ref ablockTmp1).ToString();else
result=myCom_zyx.Instance.deCompress(ref ablockTmp,ref ablockTmp1).ToString();
//log("xxxx xxx "+ablockTmp.len+" "+ablockTmp1.len);
break;
case "gameClose":
return "closeOk";//必须
case "dopack"://收包
//log("命令。。。 "+cmds[1]);
switch(cmds[1]){
case "dologic"://每次数据变化
tr_pack_dapai pk1=(tr_pack_dapai) Marshal.PtrToStructure(new IntPtr(int.Parse(dts[0])),typeof(tr_pack_dapai));
mjchild.instance.sendPackFunc(ref pk1,int.Parse(dts[1]));
break;
case "allpack_chupai"://出牌
//全包
tr_pack_dapai pk=(tr_pack_dapai) Marshal.PtrToStructure(new IntPtr(int.Parse(dts[0])),typeof(tr_pack_dapai));
result=mjchild.instance.chupai(ref pk).ToString();
break;
case "fanWorld":
pk=(tr_pack_dapai) Marshal.PtrToStructure(new IntPtr(int.Parse(dts[0])),typeof(tr_pack_dapai));
Tr_Paixing tp= (Tr_Paixing) Marshal.PtrToStructure(new IntPtr(int.Parse(dts[1])),typeof(Tr_Paixing));
int gzNum=int.Parse(cmds[2]);
int wjpos=int.Parse(cmds[3]);
result= mjchild.instance. calFan_world(ref pk,ref tp,gzNum,wjpos).ToString();
break;
case "cal_hupai"://计算胡牌再修正
//log("-----------------");
//pai*' + inttostr(wjpos) + '*' + inttostr(C_lg.getfangpao_new) + '*' + inttostr(LingPai)], [ p, @wjpos, @t, @dapaiToDll]);
pk=(tr_pack_dapai) Marshal.PtrToStructure(new IntPtr(int.Parse(dts[3])),typeof(tr_pack_dapai));
Tr_faninfo tf= (Tr_faninfo) Marshal.PtrToStructure(new IntPtr(int.Parse(dts[0])),typeof(Tr_faninfo));
int hpr=*(int*)int.Parse(dts[1]);
int step=*(int*)int.Parse(dts[5]);
//log("计算胡番----");
mjchild.instance. cal_hupai(ref pk,ref tf,hpr,int.Parse(cmds[3]),int.Parse(cmds[4]),int.Parse(dts[4]),step);
// ABlock ab= new ABlock();
// myCom_zyx.Instance.getDataOfStruct<ABlock>(, ref ab,(int*)&ab);
funs.instance.memToNative_bytes_(funs.instance.StructToBytes(tf),int.Parse(dts[2]));
break;
case "calfan_hupai"://计算胡番
//log("xxxxxxxxxxxxxxxxxxxx");
pk=(tr_pack_dapai) Marshal.PtrToStructure(new IntPtr(int.Parse(dts[5])),typeof(tr_pack_dapai));
tp= (Tr_Paixing) Marshal.PtrToStructure(new IntPtr(int.Parse(dts[0])),typeof(Tr_Paixing));
tf= (Tr_faninfo) Marshal.PtrToStructure(new IntPtr(int.Parse(dts[2])),typeof(Tr_faninfo));
hpr=*(int*)int.Parse(dts[3]);
mjchild.instance. calFan_hupai(ref pk,ref tp,new IntPtr(int.Parse(dts[1])),ref tf,hpr,int.Parse(cmds[3]),int.Parse(cmds[4]),int.Parse(dts[6]));
result= (tf.fan[95+hpr]).ToString();
// if (result==""||result==" ")
// log("sdfsf");
// ABlock ab= new ABlock();
// myCom_zyx.Instance.getDataOfStruct<ABlock>(, ref ab,(int*)&ab);
funs.instance.memToNative_bytes_(funs.instance.StructToBytes(tf),int.Parse(dts[4]));
break;
case "initdll":
mjchild nc=new mjchild();
mjchild.instance=nc;
//Debug.Log("111");
tcls_mem_dll_main cs_main=(tcls_mem_dll_main)Marshal.PtrToStructure(new IntPtr(int.Parse(dts[0])),typeof(tcls_mem_dll_main));
log("宿主参数 "+cs_main.a);
tcls_mem_dll cs_dll=new tcls_mem_dll();
//Debug.Log("222");
tcls_mem_dll.init(ref cs_dll);
//Debug.Log("333");
ABlock ab= new ABlock();
myCom_zyx.Instance.getDataOfStruct<ABlock>(int.Parse(dts[1]), ref ab,(int*)&ab);
//Debug.Log("444");
result=mjchild.instance.initDll(ref cs_main,ref cs_dll ,ref ab,int.Parse( dts[2])).ToString();
//Debug.Log("555");
//nativeCom.Formzyx.fmzyx.Show();
break;
case "initdll_agame"://主要是规则
if(cmds[2] == "1") break;
tcls_mem_dll_main_agame cs_main_agame=(tcls_mem_dll_main_agame)Marshal.PtrToStructure(new IntPtr(int.Parse(dts[0])),typeof(tcls_mem_dll_main_agame));
log("宿主参数_agame "+cs_main_agame.a);
tcls_mem_dll_agame cs_dll_agame=(tcls_mem_dll_agame)Marshal.PtrToStructure(new IntPtr(int.Parse(dts[1])),typeof(tcls_mem_dll_agame));
if(cs_dll_agame.gzcs_big == null) break;
log("----------initdll_agame-------");
cs_dll_agame.gz= (Tr_MJGZ)funs.instance.clone(cs_main_agame.gz);// (Tr_MJGZ)baseFuntion. Clone( cs_main_agame.gz);
log("----------init-------");
ab= new ABlock();
myCom_zyx.Instance.getDataOfStruct<ABlock>(int.Parse(dts[2]), ref ab,(int*)&ab);
//Debug.Log("abc");
result=mjchild.instance.initDll_agame(ref cs_main_agame,ref cs_dll_agame , ref ab,int.Parse(dts[3])).ToString();
//Debug.Log("ccc");
break;
}
break;
}
return result;
}catch(Exception e){
string _path = "d:\\123.txt";
if(!File.Exists(_path)){
File.Create(_path);
}
FileStream fs = new FileStream(_path,FileMode.Append);
log(e.ToString());
string _logs = e.ToString() +"\r\n" +System.DateTime.Now.ToString() + "\r\n";
byte[] bts = System.Text.Encoding.GetEncoding("GB2312").GetBytes(_logs.ToCharArray());
fs.Write(bts,0,bts.Length);
fs.Dispose();
fs.Close();
return null;
}
}
}
}