goddameit 發表於 2010-8-25 00:35:14

購 買 本 主 題 只 是 純 贊 助 , 你 不 購 買 也 可 以

腳 本 運 作 觀 念
讀 取 ( 運 轉 ) 方 向 先 由 左 而 右 再 由 上 而 下
還 會 依 照 數 學 規 則 , 先 乘 除 後 加 減
先 小 () 在 大 ()
範 例
(1 + (1 + ( 1 + 1)))
從 右 到 左



腳 本 固 定 的 格 式
分 2 類 ( 常 用 )
1. NPC
prontera,156,196,5<這邊是要按tab>script<這邊是要按tab>黑暗之王<這邊是要按tab>737,{
        mes "[黑暗之王]";
        mes "滅亡之天來了! 人類們,";
        mes "你們要緊張!!!!!";
        close;
}
prontera 是地圖名稱 可以用/where 取得

156 是x座標 可以用/where 取得

196 是y座標 可以用/where 取得

5 是 面對方向 建議多試幾次 就知道多少是面對哪個方向
黑暗之王 是 NPC的名稱
737 是外觀 (點我下載外觀表)

2. function
// - 隨時隨地打開倉庫
// - 沒有參數
function<這邊是要按tab>script<這邊是要按tab>F_CashStore<這邊是要按tab>{
        cutin "kafra_01",2;
        mes "[卡普拉 職員]";
        mes "您好, 我是卡普拉呼叫服務,";
        mes "按照你的邀請開啟倉庫了";
        close2;
        openstorage;
        cutin "",255;
        return;
}
F_CashStore 是這個函數的名稱


已有 141 人購買  本主題需向作者支付 50 積分 才能瀏覽 購買主題

goddameit 發表於 2010-8-25 00:35:59

[ 開 始 撰 寫 ]

腳 本 是 由 指 令 構 成 的
所 以 , 你 需 要 知 道 各 個 指 令 的 用 途
雖 然 每 個 開 機 檔 都 有 附 上 說 明 文 件 ( 資 料 夾 名 稱 : doc )
但 是 由 於 是 英 文
所 以 絕 大 多 數 的 人 都 看 不 懂
所 幸 , 有 位 神 人 , 中 文 化 指 令 說 明
Ea 所有函數講解 by 哆啦ˇ

