很多人都或多或少的接觸過(guò)傳奇服務(wù)器端腳本文件,也很想自己制作一點(diǎn)腳本來(lái)試試,但又不敢亂碰生怕改壞一點(diǎn)東西造成不能運(yùn)行服務(wù)器端,其實(shí)“腳本語(yǔ)言“(我們暫且稱他為一種語(yǔ)言)和C語(yǔ)言等等程序語(yǔ)言比起來(lái)那真是不值得一提。看完我給大家寫(xiě)的這篇文章后,你就自己偷著樂(lè)吧...
可以說(shuō)傳奇服務(wù)器端所有的重點(diǎn)都集中在\mir200\envir\中,這里面記載著所有服務(wù)器要在游戲中表現(xiàn)的東西。在游戲中的npc信息也在其中,npcs.txt文件和merchant.txt文件中記載著npc的名稱、出現(xiàn)的地圖、坐標(biāo)、范圍和形象代碼。你要問(wèn)兩個(gè)記載的npc有什么不同?為什么不和在一起算了?我來(lái)告訴你,npcs.txt中記載的npc是對(duì)話型npc,在進(jìn)入游戲后,不能夠使用@reloadnpc刷新信息的npc。而merchant.txt是交易型和任務(wù)型npc,可以使用@reloadnpc刷新信息。但我也做過(guò)試驗(yàn),兩種npc互換后也可以使用,好像沒(méi)有太大的限制。
npcs.txt對(duì)應(yīng)的文件在.\npc_def\文件夾中,merchant.txt對(duì)應(yīng)的文件在.\market_def\文件夾中。你如果要添加npc的時(shí)候,要注意npc的文件名,例如你要?jiǎng)?chuàng)建一個(gè)超級(jí)商人的npc要他出現(xiàn)在比奇省330:330的坐標(biāo)。首先你要在.\market_def\文件夾中創(chuàng)建一個(gè)文本文件命名為“超級(jí)商人-0“(這里你可以使用英文,也可以使用中文,但后面的數(shù)字必須要是這個(gè)npc出現(xiàn)的地圖代碼!),然后把你寫(xiě)好的腳本粘貼在里面。再打開(kāi)merchant.txt文件,添加以下信息:
;調(diào)用的文件 地圖 坐標(biāo)x 坐標(biāo)y 范圍 人物代碼 刷新時(shí)間
超級(jí)商人 0 330 330 0 5 0
相信大家可以看懂吧,這里面的空格不要緊,沒(méi)有規(guī)定信息之間必須空幾格。人物代碼自己換吧,現(xiàn)在的npc有46種模樣。
和腳本的規(guī)則一樣,這兩個(gè)文件里面以;開(kāi)頭的行就當(dāng)作注釋部分不做編譯。
checkjob (Warr, Wizard, Taos) ;測(cè)試職業(yè)
checkgold (金幣數(shù)) ;測(cè)試金幣
checklevel (等級(jí)) ;測(cè)試等級(jí)
checkitem (物品名) (數(shù)量) ;測(cè)試物品及數(shù)量
give gold (金幣數(shù)) ;給錢(qián)
give (物品名) (數(shù)量) ;給物及數(shù)量
take gold (金幣數(shù)) ;拿走錢(qián)
take (物品名) (數(shù)量) ;拿走物及數(shù)量
checkpkpoint (pk值) ;測(cè)試PK值
checkluckypoint (幸運(yùn)值) ;幸運(yùn)值正值為好,負(fù)值為差
checkduraeva (物品名) (數(shù)值) ;一般測(cè)試礦物等物品的品質(zhì)
checkhum (地圖名) (數(shù)值) ;測(cè)試這個(gè)地圖的人數(shù)
checkmonmap (地圖名) (數(shù)值) ;測(cè)試這個(gè)地圖的怪物數(shù)
map (地圖名) ;移動(dòng)到這個(gè)地圖
mapmove (地圖名) (坐標(biāo)A) (坐標(biāo)B) ;移動(dòng)到這個(gè)地圖指定坐標(biāo)
monclear 地圖清除
close 關(guān)閉對(duì)話框
TimeRecall (設(shè)定時(shí)間值) ;分鐘,一般指進(jìn)入地圖時(shí)間限制
BreakTimeRecall ;中斷設(shè)定時(shí)間
ExchangeMap (地圖名) ;與指定地圖里的人交換位置
daytime sunset ;一天時(shí)間
checkbaggage ;測(cè)試背包滿沒(méi)
small (變量) (數(shù)值) ;測(cè)試變量是不是小于指定數(shù)值
large (變量) (數(shù)值) ;測(cè)試變量是不是大于指定數(shù)值
equal (變量) (數(shù)值) ;測(cè)試變量是不是等于指定數(shù)值
mov (變量) (數(shù)值) ;讓變量等于指定數(shù)值
sum (變量A) (變量B) ;A+B 注意,如果還要家第3個(gè)數(shù)直接換行寫(xiě)sum (變量C)
注:關(guān)于SUM的詳解
首先有MOV (變量X) 0 ;(變量X)清0
sum (變量A) (變量B) ;X=A+B
sum (變量C) ;X=X+C
movr (變量) (數(shù)值) ;隨機(jī)把指定數(shù)值以下的數(shù)(正數(shù))給變量
inc (變量) (數(shù)值) ;讓變量自動(dòng)加指定數(shù)值到變量
playdice (骰子數(shù)) @xxx ;玩骰子,跳轉(zhuǎn)到標(biāo)簽[@xxx]
random (隨機(jī)數(shù)) ;一般用在#IF語(yǔ)句中作為觸發(fā)#IF機(jī)率,有時(shí)隨機(jī)數(shù)=并列#IF語(yǔ)句數(shù)用于隨機(jī)多項(xiàng)選擇,既:
#IF RANDOM 3 #SAY() #ELSEACT
#IF RANDOM 3 #SAY() #ELSEACT
#IF RANDOM 3 #SAY() #ELSEACT
Check [條件數(shù)] 1 ;測(cè)試[條件數(shù)]觸發(fā)與否 1(觸發(fā))
SET [條件數(shù)] 1 ;設(shè)置[條件數(shù)]觸發(fā)
變量:
<$USERNAME> 當(dāng)前用戶名
<$GUILDWARFEE>行會(huì)戰(zhàn)金幣數(shù)
<$LORD>沙巴克行會(huì)頭名
<$OWNERGUILD>沙巴克行會(huì)名
<$UPGRADEWEAPONFEE>升級(jí)武器價(jià)格
<$USERWEAPON> 放在對(duì)話框里的武器名字
<$STR(變量)> 把變量轉(zhuǎn)換為字符型
第2節(jié)
現(xiàn)在步入正題,談?wù)勀_本的制作。
npc腳本分為兩種,一種是不做交易的npc,一種是與之交易的npc。我們先來(lái)講不做交易的npc
這類腳本的開(kāi)頭一般以[@main]開(kāi)頭,但并不是必須以他開(kāi)頭,main的英文意思是“主體,主要部分”的意思,所以用他這是個(gè)好習(xí)慣。
接著就是條件語(yǔ)句#if,和他對(duì)應(yīng)的#act,就是說(shuō)如果...那么...,我在之前的《腳本語(yǔ)言之不完全公略》一文中提到了一系列的測(cè)試語(yǔ)句。#if后面可以跟這個(gè)測(cè)試語(yǔ)句,比如測(cè)試金錢(qián)checkgold,測(cè)試級(jí)別checklevel等等,這些測(cè)試語(yǔ)句可以連用,挑選滿足這所有值的人。如果你想不要任何條件的話就把他留空,后面直接接#act.
接著就是#act,如果有人滿足了上述條件,那么...我們可以使用一些命令應(yīng)用于他,比如take拿走他身上的什么東西,mapmove把他移動(dòng)到什么地圖,set賦予他什么函數(shù)值等等。這些語(yǔ)句你也可以連著使用。后面也可以跟文字,那么就在傳奇里面顯示為對(duì)話。
下面是#ELSEACT,如果沒(méi)有滿足#if條件的,就不再運(yùn)行#act后面的指令,直接運(yùn)行#ELSEACT后面的指令。后面也可以跟文字,那么就在傳奇服務(wù)里面NPC腳本界面顯示為對(duì)話。
|
|