中国星际RPG联盟

标题: 技术资料单位节点 [打印本页]

作者: castelu    时间: 2013-8-28 01:07
标题: 技术资料单位节点
修改毛毛虫攻击速度。修改魔法的持续时间
+0x54 - BYTE bMainOrderTimer
??这个直接与毛毛虫的攻击速度挂钩,给这个值赋值1,再把给触发加个wait,至于时间我想大家可以自己调试,本身的值大概是50左右,一个循环50,想快就调低点就ok了。
触发里最好把单位限定在毛毛虫这个特殊单位上,不然发生什么怪事别找我。。

忘了说了,此贴说的是单位节点的修改。
地址:
5BC7E0??571200 (1700*336)??UnitNode table??

需要6号插件
然后触发里用ModifyUnitHitPoints这一动作来修改

arg1: 属性的偏移量
arg2: 属性的数值,减法操作写负数.
arg3: 赋值写正数,加减写负数,绝对值表示操作数的长度,取值1~4,0无效

这个再解释清楚一点,我都弄了很久才弄懂
arg1:指的就是0xXXX这个数值里的XXX
这里再次感谢各位前辈的无私奉献,没有你们贡献这个列表我想我也找不出这么多有用的东西来~
arg2:这条很好理解,先不管你要赋值还是直接加减,反正加就是正数,减就是负数
arg3:这个值我当时过了几天后才看懂是什么意思。后来才反应过来是操作符。这个值只有正数或者负数,0没用,正数代表赋值,负数代表加减,只是绝对值表示操作数的长度,取值1~4,这句。我到现在还没弄懂。。。
[ 此贴被ab15987在2010-02-27 06:43重新编辑 ]
回复 引用
举报顶端
沙发? 发表于: 2010-02-27 ??
只看该作者?┊? 小 中 大
另外
+0x110 - WORD wRemoveTimer
????Hallucination, DSwarm, DWeb, Broodling
+0x112 - WORD wDMatrixDamage
+0x114 - BYTE bDMatrixTimer
+0x115 - BYTE bStimTimer
+0x116 - BYTE bEnsnareTimer
+0x117 - BTYE bLockdownTimer
+0x118 - BYTE bIrradiateTimer
+0x119 - BYTE bStatisTimer
+0x11A - BYTE bPlagueTimer
+0x11B - BYTE bIsUnderStorm
????Used to tell if a unit is under psi storm
+0x11C - CUNIT* IrradiatedBy
+0x120 - BYTE bIrradiatePlayerID
+0x121 - BYTE bParasiteFlags
????Each bit corrisponds to the player who has parasited this unit
+0x122 - BYTE bCycleCounter
????Runs updates 2 times per sec(about)
+0x123 - BYTE bIsBlind
+0x124 - BYTE bMaelstromCounter
+0x125 - bUnknown_Unreferenced
+0x126 - BYTE bAcidSporeCount
+0x127 - BYTE bAcidSpore1Time
+0x128 - BYTE bAcidSpore2Time
+0x129 - BYTE bAcidSpore3Time
+0x12A - BYTE bAcidSpore4Time
+0x12B - BYTE bAcidSpore5Time
+0x12C - BYTE bAcidSpore6Time
+0x12D - BYTE bAcidSpore7Time
+0x12E - BYTE bAcidSpore8Time
+0x12F - BYTE bAcidSpore9Time
这里包括:
0x110 幻象,雾,分裂网,zerg的brooding的移除时间 这个值要在单位本体上修改,而不是该魔法的施放者,比如说幻象要改的是幻象这个单位的属性,而不是圣堂武士的属性
0x112 防御矩阵的生命值
0x114 防御矩阵的持续时间
0x115 兴奋剂的持续时间
0x116 诱捕的持续时间
0x117 锁定的持续时间
0x118 辐射的持续时间
0x119 冰冻的持续时间
0x11A 瘟疫的持续时间 已经在瘟疫状态下时,修改时间也会间接修改动画,比如说时间到了动画消失,但是反过来,没有在瘟疫状态下,增加时间的话会导致无动画,即无红色血雾。锁定也是同样的情况,至于诱捕,辐射,冰冻,防御矩阵我猜也是同样的情况。另外在还有持续时间的情况下直接修改成0会导致动画不会消失,但是没有效果。
0x11B 在闪电风暴下的持续时间,这个和瘟疫类似,填上了时间后就会持续掉血,但是不会有动画
0x11C 瘟疫的施放者,一个4字节的值,这里填该单位节点地址,AA BB CC,地址是CCBBAA,得倒过来用。
0x120 这个值暂时没发现什么用途
0x121 寄生虫 0以上的值代表寄生虫状态,不是生2个小虫子那个寄生虫,是得到对方单位视野的那个技能
0x122 计数器周期 暂时没发现什么用途
0x123 类似于上面的寄生虫,0以上的值代表致盲状态
0x124 大漩涡计数器。。 不知道什么意思
0x125 未知
0x126 酸性孢子的数量 就是Zerg Devourer(吞噬者) 喷对方单位身上的那个东西。最大255。。255的话cd长的不能再长。。
0x127 以下9个的意思是,酸性孢子一层的持续时间,二层的持续时间,以此类推