再 來 你 腦 海 中 一 定 要 有 明 確 的 方 向
比 如 說
我 要 寫 個 告 示 牌 當 玩 家 點 他 的 時 候
他 會 顯 示 " 歡迎光臨 "一 開 始
固 定 格 式 先 打 好 ( 注意! { 和 } 在任何時候 都不建議省略 )
prontera,156,196,5<這邊是要按tab>script<這邊是要按tab>告示牌<這邊是要按tab>737,{

}
再 來
我 需 要 知 道 怎 顯 示 一 個 視 窗 如
http://i.imgur.com/N0g7utG.png
(http://goo.gl/YKXxln)
讓 我 們 進 去 doc\script_commands.txt 裡面
http://goddameit.sclub.com.tw/attachment.php?aid=2479&k=24638e5a8beec852e70352cb7b3bf2fb&t=1280922303&fid=9&nothumb=yes&sid=0feaFAqP3oEcsQtl8oxUk9zbMejAcD7pQlL3MzaWeeH%2F22I

找 到 專 門 用 來 顯 示 這 種 訊 息 的 語 法
mes "<string>";
至 於 為 什 麼 知 道 是 這 個
就 必 須 仰 賴 你 多 看 別 人 的 腳 本 來 得 知 了

然 後 依 據 中 文 說 明
http://goddameit.sclub.com.tw/attachment.php?aid=2480&k=424f772981622b0f57e155420416d121&t=1280922568&fid=9&nothumb=yes&sid=002evbu2AtKDVoAns3icZCvB7%2FItafSCspN2q0WSULWDZ%2Fo
我 們 知 道
mes "這裡面打的字,就會被如範例圖那樣,顯示出來";
這 裡 要 注 意
所 有 指 令 使 用 結 束 都 要 用 " ; " 作 結 尾

所 以
最 後 , 我 們 的 告 示 牌 腳 本 就 是 這 樣
prontera,156,196,5<這邊是要按tab>script<這邊是要按tab>告示牌<這邊是要按tab>737,{
mes "歡迎光臨";
close;
}
這 邊 補 充 一 個 事 情
你 可 能 會 在 其 他 人 腳 本 上 看 到
close; 後 面 接 個 end;
這 裡 告 訴 你
當 你 有 用 mes ""; 時 候 就 要 記 得 用 close; 作 結 尾
你 用 end; 是 關 閉 不 暸 訊 息 視 窗 的
而 當 你 用 close; 做 結 束 後
就 不 需 要 用 end; 了
還 有 一 個 類 似 的 指 令 是 close2;
這 後 面 再 提

goddameit 發表於 2010-8-25 00:36:33

[ 個 人 認 為 重 要 的 基 本 指 令 ]

顯 示 訊 息 視 窗
mes "<string>";

產 生 "下一頁" 的 按 鈕
next;

關 閉 訊 息 視 窗(mes)(select)(menu), 讓 玩 家 徹 底 結 束 NPC 執 行
close;

單 純 關 閉 訊 息 視 窗(mes)(select)(menu), 玩 家 其 實 還 有 繼 續 執 行 NPCclose2;

指 令 運 轉 到 此 就 結 束
end;

xxx(代表某些指令)
end;
yyy(代表某些指令)
yyy不會被執行

移 動 到 特 定 標 籤
goto <label>;xxx(代表某些指令)
goto Onhhh;
yyy(代表某些指令)
Onhhh:
zzz(代表某些指令)
你不會執行yyy這些指令 因為你移動到標籤Onhhh:
而Onhhh:
下面有zzz
所以會繼續執行zzz

製造出一個選單
使用方法是
"選單名稱1",移動到的標籤1(參考goto),"選單名稱2",移動到的標籤2,"選單名稱3",移動到的標籤3
menu "<option_text>",<target_label>{,"<option_text>",<target_label>,...};

讓你 輸入 文字 或是數字得框框
使用方法是
input <輸入的數字或文字要存成或存到哪個變數上>;
input(<variable>{,<min>{,<max>}})
(你可以添加以下範例去測試看看)

input @x;
mes @x;

取得身上特定物品的數量
countitem(item-id)if(countitem(501)<5)
{
mes "你身上的紅色藥水少於5";
}取得物品
getitem <item-id>,<amount>;//取得5瓶紅色藥水
getitem 501,5;刪除身上物品
delitem <item-id>,<amount>;//刪除5瓶紅色藥水
delitem 501,5;

goddameit 發表於 2010-8-25 00:36:56

[ 超 級 重 要 的 if & set ]

首 先 先 看
SET 數 值 , SET 使 用

正 確 使 用 IF
有 個 基 本 的 小 認 識
set 部 分
set 前墜(變數名稱)後標 , xxxx ;
前墜
@    人物帳號不紀錄變量 (這變數,當人物登出就會消失(關機時,人物也算是登出))

無    人物帳號紀錄變量 (這變數,即使人物登出,也不會消失)

$      伺服器紀錄變量 (這變數,即使關機,也不會消失)

$@伺服器不紀錄變量 (這變數,關機或使用@reloadscript 都會讓他消失)

.      NPC紀錄變量(類似$@但是他只有在你執行這個NPC時後才可以使用--->只存在這個NPC上的變數)

.@    NPC不紀錄變量 (NPC停止運轉(像是被end;了) 就會消失)

# 會記錄在帳號上的變數

## 會記錄在帳號上的變數(如果私服有分流,那就是分流上,都會共用的到(你可以想成線上遊戲要買的點數,就是這個))
後標
無 那這個變數用來存數字的
$ 這變數是用來存字串(文字)的

再 延 伸
有 所 謂 的 陣 列 ( array )( 前墜(陣列名稱)後標 )
所 謂 的 陣 列
就 是 把 好 幾 個 變 數 的 集 合 體
舉 例
$@x
$@x
$@x (n需小於128和大於等於0)
陣 列 通 常 是 用 在 資 料 間 有 關 係 的 時 候
比 如 說 都 是 用 來 存 取 腳 色 名 稱 的 陣 列
而 陣 列 常 常 都 配 合 迴 圈 使 用(點我)
因 為 數 據 彼 此 間
可 以 藉 由 的 不 同
做 串 接

陣 列 的 設 定 分 成 單 一 設 定
和 多 個 設 定
單 一 設 定 就 是 用 set 然 後 指 定 n

set $@x,1234;
或 是 一 次 多 個
setarray $@x,1,2,3,4;
上 面 可 以 一 次 就 設 定 好
$@x = 1
$@x = 2
$@x = 3
$@x = 4

有 些 類 型 不 能 用 陣 列
+==========+======+=======+
|VarType   | 一般 | 陣列 |
+==========+======+=======+
|$Str$   | OK!| OK!   |
+----------+------+-------+
|$@Str$    | OK!| OK!   |
+----------+------+-------+
|@Str$   | OK!| OK!   |
+----------+------+-------+
|#Str$   | OK!| FAIL! |
+----------+------+-------+
|Str$      | OK!| FAIL! |
+----------+------+-------+
|$Int      | OK!| OK!   |
+----------+------+-------+
|$@Int   | OK!| OK!   |
+----------+------+-------+
|@Int      | OK!| OK!   |
+----------+------+-------+
|#Int      | OK!| FAIL! |
+----------+------+-------+
|Int       | OK!| FAIL! |
+----------+------+-------+
|.Str$   | OK!| OK!   |
+----------+------+-------+
|.Int      | OK!| OK!   |
+----------+------+-------+
|.@Str$    | OK!| OK!   |
+----------+------+-------+
|.@Int   | OK!| OK!   |
+----------+------+-------+


從 mes ""; 告 訴 你 變 數 的 一 些 使 用 規 則
如 果 @x = 1
mes "@x";
他 會 顯 示 @x 而 非 1
但 如 果
mes @x;
他 就 會 顯 示 1

mes "0"+@x;
他 會 顯 示 01
再 多 一 點
mes "0"+@x+"1";
他 會 顯 示 011

補 充 :
清 除 變 數
範 例
set @x,0;
set @x$,"";

第 二 種 說 明

set 相關
變數的定義 .. <儲存位子><變數名稱><資料型態>
set .@i,0;
設變數 儲存位置 變數名稱 為 0
首先先說儲存位置
@   代表暫時存在玩家身上,當和切換腳色就會消失。
.@暫時存在NPC身上,對話結束才會消失。 ps.當碰到 end; close;就會不見
$    存在伺服器會一直存在。(永遠儲存在伺服器裡面)
$@ 伺服器暫時存在,關機後就消失。 ps. @reloadscript也會使$@消失
      直接存到玩家身上。
#    是角色永久變數
##是全部帳號永久變數 ps.## 以及 # 分流會共通、$ 分流不會共通




變數名稱
不能和函數重疊,還有不能加上特殊符號並且開頭不能為數字。

資料型態
$ -> 為文字
所以$就等於字串
後面沒有東西就是數字

例如
set .@i$,"abc";
在所有語言中..字串都必須用雙引號框""起來
反之(錯誤示範)
set .@i$,cba; 不會叫
只不過.@i$會變成0
因為 變數 cba = 0
       請反白上面
---以下有些例子
set .@i$,"abc"+.@i+ "cba";
Q:這樣有效嘛? A:有效。
mes .@i$;會顯示abc0cba
因為.@i你沒給他一個值,所以.@i==0
      請反白上面。
-
只要是沒給過值的變數
如.
變數 == mes顯示的文字
.@i$ == "null"
null 代表 .. "" 空字串
.@i == 0

---
運算符號

+ 如果在字串和字串運算的時候、會把兩個字串相連起來
   而在數字運算的時候、才會把兩個數字相加起來
   所以 "A" + 1 他會把他相連起來 變成 "A1"
    那如果改成 mes 1 + 1 + "A";
    mes 1 + 1 + "A"; => mes 2 + "A"; => mes "2A";請反白前面

四則運算 先乘除後加減,括號裡面先運算。
            ps.由左到右
所以 1 + 1 = 2
2 + A =2A
A + 1 + 1 = A+1= A1 + 1 = A11
而字串和數字不能運算、所以 如果 "A" - 1 會出錯

Q:mes "B" + (1 + 1); 會顯是什麼? A:B2 請反白前面
Q:mes "A" + "B"; 會顯是什麼? A: AB 請反白前面
Q:那為什麼mes "A" + 1 - 1; 會錯? A: () 請反白前面
Q:mes "A" + ( 1 - 2); 會顯是什麼? A: mes "A" + (1-2); => mes "A" + -1 => mes "A-1"; 請反白前面
Q:mes "A" + 1 * 3; 會顯是什麼? A: A3 請反白前面
Q:mes "A" + 1 * 2 + (3 - 1 + "B"); 會顯是什麼? A: A22B 請反白前面

% 代表求餘數
    5 / 2 = 2.5
    但是我們在要求餘數
    所以 5 / 2 = 2餘1
    可是腳本不知道你要2.5還是2..1
    所以跑出一個 %
    5%2 = 1
    那取整數?(不取餘數)
    (5 - ( 5 % 2 )) / 2 先把餘數減掉在去 除

Q:mes 10%7; 等於什麼? A: 3 請反白前面
Q:mes 100%96; 等於什麼? A: 4 請反白前面
小方法分享 ↓請反白↓
例如我們要求5 % 2的餘數
5 - 2 = 3 - 2 = 1 我們要求的數就是 1
如果換求10 % 7 的餘數
10 - 7 = 3 3不能再減了所以就是我們要的答案 3
               ↑請反白↑
稍微進階
% 通常用在判斷是不是倍數
例如:要判斷 .@a 是不是 300 的倍數
就會這樣用
if(.@a % 300 == 0){是倍數}else{不是倍數}
整除代表一定是他的倍數
5 / 5 = 1 ... 0 10 / 5 = 2 ... 0 整除的話才會是倍數


^ 在正常生活中常常會用到的次方、開根號。
   pow(2,3) = 2 的三次方 = 8,sqrt(4) = 4 的開根號 = 2
   pow() -> 次方
   sqrt() -> 開根號
   1^1 = 0 、 1^0 = 1 、 0^0 = 0 、 0^1 = 1
   相同為 0 、 相異為 1

---
角色的變數

指令
說明
Sex性別
Weight目前負重
MaxWeight最大負重
JobLevel職業等級
BaseExp基本經驗值
JobExp職業經驗值
NextBaseExp下次升級基本經驗值
NextJobExp下次升級職業經驗值
Hp目前HP
MaxHp最大HP
Sp目前SP
MaxSp最大SP
BaseJob職業編號,顯示直為職業編號,效果不明。
Manner結婚
Zeny目前Zeny
Upper轉生
Class職業
SkillPoint技能點數
BaseLevel基本等級
StatusPoint屬性點數


---
判斷式
判斷式有兩個
if(條件)指令
jump_zero(條件)標籤
if翻成中文叫做 如果

set .@i,5;
if( .@i == 5) 這是什麼意思?
如果.@i=5會執行下一階段命令
-

if( i == 0){ getitem 607,1; set i,1; }
如果沒領過 i 當然沒被設定所以會是 0
如果沒領過就執行裡面的內容
領過之後set i,1; 他就會改成 1 所以永遠不能再領了
-
以下是if常用到的符號

符號說明

!=不等於
>=大於等於
<=小於等於
>大於
<小於
&&以及(類似AND)

||或者

↑其實 .. == 、 != 、 >= .... 之類的
不一定要用在if() 裡面
也可以當作運算、 因該說、 他原本就是個運算
稍微進階
set .@b, 2 == 2; 這樣一來 .@b 會 = 1 、 因為他是正確的。
而如果說 set .@b, 2 != 2; 、 這樣.@b 會 = 0 、 因為他是錯誤的
如果運算是成立的會返回 1
如果運算是錯誤的會返回 0
-
countitem() 等於 檢查人物身上的某樣道具
Count = 數 、 item = 道具 、 CountItem = 數看看身上有幾個道具
假設我身上放2個天果
Q:mes countitem( 607);會顯示什麼? A: 2 請反白前面
Q:set .@i,countitem( 607 );
   mes .@i; 會顯示什麼? A: 2 請反白前面
-
== 和 != 和 < 和 > 和 <= 和 >= 也可以拿數字
所以只要記得 .. 判斷成功 .. 他會顯示 1 如果你說錯 .. 他會顯示 0

Q:那 mes 1==2; 會顯是什麼? A: 0 請反白前面
Q:mes 1 == 1; 呢? A: 1 請反白前面
Q:set .@i, 1 != 1;
   mes .@i; 會顯是什麼? A: 0 請反白前面

ps.只能用在數字
ps.字串不能運算!
ps.!= 不可以應用在 !> 或 !<


if簡略寫法
if( 1 ) => 會執行、 if( 0 )不會執行。
所以 if( @i ) 如果 @i 不是 0 、 就會執行
也就等於 if( @i != 0)

if( .@i != 0) 也可以寫成 if(.@i)
if( .@i == 0) 也可以寫成 if(!.@i)

想實驗的可以把下面代碼PO到腳本用用看 prontera,150,180,4      script      Goddameit#1      990,{
if(!@i){
         mes "0"; close;}
         mes "1";
         close;
}

