no message

This commit is contained in:
2025-11-08 12:21:06 +08:00
parent e195b0f168
commit 204151d95c
82 changed files with 151530 additions and 12 deletions

View File

@@ -0,0 +1,37 @@
/*
文件名:DrawHudMain.nut
路径:Base/CallBack/DrawHudMain.nut
创建日期:2024-08-29 09:39
文件用途:
*/
//血槽背景
function L_HUD_BloodBackground() {
local RootTab = getroottable();
local obj = sq_getMyCharacter();
if (!obj) return;
if (RootTab.rawin("HudUi_Obj")) {
RootTab.HudUi_Obj.BottomShow(obj);
}
if (RootTab.rawin("EventList_Obj")) {
foreach(win in EventList_Obj.Events) {
win.EventShow(obj);
}
}
}
getroottable().Camera_Pos <- {};
//城镇摄像机
function L_Sync_Camera_Pos(Camera_Object) {
// print(Camera_Object);
// print(Camera_Object);
getroottable().Camera_Pos.X <- L_sq_RA(Camera_Object + 0x638);
getroottable().Camera_Pos.Y <- L_sq_RA(Camera_Object + 0x63C);
}
function Sq_DrawChannel() {
// L_sq_DrawImg("interface2/cs_shop/cs_packageevent/2021_summer/hearoursummer_calendarui.img", 0, 0, 0);
}

View File

