c326679a 发表于 2021-10-22 03:30:23

學習中的XS(腳本)函數

小弟正在學習XS腳本函數~發現這方面資源比較匱乏~但真的弄懂(儘管只是一點點)也能大大減少在玩地圖編輯器時一些超級麻煩的重複設定。大大增加作品的品質與節省作者的時間。所以會把一些使用上的案例放上來給大家參考,至於能不能悟道跟看懂就看各位了~因為我也還在摸索

效果=所有玩家女村民的所有工作狀態=英雄
所有人女村民 所有工作狀態發光
void TestEA(){
xsEffectAmount(0,293,40,1);
xsEffectAmount(0,212,40,1);
xsEffectAmount(0,214,40,1);
xsEffectAmount(0,57,40,1);
xsEffectAmount(0,354,40,1);
xsEffectAmount(0,216,40,1);
xsEffectAmount(0,222,40,1);
xsEffectAmount(0,581,40,1);}

void TestEB(){
xsEffectAmount(0,220,40,1);
xsEffectAmount(0,218,40,1);
xsEffectAmount(0,590,40,1);
}


xsEffectAmount(函數類型,單位編號,函數類型中要修改的屬性,修改值);
函數類型 0 =基礎屬性修改

單位編號 N = 各種單位編號(以上述例子就有220.218.590....等等)
單位編號可以用精靈編輯器查詢,更簡單的方法可以用"效果>生產單位 取得某單位與某建築物的ID"

函數類型中要修改的屬性 40=英雄效果

修改值 1=英雄效果開啟 0=沒有英雄效果...等等