goddameit 發表於 2010-8-25 00:37:43

[ 超 級 重 要 的 if & set ]

用 if 的 時 候 是 要 一 直 很 確 定 你 要 的 條 件
和 條 件 哪 來

例 如 本 篇 文 章(點)
http://goddameit.sclub.com.tw/attachment.php?aid=2481&k=fd4f37108eb4bf9bd178f11aaa0873b9&t=1280925854&fid=9&nothumb=yes&sid=898fgEy8inmtaBPhTOLnzVFodN0DFSok4CHmm8BtHq6Ejko
他 的 判 定 跟 精 練 值 有 關
所 以 它 需 要 想 辦 法 取 得 精 練 值
http://goddameit.sclub.com.tw/attachment.php?aid=2482&k=a1153dd0ea03de7027bcb3bc033d131d&t=1280925976&fid=9&nothumb=yes&sid=8672hbemhFqu6CQw%2FPZDAvjc8P3rkrgjy19b0Nwktw1%2B9iM

===========


(原文)
http://goddameit.sclub.com.tw/attachment.php?aid=2483&k=f2d06832704ff9f0e5ca872ec2cabadf&t=1280926201&fid=9&nothumb=yes&sid=8420GqdtHKSBu3tCOLpA7bOBDC5cRD02Ipuf98Mg%2FfdlxfQ
http://goddameit.sclub.com.tw/attachment.php?aid=2484&k=b370d55ac3ff62610c2d351aa8ce5eff&t=1280926201&fid=9&nothumb=yes&sid=8420GqdtHKSBu3tCOLpA7bOBDC5cRD02Ipuf98Mg%2FfdlxfQ
http://goddameit.sclub.com.tw/attachment.php?aid=2485&k=a94b6197fbf10ebfff39a33606e689a9&t=1280926201&fid=9&nothumb=yes&sid=8420GqdtHKSBu3tCOLpA7bOBDC5cRD02Ipuf98Mg%2FfdlxfQ