注以上所有0x1xx 请减去8,不要问我为什么,我也不知道,只是减去8才对应正确的选项。。
作者: castelu    时间: 2013-8-28 06:31
标题: Re:技术资料单位节点
此代码是我与楼主共同开发的,Actions.lst修改方法与楼主相同.                              
条件:                              
Deaths(P10, Exactly, 2, 0);                              
触发:                              
Comment("H>P60@00Pn`LEh_i?XX7Q<1e2[P10000Gh?47<?nb5HfR4@T23J;A2@89Ol0000fSE@T23j==831iP8nSHJ8LU40RlSgfA_9mmXKdXGAM@]ZEkR`fd`0om3[:fHnR`QV=XU<90QV?X]@26HfRE@T36HnRdP4ISJ9C2@:ISj;D0aV=XUD90hnRdL@ISj;SYYbD@1V?X]G63J9A2@@?XY76fHfRD`T58C0ISJ9E2@FM0aV3kK0ISJ9A2@Hj`V@ISK7A2@HoolnRdlD=XeD910fRD`T85:jX41<090fSD`T38]738G0M1:;18FlFU40QL1d1cJ9A2@Pj`Tfad@T8612C01XAd9<06S`Dd@0`ej;DAB;NA29?9E`:500RdklljAQ`l=A", 0, 255, 0, 1);                              
                              
Comment("T5HfRg@T28GfMA1ZEkR`fd`0om0c`5k2202@Rd@T33j;3JjDD02930IN`PP0", 0, 4, 0, 1);??这里设置了插件编号为4                              
Comment("", 5431328, 49, 0, 255); 5431328是永久内存的地址,49是星际内置触发[ModifyUnitHitPoints]的编号                              
==以上是安装代码,不可以重复执行,否则会Crash,可以考虑让条件无法满足==========================================                              
用法:                              
Comment("", 5280942, 8192, 0, 3);??5280942 是一个固定地址,用来设置写入的值.这里设置HP要乘256,实际是设置单位的HP为32.                              
ModifyUnitHitPoints(All, AnyUnit, All Players, Anywhere, 8, 4);??8是相对单位节点的地址偏移,正好指向单位HP,4是功能编号,如果编号为0,则是把HP设置为8%,                                
                              
                              
特别注意, 此代码经过测试可以使用,但安装代码重复执行会导致游戏崩溃,这只是一个半成品有待完善,因此功能特别稀少,但它是与原框架整合在一起的,我会抽空继续让它更加人性化,不过大家已经可以自己随意发挥,只要是合法的UnitNode(我暂且译为"单位节点")数据,就可以写入进去.                              
采矿为1的框架                              
Comment("H>P@0@00Pn`LEh_i?XX7Q<1e2[P10000Gh?47<?nb5HfR4@T23J;A2@89Ol0000fSE@T23j==831iP8nSHJ8LU40RlSgfA_9mmXKdXGAM@]ZEkR`fd`0om3[:fHnR`QV=XU<90QV?X]@26HfRE@T36HnRdP4ISJ9C2@:ISj;D0aV=XUD90hnRdL@ISj;SYYbD@1V?X]G63J9A2@@?XY76fHfRD`T58C0ISJ9E2@FM0aV3kK0ISJ9A2@Hj`V@ISK7A2@HoolnRdlD=XeD910fRD`T85:jX41<090fSD`T38]758G0OAGgd42;18FlFU40QL1d1cJ9A2@Pj`Tfad@T8612C02=A`B9A2@TJ4M2C01Xl5=40<=NRgTDRCBmL2Q@08]i48]>o?>THL?<c<c<c<?<", 0, 0, 22, 0, 1);                              
Comment("", 0, 5431319, 49, 0, 22);                              
Comment("EX]d90R5mWDAJUN@^;3KC03od3?0GY32202;A2@<RdP8Re04R`1Xa49<08G9O@KgdD4350IPSC`6DX_dljAJHL?<c<c<c<c<c<c<c<c<c<c3", 0, 0, 23, 0, 1);                              
Comment("", 0, 5280942, 2, 0, 3);                              
Comment("", 0, 5253428, 5431319, 0, 3);                              
                              
                              
                              
