本帖最後由 jerrylong 於 2009-1-15 00:07 編輯
之前想到是利用sit or stand的方法來等待
但可能會在坐下的時候被怪打
因此我想到P大的巨集有利用do conf route_randomWalk 0
來讓打手不亂跑 而且沒更改到攻擊的主動性
因此應該可以站著不亂跑等牧師放聖母且怪物來照樣打
還請各位幫我看這方法可行?
automacro waitm {
location ra_fild09, yuno
status not 聖母之頌歌狀態, 加速術狀態
exclusive 1
run-once 1
call wait
}
automacro waits {
location ra_fild09, yuno
sp < 11%
exclusive 1
run-once 1
call wait
}
macro wait {
do conf route_randomWalk 0
release waitm
release waits
release nowaitm
release nowaits
}
automacro nowaitm {
location ra_fild09, yuno
status 聖母之頌歌狀態, 加速術狀態
exclusive 1
run-once 1
call nowait
}
automacro nowaits {
location ra_fild09, yuno
sp > 11%
exclusive 1
run-once 1
call nowait
}
macro nowait {
do conf route_randomWalk 2
release waitm
release waits
release nowaitm
release nowaits
}
修正好了 有看到未完成抱歉我中途改編輯
本帖最後由 jerrylong 於 2009-1-15 00:24 編輯
我也想過 但是利用座標變數 對我來說我程度還沒到
而我自己也有想過模擬過狀況
走路打怪>沒聖母>牧師唱聖母>打手往前衝>牧師密他叫回來>
打手往前衝又往回跑>牧師聖母成功>走路打怪...迴圈
而我停止走動的方法
走路打怪>沒聖母>打手停止走動原地發呆但會打怪(如同莫斯科定點掛打)>
牧師唱聖母>打手定點掛打>牧師聖母成功>走路打怪...迴圈
密打手回報自己座標方法 就怕打手往前衝又回頭會把怪給引過來
如果怪太多就比較危險
或是打手打了怪又引回來(弓手類型)
另外看了你剛新發的巨集教學文我才完全搞懂release以及run-once (0|1)之間的關係
我編輯前不是run-one 1而是timeout 90 (聖母讀秒) timeout 3 (SP讀秒)
timeout不用利用到release所以內文會變成
automacro waitm {
location ra_fild09, yuno
status not 聖母之頌歌狀態, 加速術狀態
timeout 90
exclusive 1
call wait
}
automacro waits {
location ra_fild09, yuno
sp < 11%
timeout 3
exclusive 1
call wait
}
macro wait {
do conf route_randomWalk 0
}
automacro nowaitm {
location ra_fild09, yuno
status 聖母之頌歌狀態, 加速術狀態
timeout 90
exclusive 1
call nowait
}
automacro nowaits {
location ra_fild09, yuno
sp > 11%
timeout 3
exclusive 1
call nowait
}
macro nowait {
do conf route_randomWalk 2
}
感覺好像都OK
或是兩者結合成為
automacro waitm {
location ra_fild09, yuno
status not 聖母之頌歌狀態, 加速術狀態
timeout 90
exclusive 1
run-once 1
call wait
}
automacro waits {
location ra_fild09, yuno
sp < 11%
timeout 3
exclusive 1
run-once 1
call wait
}
macro wait {
do conf route_randomWalk 0
release wait
release nowait
release nowaitm
release nowaits
}
automacro nowaitm {
location ra_fild09, yuno
status 聖母之頌歌狀態, 加速術狀態
timeout 90
exclusive 1
run-once 1
call nowait
}
automacro nowaits {
location ra_fild09, yuno
sp > 11%
timeout 3
exclusive 1
run-once 1
call nowait
}
macro nowait {
do conf route_randomWalk 2
release wait
release nowait
release nowaitm
release nowaits
}
當然程式語言是越短越好
還是兩者結合好?
好像是timeout比較好 不會一直不斷的RUN
本帖最後由 flystar9988 於 2009-1-15 00:42 編輯
聖母可以設定當打手在攻擊時施放如下...
partySkill 聖母之頌歌 {
# 對應tables/skills.txt,請打上技能中文名稱啟動此組功能,如:雙手劍攻擊速度增加
lvl 5
# 技能等級
maxCastTime 0
# 使用此技能所需最長時間(秒),施展成功即會繼續AI動作,不需等到延遲時間結束
minCastTime 0
# 使用此技能所需最短時間(秒),施展成功仍需等到延遲時間結束,才會繼續AI動作
hp
sp >0%
# HP,SP介於此設定值之間時使用此技能(例:大於>80%或小於<80%)
homunculus_hp
# 人工生命體 HP 範圍限制
homunculus_sp
# 人工生命體 SP 範圍限制
homunculus_dead
# 人工生命體死亡時
onAction
# 當 AI 為 ... 時
whenStatusActive
# 當處於某種狀態時
whenStatusInactive
# 當某種狀態失效時
whenFollowing
# 當跟隨時
spirit
# 氣彈數範圍
aggressives
# 被幾隻怪物同時攻擊使用此技能(0=不限制)
monsters
# 使用此技能對應之怪物名稱(空白=不限制),對應tables/monsters.txt,請打上怪物中文名稱並以逗號隔開
notMonsters
# 使用此技能不對應之怪物名稱(空白=不限制),對應tables/monsters.txt,請打上怪物中文名稱並以逗號隔
# 開
stopWhenHit 1 <=======視需求設定!
# 被攻擊時是否停止使用本技能(0=關、1=開)
inLockOnly
# 在指定地圖使用技能,地圖間請以逗號隔開(例如:nif_in,niflheim)
notWhileSitting 0
# 蹲坐時停止使用此技能
notInTown 1 <=======視需求設定!
# 是否不在城鎮使用
timeout 0
# 使用此技能之間隔時間(秒),如:等級10"雙手劍攻擊速度增加"時效是300秒
disabled 0
# 是否關閉本區塊技能
manualAI 0
# 是否在手動時才使用
target XXXXX
#隊友名
target_hp
target_isJob
target_isNotJob
target_whenStatusActive
# 當隊友處於某種狀態時
target_whenStatusInactive 聖母之頌歌狀態
# 當隊友不處於某種狀態時
target_aggressives 1
target_monsters
target_timeout
target_deltaHp
target_dead 0
inInventory
isSelfSkill 1
}
然後再搭配你寫的巨集...
automacro waitm {
location ra_fild09, yuno
status not 聖母之頌歌狀態, 加速術狀態
exclusive 1
run-once 1
call wait
}
macro wait {
do conf route_randomWalk 0
release all
}
automacro nowaitm {
location ra_fild09, yuno
status 聖母之頌歌狀態, 加速術狀態
run-once 1
call nowait
}
macro nowait {
do conf route_randomWalk 2
}
為了避免他反覆處於狀態時持續執行巨集!
於是將nowait下面的release刪掉,如此他便只執行一次!
而保留wait的release all !是為了等到狀態沒了!
觸發停止行走後重新生效所有的自動聚集!
便可在執行nowaitm巨集!
避開突發狀況不談...
這樣等待問題可以說是幾乎解決了!
然而結婚系統SP技能設定也大同小異!
本帖最後由 jerrylong 於 2009-1-15 02:53 編輯
關於config那邊的設定我不會有太大的問題
因為3 4年前搞正服外掛自己有用心學起來 而且有中文版不會有太大難題
我腳本內容也會盡量簡化 例如只打上
useSelf_skill 聖母之頌歌 {
lvl 10
whenStatusInactive 聖母之頌歌狀態
notWhileSitting 1
timeout 30
stopWhenHit 1
}
partySkill 聖母之頌歌 {
lvl 10
target_whenStatusInactive 聖母之頌歌狀態
target_timeout 0.5
}
英文不懂才又往上看翻譯
回到原題
沒聖母>跑macro wait>release all
有聖母>跑macro nowait
我有問題 在於有聖母就會跳過automacro waitm而跑macro nowait
(執行到status not 聖母之頌歌狀態, 加速術狀態 但不成立 所以
exclusive 1以及run-once 1以下等程式都不跑)<=觀念對嗎?
而跑完macro nowait之後
會因為automacro waitm是自動巨集而不斷的偵測你是不是"沒有"聖母 是這樣嗎?觀念對嗎?
如果是這樣我另外又想到
其實可以改成
automacro waitm {
location ra_fild09, yuno
status not 聖母之頌歌狀態, 加速術狀態
timeout 30
exclusive 1
call wait
}
macro wait {
do conf route_randomWalk 0
release nowait
}
automacro nowaitm {
location ra_fild09, yuno
status 聖母之頌歌狀態, 加速術狀態
run-once 1
call nowait
}
macro nowait {
do conf route_randomWalk 2
}
這樣他就不會不斷偵測 有沒有"沒有"聖母了 或許可以讓CPU不用太多資源?
並且取消了run-one 1用時間配合聖母時間剛好90秒 也只需要release nowait就足夠
而timeout其實也可以設小一點
以免有打手離開牧師畫面造成秒數錯判 例如設定成30秒
就算時間到重RUN一次也不影響走路停下來
我的模擬觀念如下:
人物一開始沒聖母>隨機走動0>重置偵測"有"聖母>牧師唱好聖母>但偵測"沒"聖母還要30秒>
跑偵測"有"聖母>只跑一次>隨機走動2>打怪直到沒聖母...迴圈
而每30秒會偵測一次你是不是"沒"聖母必須停止隨機走動