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
来告诉我想要知道的?