goddameit 發表於 2010-8-25 00:38:25

[ goto 再 延 伸 ]

前 文 提 到 goto 是 移 動 到 標 籤
那 如 果 要 移 動 到 某 個 NPC 的 某 個 標 籤 呢

doevent "NPC-name::Onxxxx";
donpcevent "NPC-name::Onxxxx";

2 者 差 異 是
前 者 需 要 <GID> 後 者 則 不 用 ( 後 者 的 GID 請 當 作 是 伺 服 器 )
[ RID ? GID ? ]

使 用 注 意 是
你 的 標 籤 一 定 是 On 開 頭

範 例
prontera,156,196,5<這邊是要按tab>]script<這邊是要按tab>黑暗之王<這邊是要按tab>737,{
      xxxx
      doevent "黑暗之王::Onxxxx";
      close;
}
prontera,157,196,5<這邊是要按tab>]script<這邊是要按tab>黑暗之王2<這邊是要按tab>737,{
Onxxx:
      mes "這段文字會顯示喔";
      close;
}

goddameit 發表於 2010-8-25 00:38:43

[ RID ? GID ? ]

原 來 解 釋 太 麻 煩
簡 單 說 就 是

某 個 數 字 代 表 某 個 東 西

像 是

http://goddameit.sclub.com.tw/attachment.php?aid=2486&k=167231c626e437952efb5cf9546732bc&t=1280926795&fid=9&nothumb=yes&sid=bfbeBc5GThJBVQistcjiLRz9yoDeKJi14LhIyNCpzPfm4Fg
http://goddameit.sclub.com.tw/attachment.php?aid=2487&k=3561fa354f51958316dec78018eab1e4&t=1280926795&fid=9&nothumb=yes&sid=bfbeBc5GThJBVQistcjiLRz9yoDeKJi14LhIyNCpzPfm4Fg

