11111
This commit is contained in:
106
Project/MonsterEx/MonsterEx.nut
Normal file
106
Project/MonsterEx/MonsterEx.nut
Normal file
@@ -0,0 +1,106 @@
|
||||
/*
|
||||
文件名:MonsterEx.nut
|
||||
路径:Project/MonsterEx/MonsterEx.nut
|
||||
创建日期:2025-02-07 11:46
|
||||
文件用途:怪物扩展
|
||||
*/
|
||||
Rindro_Monster_Ex_Name_Map <- {};
|
||||
|
||||
function L_Rindro_MonsterEXControl_Face(ObjectAddress, Xpos, Ypos) {
|
||||
|
||||
if (getroottable().rawin("MonsterFaceImage")) {
|
||||
local ret = MonsterFaceImage(L_Sq_ObjectAddressToSqrObject(ObjectAddress, "IRDMonster", 0));
|
||||
if (ret) {
|
||||
L_sq_DrawImg(ret.img, ret.index, Xpos, Ypos);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function L_Rindro_MonsterEXControl_Race(ObjectAddress, Xpos, Ypos) {
|
||||
local v4 = L_sq_RA(ObjectAddress + 88);
|
||||
local Count = (L_sq_RA(ObjectAddress + 92) - v4) >> 2;
|
||||
local RaceArr = [];
|
||||
for (local i = 0; i< Count; i++) {
|
||||
RaceArr.append(L_sq_RA(v4 + 4 * i));
|
||||
}
|
||||
//调用种族拓展
|
||||
local Monobj = L_Sq_ObjectAddressToSqrObject(L_sq_RA(ObjectAddress + 0x8), "IRDMonster", 0)
|
||||
if (getroottable().rawin("MonsterCategory")) {
|
||||
local Ret = MonsterCategory(Monobj, RaceArr, Xpos, Ypos);
|
||||
if (Ret) RaceArr = Ret;
|
||||
}
|
||||
local XposBuffer = Xpos;
|
||||
foreach(Pos, Index in RaceArr) {
|
||||
if (Pos > 0) XposBuffer += 33;
|
||||
L_sq_DrawImg("common/etc/category.img", Index, XposBuffer, Ypos);
|
||||
}
|
||||
|
||||
if (!Monobj.isDead() && Rindro_Monster_Ex_Name_Map.rawin(sq_GetObjectId(Monobj))) {
|
||||
local Color = sq_RGBA(255, 255, 255, 255);
|
||||
if(sq_GetMonsterRank(Monobj) == 1) Color = sq_RGBA(179, 107, 255, 255);
|
||||
if(sq_GetMonsterRank(Monobj) == 3 || sq_GetMonsterRank(Monobj) == 5) Color = sq_RGBA(255, 0, 240 255);
|
||||
L_sq_DrawCode("Lv" + sq_GetMonsterLevel(Monobj) + " " + Rindro_Monster_Ex_Name_Map[sq_GetObjectId(Monobj)], XposBuffer + (RaceArr.len() > 0 ? 33 : 0) + 2, Ypos + 3, Color, 0, 1);
|
||||
return -5000;
|
||||
}
|
||||
return XposBuffer + (RaceArr.len() > 0 ? 33 : 0);
|
||||
}
|
||||
|
||||
|
||||
//获取怪物等级
|
||||
function sq_GetMonsterLevel(Object) {
|
||||
return L_Sq_GetObjectDeInfo(L_Sq_GetObjectAddress(Object), 0x1A4C, true);
|
||||
}
|
||||
//设置怪物等级
|
||||
function sq_SetMonsterLevel(Object, Level) {
|
||||
L_Sq_SetObjectDeInfo(L_Sq_GetObjectAddress(Object), 0x1A4C, true, Level);
|
||||
}
|
||||
//获取怪物名字
|
||||
function sq_GetMonsterName(Object) {
|
||||
return L_Sq_GetObjectName(Object);
|
||||
}
|
||||
//设置怪物名字
|
||||
function sq_SetMonsterName(Object, Name) {
|
||||
L_Sq_DeleteObjectName(Object);
|
||||
Rindro_Monster_Ex_Name_Map.rawset(sq_GetObjectId(Object), Name);
|
||||
}
|
||||
//获取怪物阶级
|
||||
function sq_GetMonsterRank(Object) {
|
||||
if (sq_IsNamed(Object)) return 4;
|
||||
switch (L_sq_RA(L_Sq_GetObjectAddress(Object) + 0x3658)) {
|
||||
case 0:
|
||||
case 4:
|
||||
case 5:
|
||||
return 0;
|
||||
case 1:
|
||||
case 6:
|
||||
return 1;
|
||||
case 2:
|
||||
case 7:
|
||||
return 3;
|
||||
case 3:
|
||||
case 8:
|
||||
return 5;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
//设置怪物阶级
|
||||
function sq_SetMonsterRank(Object, Type) {
|
||||
L_sq_WA(L_Sq_GetObjectAddress(Object) + 0x3658, Type);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//怪物头像回调 返回空 或者不返回则为不修改 返回 {img,index} 则为修改
|
||||
function MonsterFaceImage(obj) {
|
||||
|
||||
}
|
||||
|
||||
//怪物种族回调 返回空 或者不返回则为不修改 返回修改后的RaceArr数组 则为修改
|
||||
function MonsterCategory(obj, RaceArr, Xpos, Ypos) {
|
||||
for (local i = 0; i< 14; i++) {
|
||||
RaceArr.append(i + 1);
|
||||
}
|
||||
return RaceArr;
|
||||
}
|
||||
Reference in New Issue
Block a user