@@ -0,0 +1,231 @@
/*
文件名:DrawMain.nut
路径:Base/CallBack/DrawMain.nut
创建日期:2024-08-06 18:58
文件用途:绘制回调
*/
//在DrawMain后面调用
function L_drawMainCustomUI_All() {
local obj = sq_getMyCharacter();
if (!obj) return;
local RootTab = getroottable();
//获取与上一帧的dt
if (!(RootTab.rawin("Rindro_DurationFlag"))) {
Rindro_DurationFlag <- L_Getmicroseconds();
Rindro_Duration <- 0;
} else {
local NowM = L_Getmicroseconds();
Rindro_Duration = (NowM - Rindro_DurationFlag);
Rindro_DurationFlag = NowM;
}
//下帧执行任务事件
if (RootTab.rawin("LenheartNextFrameFuncTab")) {
foreach(Func in RootTab["LenheartNextFrameFuncTab"]) {
Func();
}
RootTab["LenheartNextFrameFuncTab"] = [];
} else {
RootTab.LenheartNextFrameFuncTab <- [];
}
//重载逻辑
Sq_ReloadLogic();
//初始化活动图标
Lenheart_EventList_Fun(obj);
//加载注册Base函数窗口
if (RootTab.rawin("LenheartBaseFuncTab")) {
local LenheartFunc = RootTab["LenheartBaseFuncTab"];
foreach(Func in LenheartFunc) {
Func(obj);
}
}
//加载注册Ex函数窗口
if (RootTab.rawin("LenheartFuncTab")) {
local LenheartFunc = RootTab["LenheartFuncTab"];
foreach(name,Func in LenheartFunc) {
if(name = "GetDamageRateFuncN"){
print(name);
Func(obj);
}
}
}
//所有插件初始化完毕
if (!getroottable().rawin("LenheartPluginsInitFlag")) {
local T = {
op = 25001021,
}
Rindro_BaseToolClass.SendPackEx(T);
getroottable().LenheartPluginsInitFlag <- true;
}
// for (local i = 0; i< 100; i++) {
// for (local z = 0; z < 100; z++) {
// sq_PutPixel(sq_RGBA(230, 200, 155, 255), 200 + i, 200 + z);
// }
// }
// sq_DrawBox(100, 100, 100, 100, 0xffffffff);
// L_Sq_CallFunc(0x11E86C0, "char", FFI_STDCALL, ["int", "int", "int", "int", "int"], 10, 10, 750, 350, 0xffffffff);
// for (local i = 0; i< 100; i++) {
// for (local z = 0; z< 100; z++) {
// sq_PutPixel(sq_RGBA(230, 200, 155, 255), 200 + i, 200 + z);
// }
// }
// L_sq_Test(0x11A7B65);
// local Device = NativePointer(0x1B45AB8).readInt();
// print(format("Device:0x%02x", Device));
// L_sq_Test(Device);
// if (!TTTAAA) TTTAAA = Rindro_Draw_Character(0, [601590000, 1751501, 601500069], "rest.ani", null);
// if (TTTAAA) TTTAAA.Draw(120, 200);
}
// for (local i = 0; i < 42; i++) {
// local Value = MemoryTool.DecodeMemoryData(0x394e8c00+0x1050 + (i * 4));
// if(Value == 151)print("Value :" + i * 4);
// }
// print(MemoryTool.DecodeMemoryData(0x1DFFB240));
// MemoryTool.EncodeMemoryData(0x304bdc00+0x1054,7);
// TTTAAA <- null;
// L_NewWindows("Lenheart", 56, 0x1);
// L_Sq_CallFunc(0xE6E070, "int", FFI_THISCALL, ["int", "int", "int", "int"], 0x01ADE090, 56, 0, 0);
// getroottable().Lsnzz <- Clock();
// dofile("sqr/Base/_Tool/Json.nut");
// print(T);
// Register_DPS_Pack(1, function(Jso) {
// printT(Jso);
// });
// for (local i = 0; i< 50; i++) {
// local asos = sq_CreateCharacter(0,0);
// // asos.setValid(false);
// // local obj = sq_GetCNRDObjectToActiveObject(asos);
// // sq_SendDestroyPacketPassiveObject(obj);
// // sendDestroyPacket(obj);
// // sq_SendDestroyPacketPassiveObject(asos);
// // sq_AddObject(sq_getMyCharacter(), asos, OBJECTTYPE_VIRTUALCHARACTER, false);
// // asos.setValid(false);
// // L_sq_Test(L_Sq_GetObjectAddress(asos));
// L_Sq_CallFunc(0x5A44B0, "void", FFI_MS_CDECL, ["int"], L_Sq_GetObjectAddress(asos));
// }
// local asos = sq_CreateAICharacter(900);
// // sq_DeleteParticleCreater(asos);
// local asos = sq_CreateAICharacter(419);
// asos.setCurrentPos(sq_getMyCharacter().getXPos() + 100, sq_getMyCharacter().getYPos(), 0);
// sq_AddObject(sq_getMyCharacter(), asos, OBJECTTYPE_VIRTUALCHARACTER, false);
// sq_ChangeDrawLayer(asos, ENUM_DRAWLAYER_CLOSEBACK);
// L_sq_GoDungeon(1504);
// CargoType <- 0;
// Sq_GetExeStr_Map[21910] <- function(Index) {
// CargoType = 0;
// return 21910;
// }
// Sq_GetExeStr_Map[21911] <- function(Index) {
// CargoType = 1;
// return 21911;
// }
// Rindro_Haker.LoadHook(0xE67800, ["int", "int"],
// function(args) {
// //点击了仓库转移物品
// if (args[0] == 0x2B) {
// if (CargoType == 0) {
// printf("点击个人仓库转移物品");
// local T = {
// op = 21091001,
// type = 0,
// }
// Rindro_BaseToolClass.SendPackEx(T);
// return [0];
// }
// if (CargoType == 1) {
// printf("点击账号仓库转移物品");
// local T = {
// op = 21091001,
// type = 1,
// }
// Rindro_BaseToolClass.SendPackEx(T);
// return [0];
// }
// }
// return null;
// },
// function(args) {
// // print(666);
// // print(format("%02x", args.pop()));
// // TTTAni <- args.pop();
// return null;
// });
// function onAttack_Swordman(obj, damager, boundingBox, isStuck)
// {
// local Mon = sq_GetCNRDObjectToActiveObject(damager);
// Mon.setHp(0, null, true);
// }
// function getCurrentModuleDamageRate(obj) {
// local LLJob = sq_getJob(obj);
// local LLGrowT = sq_getGrowType(obj);
// if (LLJob == 0 && LLGrowT == 2)
// return 2100000000.0;
// return 1.0;
// }
// function onStartDungeon_Swordman(obj) {
// print(666);
// obj.setEnableDamageBox(false);
// }
// local chrobj = sq_CreateCharacter(0, 4);
// print("-----------------------------------------------/");
// foreach(member, val in chrobj.getclass()) {
// ::print(member + "\n");
// local attr;
// if ((attr = chrobj.getclass().getattributes(member)) != null) {
// foreach(i, v in attr) {
// ::print("\t" + i + " = " + (typeof v) + "\n");
// }
// } else {
// ::print("\t<no attributes>\n")
// }
// }