___________________________________________________________________________________________________________________                              

  1. Comment("H>P@0@00Pn`LEh_i?XX7Q<1e2[P10000Gh?47<?nb5HfR4@T23J;A2@89Ol0000fSE@T23j==831iP8nSHJ8LU40RlSgfA_9mmXKdXGAM@]ZEkR`fd`0om3[:fHnR`QV=XU<90QV?X]@26HfRE@T36HnRdP4ISJ9C2@:ISj;D0aV=XUD90hnRdL@ISj;SYYbD@1V?X]G63J9A2@@?XY76fHfRD`T58C0ISJ9E2@FM0aV3kK0ISJ9A2@Hj`V@ISK7A2@HoolnRdlD=XeD910fRD`T85:jX41<090fSD`T38]758G0OAGgd42;18FlFU40QL1d1cJ9A2@Pj`Tfad@T8612C02=A`B9A2@TJ4M2C01Xl5=40<=NRgTDRCBmL2Q@08]i48]>o?>THL?<c<c<c<?<", 0, 5, 0, 1);

  2. Comment("", 5431319, 49, 0, 5);
复制代码

                              
其中编号5可替换为其它空余的编号,此编号只用此一次,之后仍旧空闲.                              
                              
此功能安装后,无功能编号, 星际原始触发 ModifyUnitHitPoints 的功能将被替换, 参数 Percent 为正数或0维持原有功能,为负数时,表示插件编号.                              
ModifyUnitHitPoints 与 Comment 共用插件编号,即分配给 Comment 的编号不能再次分配给 ModifyUnitHitPoints 使用.                              
                              
Actions.lst:                              
                              
  1. Action ModifyUnitHitPoints(Count Count, Unit Unit, Player Owner, Location Where, Number Percent, Number arg1, Number arg2, Number arg3)                              
  2. {
  3. ????Action(Where, arg1, arg2, arg3, Owner, Percent, Unit, 49, Count, 20);                              
  4. }
复制代码
                  

加血插件
                              
  1. Comment("EX]d90R5mWDAJUN@^;3KC03od3?0GY32202;A2@<Ra31hPP3EPQBRliXa49<06P@ND40`lc<c<c<c<c<c<c<c<?<", 0, 5, 0, 1);
复制代码

                              
参数说明:                              
arg1写需要加或减的HP值,减法写负数,有保护,不用担心加出意外                              
                              
修改单位属性插件                 
                              
  1. Comment("EX]d90R5mWDAJUN@^;3KC03od3?0GY32202;A2@<RdP8Re04R`1Xa49<08G9O@KgdD4350IPSC`6DX_dljAJHL?<c<c<c<c<c<c<c<c<c<c3", 0, 6, 0, 1);
复制代码

                              
参数说明:                              
arg1: 属性的偏移量                              
arg2: 属性的数值,减法操作写负数.                              
arg3: 赋值写正数,加减写负数,绝对值表示操作数的长度,取值1~4,0无效                              
                              
变色插件
                              
  1. Comment("EX]d90R5mWDAJUN@^;3KC03od3?0GY32202;A2@<Rdh<Ra00D@Z0H@X?J<A2C033", 0, 7, 0, 1);
