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