View File

@@ -0,0 +1,84 @@
/*
文件名:GetDamageRate.nut
路径:Base/CallBack/GetDamageRate.nut
创建日期:2024-08-09 14:10
文件用途:获取伤害倍率
*/
RindroDamageRate <- 1.0;
function L_getCurrentModuleDamageRate(obj) {
if (!obj)
return 1.0;
local ClientRat = 1.0;
try {
ClientRat = getCurrentModuleDamageRate(obj).tofloat();
} catch (exception) {
ClientRat = 1.0;
}
return (RindroDamageRate * ClientRat);
}
function Lenheart_GetDamageRate_Fun(obj) {
//在城镇时
if (sq_GetCurrentModuleType() == 1) {
RindroDamageRate = 1.0;
}
}
//修改伤害回调
function SetDamageRateCallBack(Chunk) {
local Jso = Json.Decode(Chunk);
RindroDamageRate = Jso.rate;
}
Pack_Control.rawset(2024110902, SetDamageRateCallBack);
getroottable()["LenheartFuncTab"].rawset("GetDamageRateFuncN", Lenheart_GetDamageRate_Fun);
// ModuleDamageTable <- {
// //这个1是 副本编号
// [1] = {
// //这个0是大职业编号 比如说鬼剑士就是 0 女格斗家就是 1 在character/character.lst 这个文件里可以看
// [0] = {
// //这个0 和 1 是转职编号 0就是未转职 1 就是转了剑魂
// [0] = 1.0,
// [1] = 3.0
// }
// },
// //2号副本
// [2] ={
// //女格斗家职业
// [1] = {
// [0] = 1.0,
// [1] = 3.0
// }
// }
// }
// function getCurrentModuleDamageRate(obj)
// {
// local Rate = 1.0;
// local stage = sq_GetGlobaludpModuleStage();
// local dungeon = sq_GetDungeonByStage(stage);
// local dungeonIndex = sq_GetDuegonIndex(dungeon);
// local LLJob = sq_getJob(obj);
// local LLGrowT = sq_getGrowType(obj);
// //处于生效副本中
// if(ModuleDamageTable.rawin(dungeonIndex)){
// //自己是生效职业
// if(ModuleDamageTable[dungeonIndex].rawin(LLJob)){
// //是生效转职
// if(ModuleDamageTable[dungeonIndex][LLJob].rawin(LLGrowT)){
// Rate += ModuleDamageTable[dungeonIndex][LLJob][LLGrowT].tofloat();
// }
// }
// }
// return Rate;
// }

View File