复制代码
                    
                              
参数说明:                              
arg1: 要改变的颜色值的步长,例如红色的兵,填1变蓝色,填2变绿色,颜色值始终在0~15之间变化,                              
简单的说,一共16个颜色循环,如果arg1写1,那么每执行一次单位的颜色值+1
作者: castelu    时间: 2013-8-28 06:35
标题: Re:技术资料单位节点
+0xDC - DWORD dwStatus
        00000001(0x1) - Is Completed
        00000010(0x2) - Is on ground? or is it is unit...
        00000100(0x4) - Is in air
        00001000(0x8) - Checked for disabled, if it is 00001000, then the unit is disabled(/unpowered?)
        00010000(0x10) - Checked for burrowing purposes, if it is 00010000, then the unit is burrowed
        00100000(0x20) - Unit is entering a building
        01000000(0x40) - unit is entering a transport
        10000000(0x80) -
      
        00000001(0x100) - Checked for invisible purposes, if it is 00000001, then the unit requires a detector?
        00000010(0x200) - checked for cloak?
        00000100(0x400) - deals with doodad states? if set, is disabled
        00001000(0x800) - Unit cloaking doesn't need energy decrease
        00010000(0x1000) - Unit is in unbreakable code section? Cannot receive orders
        00100000(0x2000) - Set by nobrkcodestart
        01000000(0x4000) -
        10000000(0x8000) - cannot attack if set

        00000001(0x10000)
        00000010(0x20000) - Is a Building?

        00000100(0x4000000) - Invincible

        00010000(0x10000000) - Speed upgrade
        00100000(0x20000000) - cooldown upgrade


+0xE0 - BYTE bResouceType
+0xE1 - BYTE bWireframeRandomizer
+0xE2 - BYTE bSecondaryOrderState
+0xE3 - BYTE bUnknown_E3_Counter_Down

+0xEC - CUNIT* CurrentBuildUnit

UNION
WORD/CUNIT
+0xF8 - WORD wRallyX
+0xFA - WORD wRallyY
+0xFC - CUNIT* RallyUnit
CUNIT
+0xF8 - CUNIT* PreviousPsiProvider
+0xFC - CUNIT* NextPsiProvider
+0x100 - DWORD dwPath_Unknown

+0x106 - BYTE bUnused_106
+0x107 - BYTE bIsBeingHealed
+0x108 - WORD wX_Contours_1_Unknown
+0x10A - WORD wY_Contours_1_Unknown
+0x10C - WORD wX_Contours_2_Unknown
+0x10E - WORD wY_Contours_2_Unknown
+0x110 - WORD wRemoveTimer
        Hallucination, DSwarm, DWeb, Broodling
+0x112 - WORD wDMatrixDamage
+0x114 - BYTE bDMatrixTimer
+0x115 - BYTE bStimTimer
+0x116 - BYTE bEnsnareTimer
+0x117 - BTYE bLockdownTimer
+0x118 - BYTE bIrradiateTimer
+0x119 - BYTE bStatisTimer
+0x11A - BYTE bPlagueTimer
+0x11B - BYTE bIsUnderStorm
        Used to tell if a unit is under psi storm
+0x11C - CUNIT* IrradiatedBy
+0x120 - BYTE bIrradiatePlayerID
+0x121 - BYTE bParasiteFlags
        Each bit corrisponds to the player who has parasited this unit
+0x122 - BYTE bCycleCounter
        Runs updates 2 times per sec(about)
+0x123 - BYTE bIsBlind
+0x124 - BYTE bMaelstromCounter
+0x125 - bUnknown_Unreferenced
+0x126 - BYTE bAcidSporeCount
+0x127 - BYTE bAcidSpore1Time
+0x128 - BYTE bAcidSpore2Time
+0x129 - BYTE bAcidSpore3Time
+0x12A - BYTE bAcidSpore4Time
+0x12B - BYTE bAcidSpore5Time
+0x12C - BYTE bAcidSpore6Time
+0x12D - BYTE bAcidSpore7Time
+0x12E - BYTE bAcidSpore8Time
+0x12F - BYTE bAcidSpore9Time
+0x130 - WORD w3by3OffsetIndex
+0x132 - WORD wUnused_1325a
+0x134 - DWORD dwUnknown_134_CUNIT_AI
+0x138 - WORD wAirStrength(see equation below, 1 if has no air weapon but has a ground)
+0x13A - WORD wGroundStrength(see equation below, 1 if has no ground weapon but has an air)
+0x13C - DWORD dwTableID_Unknown_1
+0x140 - DWORD dwTableID_Unknown_2
+0x144 - DWORD dwTableID_Unknown_3
+0x148 - DWORD dwTableID_Unknown_4
+0x14C - BYTE bRepulse_Unknown_1
+0x14D - BYTE bRepulse_Unknown_2
+0x14E - BYTE bDriftPosX(mapsizex/1.5 max)
+0x14F - BYTE bDriftPosY(mapsizey/1.5 max)