而 RID 和 GID 最 常 困 擾 著 人 的 就 是 出 現 這 個
http://goddameit.sclub.com.tw/attachment.php?aid=2488&k=c27caddf8bd25dcf049bfcec05915d06&t=1280927152&fid=9&nothumb=yes&sid=ae65%2Bagj2JiuJyOl0fe6rQSJBLchCLPNfC07vZTCspQcUjY

意 思 是
某 個 指 令 應 該 要 有 玩 家 來 執 行
像 是 如 果 你 在 npc 指 令 上
設 定 某 個 會 自 動 運 行 的 ( 即 使 沒 有 玩 家 啟 動 ) 指 令
但 是 又 出 現 需 要 玩 家 操 控 的 指 令
就 會 出 現 上 圖 的 錯 誤

範 例OnInit: mes "哈囉";又 或 是 像
unitwalk <GID>,<x>,<y>;
這 個 需 要 指 定 <GID> 的 指 令
如 果 你 沒 給 他
他 就 動 不 暸 嚕
至 於 怎 麼 給 <GID> or <RID> or <CID> or <AID>
就 需 要 使 用 一 些 腳 本 指 令
像 是
getcharid
可 以 提 供 <CharID> , <;PartyID> , <GuildID> , <AccountID>
至 於 這 些 做 什 麼 的
請 各 位 自 己 進 修 嚕