@@ -0,0 +1,183 @@
/*
文件名:PackControl.nut
路径:Base/PackControl/PackControl.nut
创建日期:2024-08-06 22:13
文件用途:
*/
Pack_Control <- {}
Pack_Hex_Control <- {}
Pack_DPS_Control <- {}
function Register_DPS_Pack(Id, Func) {
Pack_DPS_Control.rawset(Id, Func);
}
function Sq_Pack_Control(Chunk) {
try {
local Pack_Json = Json.Decode(Chunk);
if (Pack_Json.op == 2147483646) {
if (Pack_DPS_Control.rawin(Pack_Json.dps_id)) {
local Jso = Json.Decode(Chunk);
Jso.rawdelete("op");
Pack_DPS_Control[Pack_Json.dps_id](Jso);
}
} else {
if (Pack_Control.rawin(Pack_Json.op)) {
try {
Pack_Control[Pack_Json.op](Chunk);
} catch (exception) {
print("error pack: " + Pack_Json.op);
}
}
}
} catch (exception) {
// print("error packmsg: " + Pack_Json.op);
print(exception);
}
}
function Sq_Pack_ControlLocal(Chunk) {
local Pack_Json = Json.Decode(Chunk);
if (Pack_Json.op == 2147483646) {
if (Pack_DPS_Control.rawin(Pack_Json.dps_id)) {
local Jso = Json.Decode(Chunk);
Jso.rawdelete("op");
Pack_DPS_Control[Pack_Json.dps_id](Jso);
}
} else {
if (Pack_Control.rawin(Pack_Json.op)) {
Pack_Control[Pack_Json.op](Chunk);
}
}
}
//字节流包
function Sq_BlobPack_Control(Size, Pointer) {
local Pack = Packet();
Pack.Load(Pointer, Size);
local Op = Pack.GetInt();
//读取位置回到原点
// Pack.Seek(0);
if (Pack_Hex_Control.rawin(Op)) {
Pack_Hex_Control[Op](Pack);
}
}
function SendPackToDP_S(Id, T) {
T.op <- 2147483646;
T.dps_id <- Id;
Rindro_BaseToolClass.SendPackEx(T);
}
//进入副本回调
function LenheartGotoDgnCallBack(Chunk) {
local Jso = Json.Decode(Chunk);
local DgnId = Jso.map.id;
local DgnRate = Jso.map.ra;
L_sq_GoDungeon(DgnId);
}
Pack_Control.rawset(2024041602, LenheartGotoDgnCallBack);
//进入副本增加属性
function LenheartAdditionalAttributes(obj) {
obj = sq_ObjectToSQRCharacter(obj);
//在副本中
if (sq_GetCurrentModuleType() == 3) {
if (!CNSquirrelAppendage.sq_IsAppendAppendage(obj, "appendage/lenheartap.nut")) {
if ("LenheartAttributesTable" in getroottable()) {
local Abarr = {};
foreach(AtObj in getroottable()["LenheartAttributesTable"]) {
foreach(Apos, At in AtObj) {
if (!Abarr.rawin(Apos)) Abarr[Apos] <- At;
else Abarr[Apos] += At;
}
}
local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, -1, false, "appendage/lenheartap.nut", true);
CNSquirrelAppendage.sq_Append(appendage, obj, obj);
local change_appendage = appendage.sq_getChangeStatus("Yosin_LenheartDgnBuff");
if (!change_appendage) {
change_appendage = appendage.sq_AddChangeStatusAppendageID(obj, obj, 0,
CHANGE_STATUS_TYPE_COOLTIME_DECLINE,
false, 0, 115514);
}
if (change_appendage) {
change_appendage.clearParameter();
foreach(Key, Value in Abarr) {
if (Key == 0) change_appendage.addParameter(13, false, Value.tofloat()); //HP
else if (Key == 1) change_appendage.addParameter(48, false, Value.tofloat()); //MP
else if (Key == "strength") change_appendage.addParameter(0, false, Value.tofloat()); //力量
else if (Key == "intelligence") change_appendage.addParameter(1, false, Value.tofloat()); //智力
else if (Key == "vitality") change_appendage.addParameter(2, false, Value.tofloat()); //体力
else if (Key == "spirit") change_appendage.addParameter(3, false, Value.tofloat()); //精神
else if (Key == "physicalAttack") change_appendage.addParameter(4, false, Value.tofloat()); //物攻
else if (Key == "magicAttack") change_appendage.addParameter(31, false, Value.tofloat()); //魔攻
else if (Key == "independentAttack") {
change_appendage.addParameter(53, false, Value.tofloat()); //独立
change_appendage.addParameter(54, false, Value.tofloat()); //独立
} else if (Key == "physicalDefense") change_appendage.addParameter(5, false, Value.tofloat()); //物理防御
else if (Key == "magicDefense") change_appendage.addParameter(32, false, Value.tofloat()); //魔法防御
else if (Key == "physicalCritical") change_appendage.addParameter(15, false, Value.tofloat() / 10.0); //物理暴击
else if (Key == "magicCritical") change_appendage.addParameter(16, false, Value.tofloat() / 10.0); //魔法暴击
else if (Key == "attackSpeed") change_appendage.addParameter(10, false, Value.tofloat()); //攻速
else if (Key == "releaseSpeed") change_appendage.addParameter(12, false, Value.tofloat()); //释放
else if (Key == "moveSpeed") change_appendage.addParameter(11, false, Value.tofloat()); //移速
else if (Key == "resistance") change_appendage.addParameter(39, false, Value.tofloat()); //抗磨
else if (Key == "hitRate") change_appendage.addParameter(33, false, Value.tofloat()); //命中
else if (Key == "avoidance") change_appendage.addParameter(27, false, Value.tofloat()); //闪避
else if (Key == "hpRecovery") change_appendage.addParameter(14, false, Value.tofloat()); //HP恢复
else if (Key == "mpRecovery") change_appendage.addParameter(29, false, Value.tofloat()); //MP恢复
else if (Key == "stun") change_appendage.addParameter(41, false, Value.tofloat()); //僵直
else if (Key == "hardStun") change_appendage.addParameter(34, false, Value.tofloat()); //硬直
else if (Key == "fire") change_appendage.addParameter(42, false, Value.tofloat()); //火强
else if (Key == "fireResistance") change_appendage.addParameter(20, false, Value.tofloat()); //火抗
else if (Key == "water") change_appendage.addParameter(43, false, Value.tofloat()); //冰强
else if (Key == "waterResistance") change_appendage.addParameter(21, false, Value.tofloat()); //冰抗
else if (Key == "light") change_appendage.addParameter(45, false, Value.tofloat()); //光强
else if (Key == "lightResistance") change_appendage.addParameter(23, false, Value.tofloat()); //光抗
else if (Key == "dark") change_appendage.addParameter(44, false, Value.tofloat()); //暗强
else if (Key == "darkResistance") change_appendage.addParameter(22, false, Value.tofloat()); //暗抗
}
}
}
}
}
}
if (getroottable().rawin("LenheartFuncTab")) {
getroottable()["LenheartFuncTab"].rawset("LenheartAdditionalAttributesFunc", LenheartAdditionalAttributes);
} else {
local T = {};
T.rawset("LenheartAdditionalAttributesFunc", LenheartAdditionalAttributes);
getroottable().rawset("LenheartFuncTab", T);
}
//进入副本增加属性
function LenheartAdditionalCallBack(Chunk) {
local Jso = Json.Decode(Chunk);
if ("LenheartAttributesTable" in getroottable()) {
local T = getroottable()["LenheartAttributesTable"];
T.rawset("LenheartCollectBoxAb", Jso.Attribute);
} else {
local T = {};
T.rawset("LenheartCollectBoxAb", Jso.Attribute);
getroottable().rawset("LenheartAttributesTable", T);
}
}
Pack_Control.rawset(20069016, LenheartAdditionalCallBack);
getroottable().PluginsCompatibilityModeCallBack <- false;
//兼容模式
function CompatibilityModeCallBack(Chunk) {
getroottable().PluginsCompatibilityModeCallBack <- true;
}
Pack_Control.rawset(30004, CompatibilityModeCallBack);

View File

@@ -0,0 +1,32 @@
/*
文件名:PushDamage.nut
路径:Base/CallBack/PushDamage.nut
创建日期:2024-08-30 14:41
文件用途:发生伤害时
*/
PushDamageFontDataFuncTab <- {};
PushDamageFontFuncTab <- {};
function Sq_PushDamageData(ObjAddress, MySelfAddress, Value) {
// print("MyCharacter: " + format("%02x", L_sq_RA(0x1AB7CDC)));
// print("ObjAddress: " + format("%02x", ObjAddress));
// print("A1: " + format("%02x", A1));
// print("A2: " + format("%02x", A2));
// print(" ");
foreach(Func in PushDamageFontFuncTab) {
Func(ObjAddress, MySelfAddress, Value);
}
}
function Sq_PushDamageFontData(ObjAddress, X, Y, Z, Value, Type, A1, A2) {
local Flag = true;
foreach(Func in PushDamageFontDataFuncTab) {
local Ret = Func(ObjAddress, X, Y, Z, Value, Type, A1, A2);
if (Ret == false) {
Flag = false;
}
}
return Flag;
}