CSPRITE STRUCT
+0x8 - WORD wSpriteID
+0xE - BYTE bFlags_E
        0x20 - ?

CIMAGE

CORDER

CWEAPON
+0x0 - CWEAPON* Previous
+0x4 - CWEAPON* Next
+0x8 - DWORD dwUnknown
+0xC - CSPRITE* Sprite
+0x58 - WORD wTargetGroundX
+0x5A - WORD wTargetGroundY
+0x5C - CUNIT* TargetUnit
+0x60 - BYTE bWeaponID

+0x63 - BYTE bBounceCount
+0x64 - CUNIT* AttackingUnit

CPLAYER
+0x0 - BYTE bPlayerType
        1 - Computer
        2 - Human
        3 - Rescuable
        7 - Neutral
        10 - Human Defeated(Left)
        11 - Computer Defeated(Left)
+0x1 - BYTE bPlayerRace
+0x2 - BYTE bPlayerForce
+0x3 - char[23] szName
+0x1C - dwPlayerNumber(+1)?
+0x20 - dwUnknown

round(
squareroot
((integermath)
        (range/cooldown)*factor*damage amount
        +
        (((factor*damage*2048)/coolodwn)*total_hpshield)/256
}
*
7.58
}


/range*factor*damage   8*factor*damage*hpshield\
|------------------- + ------------------------  | ^ .5
\       cooldown             cooldown          /


factor*damage
------------- * (range + 8*hpshield)    ^ .5   * 7.58 toINT
   cooldown


                                ARMOR TABLE - 1.15               

                Independant                Small                        Medium                        Large      
Independant        0 - 515b90                0 - 515b94                0 - 515b98                0 - 515b9c
Explosive        0 - 515ba4                50%(128) - 515ba8        75%(192) - 515bac        100%(256) - 515bb0
Concussive        0 - 515bb8                100%(256) - 515bbc        50%(128) - 515bc0        25%(64) - 515bc4
Normal                0 - 515bcc                100%(256) - 515bd0        100%(256) - 515bd4        100%(256) - 515bd8
Ignore Armor        0 - 515be0                100%(256) - 515be4        100%(256) - 515be8        100%(256) - 515bec



EMP = Inner Splash controls radius of effect



使用方法
Comment("注释", 按钮个数, 选取单位所生成的数值, 0, 字符串ID, 6);



按钮模板自己写的。~
Comment("", 0, ^1, ^2, 0, 3);
作者: castelu    时间: 2013-8-28 06:36
标题: Re:技术资料单位节点
用于大量的写入数据。上文所提的自己写的按钮模板也是这个附件的代码。下面是简要的使用方法。字符1为写入地址。字符2为写入数据。代码如果不够请自己在模板上补"0"
Comment("EH_\Pn`8EUN;nNPC0000Eg9YM6E@LVmSIG=cCFE]Kg9i06BQ<00008]038]`7:goL0PnoaEPdDh0RDGhj0X0001X0PA8D0HP:c40SdGl^0aUI02;MaB;Ca2;43?0IX]760noA4820lH3`X]G28TARD44GkP10000GX_UGL>@T933", 0, 0, 6, 0, 1);

这代码是以SF来发布的。在发布的时候SMC还没出来所以你说的正常。我发现没少也正常。
代码如果不够请补"0"详细请看代码提示或找条写好的参照谢谢支持。

本贴出于个人的技术资料库并没有整理。大家请见谅。

EUD_abcd.rar

3 KB, 下载次数: 2, 下载积分: 水晶 -2 克






欢迎光临 中国星际RPG联盟 (http://www.scrpg.net/) Powered by Discuz! X3.1