goddameit 發表於 2010-8-25 00:39:16

[ 標 籤 !? ]

goto 會 到 標 籤
menu 也 會 到 標 籤

標 籤 就 是 用 來 標 定 特 殊 位 置
已 讓 腳 本 運 轉 可 以 跳 來 跳 去 ( 參 見 goto 說 明 )

標 籤 規 則

不 可 特 殊 符 號 , 僅 限 英 文 和 數 字

至 於 字 數 ... 不 用 理 他 , 你 不 要 故 意 用 好 幾 千 億 就 對 了

先 系 統 介 紹 預 設 標 籤 ( 不 管 大 小 寫 )

當現在是**點**分時候,會自動執行(24小時制度)
(所以下午3點47分 你就該打 1547)
OnClock<hour><minute>:

當現在為幾分時候,會自動執行
OnMinute<minute>:

當現在為幾時,時候,會自動執行
OnHour<hour>:

當現在為星期n,x點y分時候,會自動執行
On<weekday><hour><minute>:

當現在為n月,x日會自動執行
OnDay<month><day>:

當你使用@reloadscript和開機時後,會自動執行
OnInit:

你重開機時後(應該說,你map-server連結到char-server時候),會自動執行
OnInterIfInit:

你重開機時後,會自動執行(但是如果你是關閉map-server在重開,就不會執行)
OnInterIfInitOnce:

