OMOD脚本系统
动态编译的脚本文件,可以直接和程序内的变量交互、调用程序内的函数和子过程,直接改写能力技能、创建NPC、创建道具、写剧情等同儿戏,还有更高级的事情可以干。
动态编译的脚本文件,可以直接和程序内的变量交互、调用程序内的函数和子过程,直接改写能力技能、创建NPC、创建道具、写剧情等同儿戏,还有更高级的事情可以干。
程序启动时,会执行注册部分,要执行就要先编译(整个脚本文件),当某个脚本有问题,就会编译出错,并有出错信息。
在这里表现为,发现有出错信息,马上将其以文本框的方式输出,并马上停止程序。出错信息就是出问题的地方。
*OmodScriptReg RegArea(areaNorthTyris) return *OmodScriptRun txt "Hello World!" return
这份剧情分开两部分,主要用于介绍各种功能的用法
文件名可为:带少女回家_01.hsp
*OmodScriptReg RegArea(areaNorthTyris) RegFlag(1,0) RegCharaId(166) RegCharaRelation(cAlly) return *OmodScriptRun SetUserFlag(1,1) return
文件名可为:带少女回家_02.hsp
*OmodScriptReg
RegArea(areaHome)
RegFlag(1,1)
return
*OmodScriptRun
gosub *omod_RunScriptEv
SetUserFlag(1,2)
txtNew : txt "测试剧情完结!"
return
/* 剧情可以放在任何位置,一般扔到最后吧
{event_begin}
{actor_1} "少女,81"
{mc} "xp_shrine2.mid"
{pic} "bg9"
{txt}
两人终于来到家门口了...
{chat_1}
来这个山洞干嘛?不是回家吗?
{wait}
{se} "chime.wav"
{chat_1}
...别告诉我这就是你家啊~
{fade}
{event_end}
*/
*OmodScriptReg
RegArea(areaPalmia)
RegCharaRaceType("norland")
return
*OmodScriptRun
txtNew
txt "当前脚本="+om_currscript_file
txtNew
txt "结果数量="+OmThisScriptTempV1
return
*OmodScriptReg RegArea(areaNorthTyris) return *OmodScriptRun txtNew repeat maxFollower if cExist(cnt)!cAlive :continue txt " HP="+cHP(cnt) loop return
*OmodScriptReg RegKillTarge(170) RegKillTargeNum(2) return *OmodScriptRun txtNew txt "当前脚本="+om_currscript_file txt " 完成杀"+cid(OmThisScriptTempTC)+"的任务" txtNew return
*OmodScriptReg
RegArea(areaHome)
RegFlag(1,2)
return
*OmodScriptRun
f=get_freeAlly()
if f!false {
p=211
flt:initLv=cLevel(pc)*2/3+1:NoVoidLv=true:chara_create -1,p,cX(pc),cY(pc)
; 创建角色之后会将其ID赋值给 rc
cdata(headActSub, rc) = actThrowPotionGreater : cActHeal(rc)=spHealCritical
om_calcActIndex rc
gosub *add_ally
cBitMod cMetal,rc,true
flt:item_create -1,idGold,cX(pc),cY(pc),30000
SetUserFlag(1,3)
}
return
*OmodScriptReg RegArea(areaHome) return *OmodScriptRun mnName="深海填守府" gnTeam1="深海棲艦" txtNew txt "地图名="+mnName txtNew txt "队伍名="+gnTeam1 txtNew return
*OmodScriptReg
RegArea(areaHome)
return
*OmodScriptRun
txtEf coYellow:txt "输入想要在消息栏显示的文字?"
val=winPosX(290),winPosY(90),16,0,0:inputLog="":gosub *prompt_word
if (inputLog="")or(inputLog=" ") {
txt "输入不能为空。"
return
}
txt "「"+inputLog+"」"
return
*OmodScriptReg
RegArea(areaHome)
return
*OmodScriptRun
gosub *screen_draw
s="福音":file="bg_re12"
buff="天上掉下的馅饼"
listMax=0
atxAct "获得10000G",1
atxAct "获得100白金币",2
atxAct "免了",3
gosub *re_select
if rtval=3 {
return
} else:if rtval=1 {
flt:item_create -1,idGold,cX(pc),cY(pc),10000
} else:if rtval=2 {
flt:item_create -1,idPlat,cX(pc),cY(pc),100
}
return
*OmodScriptReg UpdateCreature(16) return *OmodScriptRun ; 暂时只支持更新talk的数据,每个都可以写9条,从0-8 OmScriptTalkTxtAggro(0)="再打我要还手了!" OmScriptTalkTxtAggro(1)="Don't touch me." OmScriptTalkTxtAggro(2)="再打我要叫人了!" OmScriptTalkTxtDead(0)="我有不死身的,你等着。" OmScriptTalkTxtDead(1)="I'll be back." OmScriptTalkTxtDead(2)="下次不要让我看见你!" OmScriptTalkTxtKilled(0)="我吃过夜粥的!" OmScriptTalkTxtKilled(1)="看招!" OmScriptTalkTxtKilled(2)="啊哒!" OmScriptTalkTxtKilled(3)="啊多!" return
来告诉我想要知道的?