指定玩家,(其實標準是 (函數類型,單位編號,函數類型中要修改的屬性,修改值,指定玩家); 如果沒有此數則默認所有玩家

大家可以看到~這樣修改的好處是只要一個狀態+2個效果(腳本呼叫) 就可以把一個超複雜且重複性高的工作完成
(這在編輯器中可以"硬完成"慢慢用觸發+效果>修改屬性 改出來,但太麻煩了)

然後這是最基礎的應用~也不用外掛腳本直接在遊戲中的效果>呼叫腳本就可以達成
只是你一個設定要多幾個"效果呼叫腳本"
因為"呼叫腳本"這個效果 有字元限制~(也就是你不能寫幾千字塞進去)必須切開

像我之前的劇本有一些都用"硬堆疊"弄得超麻煩因為一個效果要做1-7P
但現在有了這種方式工作量減半~
最常見的在於
統一修改玩家的建築物UI、科技UI、建築物屬性、單位屬性....等等
這些很重複的東西只要弄懂xs 也不用學外掛腳本 幾句話就把整個遊戲設定好了
(而且遊戲會因為觸發少反而順暢) 也不會因為精靈編輯器 在未來更新後MOD壞掉

只需要用"腳本呼叫"就可以把一堆事情解決了~
當然一些比較複雜的操作邏輯有時用觸發會更方便(因為我自己也還沒完全弄懂腳本)

這個文章留在這裡~有其他的再貢獻(樓下有腳本示範)

c326679a 发表于 2021-10-22 03:40:32

本帖最后由 c326679a 于 2021-10-22 03:42 编辑

2= 開啟或關閉單位 83=村民 124=男石礦工 125=憎呂 0=關閉單位 cAttributeEnable=開啟單位
void SA(){

xsEffectAmount(2, 83, 0, 0);

xsEffectAmount(2, 124, cAttributeEnable, 0);

xsEffectAmount(2, 125, cAttributeEnable, 0);

}

修改屬性 124與125單位的 生產位置(109) 與 按鈕位置(1)and(2)<div>void SB(){</div><div>xsEffectAmount(0, 124, 42, 109);</div><div>xsEffectAmount(0, 124, 43, 1);</div><div>xsEffectAmount(0, 125, 42, 109);</div><div>xsEffectAmount(0, 125, 43, 2);</div><div>}</div>


修改屬性 109(成品TC 血量=500 駐紮單位=5) 621(地基TC 血量=500 建設時間=60)
<div>void S109C(){</div><div>xsEffectAmount(0, 109, 0, 500);</div><div>xsEffectAmount(0, 109, 2, 5);</div><div>xsEffectAmount(0, 621, 0, 500);</div><div>xsEffectAmount(0, 621, 101, 60);</div><div>}</div><div></div>

這個我其實研究很久特別補充一下,希望大家有需要時可以用上~
在村民顯示的建築列中的TC其實不是109 而是TC地基621
同理有一些是顯示地基有一些是顯示成品 但在系統運作中 又都算地基

例如我設定關閉109號單位無法關閉 但關閉621單位就會把TC關閉
但是在"效果>啟用單位>你設定109他也能把TC關閉"
我猜是官方為了怕新手疑惑為啥TC關不掉所以把一些設定弄成"連鎖"方便大家
但如果用函數去寫~最好地基和成品都同時寫


cly806 发表于 2021-10-22 16:39:50

关于字数限制的可以通过工具实现突破255的,翔鹰对于xs的研究应该是国内外最深的,如果有想实现的效果可以问我,已经实现了很多触发做不了的效果,比如勃艮第葡萄园转换资源的那个,还有各种高级效果,欢迎找我

c326679a 发表于 2021-10-22 18:13:34

cly806 发表于 2021-10-22 16:39
关于字数限制的可以通过工具实现突破255的,翔鹰对于xs的研究应该是国内外最深的,如果有想实现的效果可以 ...
謝謝~旦我現在還在學習怎麼樣累加存取
例如每次完成科技+200食物成本 或者科技名顯示LV+N每次完成科技+1等級
https://ugc.aoe2.rocks/general/xs/constants/#9-resource 我參考的網站是這個
但我不會用"存取"~都是"靜態"~例如研發完科技後某科技成本+200~在系統上只會加一次而不會加第二次
不知道大大您能否貼個腳本給我參考?
例如 供給(716)研發完成 後可以後成本+200
條件:"科技狀態">研究完成時
效果:腳本>不會寫
效果:啟用科技 716

我實驗時是用cAttrAddFoodCost (16384) 的確有加食物的成本~旦只有加一次~
例如原本75 研發後+1000 那研發過後永遠都停留在1075
跟想像中一直跑循環上去不太一樣

cly806 发表于 2021-10-23 22:09:41

c326679a 发表于 2021-10-22 18:13
謝謝~旦我現在還在學習怎麼樣累加存取
例如每次完成科技+200食物成本 或者科技名顯示LV+N每次完成科技+1等 ...

首先你这个这样写
条件研究科技(或科技状态完成)
效果脚本
void gongji()
{xsEffectAmount(101,716,0,200,1);
xsEffectAmount(101,716,3,200,1);}
效果启用科技716
这个触发记得开循环,否则就只有一次了

c326679a 发表于 2021-10-25 07:30:53

我當初也是這樣想的

100(科技成本設定)與101(科技成本增加)
在DE版似乎不起作用~
並且16384~16387 也一樣,但如果是在
8(修改技術)時16384~16387可以發揮作用(對象物要先有該成本)
例如小弓沒有"石頭價格"需要"效果>修改屬性>石頭價格"有了以後才能觸發~
但科技卻沒辦法這樣操作~

例如:單位本身越買越貴等設計問題都很小
但是技術類的就常常遇到BUG...
例如我以為用8修改屬性+16384~16387修改成本就可以有用~
有用是有用但只發生一次(循環觸發)
那這就更讓我不解了
函數的確有觸發但並不是想像中的10(原始成本)+100(升級價格)+100+100
而是不斷重複10(原始成本)+100

cly806 发表于 2021-10-25 10:42:26

c326679a 发表于 2021-10-25 07:30
我當初也是這樣想的

100(科技成本設定)與101(科技成本增加)

反正科技价格叠加价格无限模式我没设置过,需要你去尝试探索

Dick 发表于 2021-10-31 14:38:48

c326679a 发表于 2021-10-25 07:30
我當初也是這樣想的

100(科技成本設定)與101(科技成本增加)


你可以用觸發變數記錄升級次數,在用xs計算新的成本。
例:

void techres(){
int num = xsTriggerVariable(10);   //提取變數10的數值
xsEffectAmount(8,67,0,(150+(100*num)),1);   //科技67的食物資源增加 (150+(100*num))
}




c326679a 发表于 2021-11-1 22:35:32

猛耶居然會通~我之前也用過這個腦迴路寫過但不知道是不是變數錯了不會通就放棄了
這次複製你的居然通了0.0太神~
受小弟一拜

c326679a 发表于 2021-11-1 22:38:38

其實我覺得這個應用技巧滿重要的~
例如我有一些設定研發某"精銳科技"=增加箭塔攻擊力=循環值
但成本不會增加導致後面大家經濟好的時候瘋狂把傷害點上去~
但有了這個就可以限制玩家瘋狂點攻擊力了或者爆農經濟後一次把傷害點高的問題
页: [1]
查看完整版本: 學習中的XS(腳本)函數