小 心 GID 問 題 , 這 些 GID = 0 ( 伺服器 )
OnAgitStart: //攻城戰開打時候,會自動執行
OnAgitEnd: //攻城戰結束時候,會自動執行
OnAgitInit: //同OnInit: 不過是在攻城戰,才會自動執行
OnAgitStart2://SE開打時候,會自動執行
OnAgitEnd2: //SE結束時候,會自動執行
OnAgitInit2: //同OnInit: 不過是在SE,才會自動執行

OnPCLoginEvent: //玩家登入提升時候,才會自動執行
OnPCLogoutEvent: //玩家登出時候,才會自動執行
OnPCBaseLvUpEvent: //玩家職業等級提升時候,才會自動執行
OnPCJobLvUpEvent: //玩家技能等級提升時候,才會自動執行

OnPCDieEvent:
//玩家死亡時候,才會自動執行,會自動存入一個變數'killerrid',這變數代表殺你的人的<GID>

OnPCKillEvent:
//玩家殺玩家時候,才會自動執行,會自動存入一個變數'killedrid',這變數代表被你殺的人的<GID>

OnNPCKillEvent:
//玩家殺非玩家時候,才會自動執行,會自動存入一個變數'killedrid',這變數代表被你殺的東西的<GID>

OnPCLoadMapEvent: //當玩家登入地圖時候,才會執行
需要配何mapflag(地圖屬性) loadevent
意思是 如果你的地圖 沒有loadevent這個屬性
就不會執行 本事件

OnWhisperGlobal: //當你密語特定NPC時候,才會執行(圖)(注意 npc:CRO)
密語說的話,會分成3類
格式如下
Report#(<--用這分開)Killstealing#(<--用這分開)Lordalfa
然後系統會自動存入到變數裡面
@whispervar0$ = "Report"
@whispervar1$ = "KillStealing"
@whispervar2$ = "Lordalfa"

常見的殺人點數
就是用OnPCKillEvent:
set kill,kill+1;做成的

所 謂 自 動 執 行
就 是 當 你 滿 足 條 件 後
他 就 會 自 動 啟 動
然 後 你 就 會 繼 續 執 行
標 籤 下 面 的 指 令

goddameit 發表於 2010-8-25 00:39:35

[ 應 該 要 有 認 知 ][ Mapflag ]

EA Mapflag 清單
格 式
地圖名稱<這邊要按tab>mapflag<這邊要按tab>屬性名稱{<這邊要按tab>off}
({}內的可省,off代表關閉這項屬性)
要 注 意 是
不 可 以 把 mapflag 的 上 述 設 定 放 到 Npc 裡 面
( 這 是 錯 誤 動 作 )
你 要 把 它 放 在 Npc 的 外 面
http://goddameit.sclub.com.tw/attachment.php?aid=2489&k=1a246e3084452264146776c4667cd0b6&t=1280988099&fid=9&nothumb=yes&sid=2ea0mnR8OKr0fzhMuLMJBS%2FFmNiIN9rzjn5bS%2BPhtjoZrJI
一 些 常 見 的 地 圖 屬 性 問 題
打 怪 沒 數 字
http://goddameit.sclub.com.tw/attachment.php?aid=2490&k=d320d9738f1a3217c9f1602ec3208eb3&t=1280988493&fid=9&nothumb=yes&sid=b960%2BbHw4QnAJ1SGH1SQePmiRmQcoP2pSA5pJF7auovdnBY
這 是 因 為 gvg 模 式



想 要 讓 怪 物 不 掉 寶
noloot

讓玩家不能丟東西
nodrop

PK噴裝
nightmare



剩 下 的
就 自 己 翻 譯 嚕

goddameit 發表於 2010-8-25 00:39:54

[ 有 點 小 難 度 的 callfunc ]

Callfunc 腳本指令解說[基礎版本]


function 叫 做 函 數

函 數 的 正 規 解 釋 ---> (維基百科)

你 也 可 以 這 樣 想

他 就 是 指 令 ( 指 令 其 實 就 是 函 數 構 成 的 )

所 以

要 是 我 要 把 顯 示
mes "asdfghjkl;sdhvjeirjbsierjboietbjoirtbjmietbmskrbnseibneibjrtibjmritbjmeoitbnoirtbnoietbmiorgjbi3rpetb";

當 成 一 個 指 令 使 用

