查看“根号三工作笔记”的源代码
←
根号三工作笔记
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
<source lang="js" line> var mhp = 0; var ut = 0; foreach(ptr, epd : EUDLoopPlayerUnit(getcurpl()) ) { ut = wread(ptr + 0x64); mhp = dwread_epd(EPD(0x65FD00)+9808/4 + ut); dwwrite(ptr + 0x8, mhp); } </source> ====== =========================================== ====== eps代码对于import的变量: // module.eps: var x; const arr = EUDArray(10); // main.eps: import module as m; m.x++; // 错误! SetVariables(m.x, 1, list(Add)); // 正确! m.arr[0]++; // 正确! SetVariables(m.arr[0], 1, list(Add)); // 错误! ====== =========================================== ====== SCMD设置单位x的血量设为某个临界值以上就会导致:地图预置单位x在游戏中血量为残血。 这个临界值为2^24/100,即167772.16,即小于等于167772 + (40/256)就正常,大于等于167772 + (41/256)就残血 原因是SCMD默认enable UNIT+14的bit 1 (HP is valid FLAG),就会导致星际认为这个单位的血量是100%,在游戏开始后放置该单位使用的是CreateUnitWithProperties(..., hitpoints=100)而不是CreateUnit(...),导致在计算血量时overflow。 解决办法: (1) 使用Starforge编辑器。SF编辑器不会默认enable那个flag (2) 使用scmd保存完地图之后手动修改chk的UNIT section,把相关的flag都disable掉 注:eudplib的fixUnitData函数干的就是这件事情。所以任何地图经过euddraft编译后都不会有这个bug <nowiki>===========================================</nowiki> start location虽然属于单位,并在地图文件chk中出现在UNIX单位列表中,但是在游戏开始后只是用来摆放每个人的起始基地(如使用),但其本身不会被加载进CUnit链表占用单位数 <nowiki>===========================================</nowiki> <source lang="lua"> SetSwitch(1,1) </source>
返回至“
根号三工作笔记
”。
导航菜单
个人工具
登录
名字空间
页面
讨论
变体
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
分类目录
常见问题
工作笔记
制图工具
所有页面
工具
链入页面
相关更改
特殊页面
页面信息