那 就 要 先

做 好 固 定 格 式 ( 見 #1 )

function<這邊是要按tab>script<這邊是要按tab>xxx<這邊是要按tab>{
      mes "asdfghjkl;sdhvjeirjbsierjboietbjoirtbjmietbmskrbnseibneibjrtibjmritbjmeoitbnoirtbnoietbmiorgjbi3rpetb";
}

這 樣 我 以 後 每 當 需 要
mes "asdfghjkl;sdhvjeirjbsierjboietbjoirtbjmietbmskrbnseibneibjrtibjmritbjmeoitbnoirtbnoietbmiorgjbi3rpetb";

就 只 需 要
callfunc "xxx";
就 可 以 了

或 者
你 有 大 量 計 算
例 如 : 我 要 寫 個 計 算 腳 色 精 練 成 功 機 率
然 後 影 響 的 可 能 有 10
計 算 式 子 有 200 行

如 果 每 次 用 到 他 都 要 全 部 複 製 貼 上 也 是 可 以
但 是 實 在 太 浪 費 空 間 了
這 時 後 全 部 都 放 在 function 裡 面
要 用 的 時 候
只 需 要 用 callfunc 去 叫 他
不 是 方 便 多 ?

你 可 能 會 說 用 " doevent 也 可 以 啊 @@ "
這 是 沒 錯 的
對 一 般 scripter(腳本者) callfunc 實 在 是 可 以 用 其 他 的 什 麼 goto 替 代

但 是 callfunc 有 個 方 便 的 地 方 是 return; 這 指 令

例 如 :
function script ffff {
set @j,(超級複雜的計算過程);
return @j;
}

mes callfunc("ffff");
return 會 自 動 幫 你 返 回 答 案

範例:
function script j {
   return (1+1);
}
...
mes callfunc("j"); // 會顯示2喔~

如 果 要 用 goto 或 是 doevent
你 還 要 移 動 回 來
還 要 用 變 數 紀 錄 很 多 事 情

為 什 麼 callfunc 可 以 不 用 紀 錄 很 多 變 數
源 自 於 它 完 整 功 能

callfunc "xxx",1,2,3,4,5,6,7,8;
然 後
他 你 運 行 進 去 運 算 式 子 時 候
你 可 以 直 接 用
getarg(n) 來 代 表 每 個 數 子
所 以
上 面 範 例
getarg(0)=1
getarg(1)=2
getarg(2)=3
getarg(3)=4
getarg(4)=5
getarg(5)=6
getarg(6)=7
getarg(7)=8


而 且 如 果 想 更 加 簡 潔

還 可 以 把 function 做 成 可 放 入 npc 內 的 版 本
prontera,156,196,5<這邊是要按tab>]script<這邊是要按tab>告示牌<這邊是要按tab>737,{
         function xxx {         //   <---沒有 script 這東西
                  mes "dfkbmspitbmsptbmsrtbksmtbmse;rbmsetbmrtbnrltbmsetbms;etbmns";
         }
// 像在我需要 示範 怎麼 call 這 function
         xxx();
//如果你要用getarg?那就是 xxx(這邊放上之後getarg(0)的東西,...類推);

// 結束!!

//但是這種function 只能讓 有這個function 在的NPC使用

//如果你這function 又想如法炮製的 放置另一個

// 那最裡面的那個 要放在比外層的 還要上面 (根據讀取規則(#1))
}

另 外 就 是

函 數 裡 面 不 可 以 用 標 籤

goddameit 發表於 2012-2-25 17:49:20

[ select的基本變數選單 ]

介 紹 讓 選 單 的 選 項 隨 事 而 變

http://www.okayro.com/thread-229328-1-1.html

goddameit 發表於 2012-2-25 17:50:16

[ 沒 知 識 也 要 有 常 識 - array ]

http://www.okayro.com/thread-229345-1-1.html

goddameit 發表於 2012-6-21 23:44:19

[ & 和 | 的 運 算 ]

http://www.okayro.com/thread-234006-1-1.html
頁: [1]
查看完整版本: [ 撰 寫 腳 本 ]