📄 npc_function.txt
字号:
//==============================================================================
// 汉化和修正 : FPE
// Jathena++ 论坛:http://www.foxofice.net/bbs
//==============================================================================
//卡普拉「空间传送」
//callfunc "kftransport",Place,Price[,Place,Price...],0;
// 1 普隆德拉
// 2 依斯鲁得岛
// 3 吉芬
// 4 裴扬
// 5 梦罗克
// 6 艾尔贝塔
// 7 兽人村落
// 8 艾尔帕兰
// 9 妙勒尼 废矿
// 10 克魔岛
// 11 发乐斯 灯塔岛
// 12 克魔岛发乐斯 灯塔岛
// 13 尤诺
// 14 准备1
// 15 准备2
// 16 准备3
function script kftransport {
setarray @placename$,
"中央之都-普隆德拉",
"卫星都市-依斯鲁德岛",
"魔法之都-吉芬",
"山岳之城-斐扬",
"沙漠之都-梦罗克",
"港口之都-艾尔贝塔",
"兽人村落",
"运河之都-艾尔帕兰",
"妙勒尼 废矿",
"克魔岛",
"发乐斯 灯塔岛",
"克魔岛发乐斯 灯塔岛",
"尤诺",
"准备1",
"准备2",
"准备3";
cleararray @place$,"",16;
for ( set @i,0; @i<16; set @i,@i+1 ) {
if ( getarg(@i*2)==0 ) break;
set @price[@i],getarg(@i*2+1);
set @place$[@i],@placename$[getarg(@i*2)-1] + " -> " + @price[@i] + " z";
}
//set @max,@i;
mes "[卡普拉 职员]";
mes "请选择目的地。";
next;
set @i,select(@place$[0],@place$[1],@place$[2],@place$[3],@place$[4],@place$[5],@place$[6],@place$[7]
,@place$[8],@place$[9],@place$[10],@place$[11],@place$[12],@place$[13],@place$[14],@place$[15],"取消")-1;
if ( @i==16 ) {
mes "[卡普拉 职员]";
mes "谢谢。";
mes "欢迎再来。";
goto L_kafraclose;
}
if ( Zeny<@price[@i] ) {
mes "[卡普拉 职员]";
mes "对不起,你没有足够金钱。";
goto L_kafraclose;
}
set Zeny,Zeny-@price[@i];
set KF_PIT,KF_PIT+(@price[@i]/10);
switch ( getarg(@i*2) ) {
case 1:
warp "prontera.gat",116,72;
break;
case 2:
warp "izlude.gat",91,105;
break;
case 3:
warp "geffen.gat",120,39;
break;
case 4:
warp "payon.gat",160,58;
break;
case 5:
warp "morocc.gat",156,46;
break;
case 6:
warp "alberta.gat",117,56;
break;
case 7:
warp "gef_fild10.gat",52,326;
break;
case 8:
warp "aldebaran.gat",143,110;
break;
case 9:
warp "mjolnir_02.gat",99,351;
break;
case 10:
warp "comodo.gat",209,143;
break;
case 11:
case 12:
warp "cmd_fild07.gat",127,134;
break;
case 13:
warp "yuno.gat",158,124;
break;
case 14:
warp "prontera.gat",116,72;
break;
case 15:
warp "prontera.gat",116,72;
break;
case 16:
warp "prontera.gat",116,72;
}
end;
L_kafraclose:
close2;
cutin "kafra_01",255;
end;
return;
}
//==============================================================================
//卡普拉「仓库」
//callfunc "kfstorage",Price;
function script kfstorage {
if ( basicskillcheck(0) && getskilllv(1)<6 ) {
mes "[卡普拉 职员]";
mes "很抱歉,您无法使用仓库服务,这至少需要职业等级6以上。";
goto L_kafraclose;
}
if ( Zeny<getarg(0) ) {
mes "[卡普拉 职员]";
mes "很抱歉,您的金钱不足。";
mes "这至少需要"+getarg(0)+"Zeny。";
goto L_kafraclose;
}
set Zeny,Zeny-getarg(0);
openstorage;
cutin "kafra_01",255;
close;
L_kafraclose:
close2;
cutin "kafra_01",255;
end;
return;
}
//==============================================================================
//卡普拉「手推车」
//callfunc "kfcart",Price;
function script kfcart {
if ( Class!=5 && Class!=10 && Class!=18 ) {
mes "[卡普拉 职员]";
mes "抱歉。";
mes "手推车是商人系列专用的服务。";
goto L_kafraclose;
}
if ( Cart ) {
mes "[卡普拉 职员]";
mes "您已经在使用手推车了。";
goto L_kafraclose;
}
mes "[卡普拉 职员]";
mes "租用手推车的费用是"+getarg(0)+"Zeny。";
mes "而且必须习得^777777手推车使用^000000技能";
mes "如果没有学习这个技能,只会浪费金钱。";
mes "要租用手推车吗?";
next;
if ( select("租用手推车","取消")==2 ) {
mes "[卡普拉 职员]";
mes "谢谢。";
mes "欢迎再来。";
goto L_kafraclose;
}
if (Zeny<getarg(0)) {
mes "[卡普拉 职员]";
mes "很抱歉,您的金钱不足。";
mes "租用手推车的费用是"+getarg(0)+"Zeny。";
goto L_kafraclose;
}
set Zeny,Zeny-getarg(0);
setcart;
L_kafraclose:
close2;
cutin "kafra_01",255;
end;
return;
}
//==============================================================================
//卡普拉「查询点数」
//callfunc "kfpoint";
function script kfpoint {
mes "[卡普拉 职员]";
mes strcharinfo(0) + " 先生/小姐";
mes "您共获得了" + KF_PIT + "点数。";
next;
mes "[卡普拉 职员]";
mes "卡普拉点数可以到卡普拉总公司换取礼品。";
mes "以后还请多多使用卡普拉服务。";
close2;
cutin "kafra_01",255;
end;
return;
}
//==============================================================================
//卡普拉「结束」
//callfunc "kfend";
function script kfend {
mes "[卡普拉 职员]";
mes "我们卡普拉服务会不断完善";
mes "以顾客为本作为目标";
mes "请顾客放心使用吧";
mes "我们定当竭尽所能做到最好。";
mes "欢迎再次使用卡普拉(股份)公司的服务。";
close2;
cutin "kafra_01",255;
end;
return;
}
//==============================================================================
//PVP指导员全部
//callfunc "pvpguide","SAVEMAP",X,Y;
function script pvpguide {
mes "[PVP指导员]";
mes "你好!!";
mes "我是这里的PVP指导员!";
next;
switch ( select("^3355ff「PVP」^000000是什么?","如何参加PVP?","PVP有什么规则?","储存当前位置","结束对话") ) {
case 1: mes "[PVP指导员]";
mes "PVP指的是:";
mes "「Player VS Player Mode」的缩写";
mes "也就是玩家之间可以互相打斗的模式。";
next;
mes "[PVP指导员]";
mes "如果想进入PVP场的话,";
mes "可以和我旁边的^3355FF守门人^000000对话";
next;
mes "[PVP指导员]";
mes "只有职业等级达到Lv31以上";
mes "才能进入PVP等候室。";
next;
mes "[PVP指导员]";
mes "PVP模式分2种:";
mes "一种是^777777梦魇模式";
mes "^000000一种是^777777溜溜候模式^000000。";
next;
mes "[PVP指导员]";
mes "^777777梦魇模式^000000和实战一样,";
mes "死后是会掉金钱和装备的。";
next;
mes "[PVP指导员]";
mes "进场之前请认真考虑。";
close;
case 2: mes "[PVP指导员]";
mes "和我旁边的「PVP守门人」对话,";
mes "并给他500 Zeny,";
mes "他就会带你到PVP等候室。";
next;
mes "[PVP指导员]";
mes "等候室的^777777梦魇模式^000000和^777777溜溜猴模式^000000是独立的。";
mes "里面各个区都会站着PVP指导员提示的。";
next;
mes "[PVP指导员]";
mes "简单来说,就是从Lv31开始";
mes "每10级划分一个房间。";
next;
mes "[PVP指导员]";
mes "每个负责人的头上都会写着等级范围。";
next;
mes "[PVP指导员]";
mes "和负责人对话,选择对应的地图进入PVP场地。";
mes "会出现^0000ff参加人数 / 人数上限^000000的字样。";
next;
mes "[PVP指导员]";
mes "还需注意一点:";
mes "PVP专用地图是不记录人物坐标的。";
close;
case 3: mes "[PVP指导员]";
mes "PVPモードに進入すると";
mes "画面右下にカウンターが";
mes "出てきますが、これは";
mes "現在ログインMAPでの";
mes "自分の順位 / MAP内人数 を";
next;
mes "[PVP指导员]";
mes "表す数値です。";
mes "PVPモードでのポイントは";
mes "PVPモードにのみ";
mes "適用されており、";
mes "初めに持っている";
next;
mes "[PVP指导员]";
mes "基本値は 5 です。";
mes "マップの中で対戦し";
mes "勝利した場合得られるポイントは";
mes "1 で、負けた場合";
mes "-5 ポイントとなります。";
next;
mes "[PVP指导员]";
mes "所持ポイントが";
mes "0 以下になった場合";
next;
mes "[PVP指导员]";
mes "PVPモードが解除され";
mes "外に出されます。";
mes "しかし数値が 0 以上の時";
mes "戦闘不能になった場合は";
mes "仲間や他のプレイヤーに";
next;
mes "[PVP指导员]";
mes "助けて貰い続行することが";
mes "できます。";
next;
mes "[PVP指导员]";
mes "プレイヤーとの対戦ルールは";
mes "モンスターとの戦闘ルールと";
mes "基本的には同じです。";
close;
case 4: savepoint getarg(0),getarg(1),getarg(2);
mes "[PVP指导员]";
mes "こちらでセーブできました。";
mes "ご利用ありがとうございます。";
close;
case 5: mes "[PVP指导员]";
mes "プレイヤー同士の真剣勝負を";
mes "味わえるPVPモード!";
mes "勇気溢れる皆様を";
mes "お待ちしております。";
close;
}
return;
}
//==============================================================================
//PVPドアマン全部
//callfunc "pvpdoor";
function script pvpdoor {
mes "[PVPドアマン]";
mes "PVP控え室にご案内する";
mes "PVPドアマンです。";
mes "PVPモードについての説明は";
mes "隣のガイドに";
mes "お問い合わせください。";
next;
switch ( select("^ff3355PVP ナイトメアモード^000000 控え室へ","^3355FFPVP ヨーヨーモード^000000 控え室へ","会話をやめる") ) {
case 1: mes "[PVPドアマン]";
mes "ナイトメアモードでは";
mes "ダンジョンと同じルールが";
mes "そのまま適用されており、";
mes "倒された場合は経験値を";
mes "失います。";
next;
mes "[PVPドアマン]";
mes "参加費は 500Zeny です。";
mes "ナイトメアモード控え室へ";
mes "移動されますか?";
next;
if ( select("移動","取り消し")==2 ) break;
if ( Zeny<500 || BaseLevel<31 ) goto LError;
set Zeny,Zeny-500;
warp "pvp_n_room",51,23;
end;
case 2: mes "[PVPドアマン]";
mes "参加費は 500Zeny です。";
mes "ヨーヨーモード控え室へ";
mes "移動されますか?";
next;
if ( select("移動","取り消し")==2 ) break;
if ( Zeny<500 || BaseLevel<31 ) goto LError;
set Zeny,Zeny-500;
warp "pvp_y_room",51,23;
end;
}
mes "[PVPドアマン]";
mes "プレイヤー同士の真剣勝負を";
mes "味わえるPVPモード!";
mes "勇気溢れる皆様を";
mes "お待ちしております。";
close;
LError:
mes "[PVP ドアマン]";
mes "お客様 !";
mes "Zenyが足りないか、基本レベルが";
mes "31になっていないようです。";
close;
return;
}
//==============================================================================
//町内限定アナウンス
//callfunc "townannounce","TEXT",op;
function script townannounce {
mapannounce "prontera.gat",getarg(0),getarg(1);
mapannounce "payon.gat",getarg(0),getarg(1);
mapannounce "alberta.gat",getarg(0),getarg(1);
mapannounce "geffen.gat",getarg(0),getarg(1);
mapannounce "morocc.gat",getarg(0),getarg(1);
mapannounce "aldebaran.gat",getarg(0),getarg(1);
mapannounce "izlude.gat",getarg(0),getarg(1);
mapannounce "yuno.gat",getarg(0),getarg(1);
mapannounce "comodo.gat",getarg(0),getarg(1);
mapannounce "amatsu.gat",getarg(0),getarg(1);
mapannounce "gonryun.gat",getarg(0),getarg(1);
mapannounce "umbala.gat",getarg(0),getarg(1);
mapannounce "niflheim.gat",getarg(0),getarg(1);
mapannounce "louyang.gat",getarg(0),getarg(1);
mapannounce "jawaii.gat",getarg(0),getarg(1);
mapannounce "einbech.gat",getarg(0),getarg(1);
mapannounce "einbroch.gat",getarg(0),getarg(1);
return;
}
//==============================================================================
//転職共通Script
//callfunc "jobchanger3","JOBNAME",JOBID,oJobID;
function script jobchanger3 {
mes "["+getarg(0)+"ギルド関係者]";
mes "こんにちは、";
mes "何をお手伝いしましょうか?";
next;
switch ( select(getarg(0)+"に転職",getarg(0)+"の転職条件は?","なんでもありません。") ) {
case 1: if ( Upper==1 ) {
mes "["+getarg(0)+"ギルド関係者]";
mes "あなたは転生されていますので";
mes "ここでは転職案内できません。";
close;
}
if ( Class==getarg(1) ) {
mes "["+getarg(0)+"ギルド関係者]";
mes "あなたは既に"+getarg(0);
mes "に転職しています。";
close;
}
if ( Class!=getarg(2) ) {
mes "["+getarg(0)+"ギルド関係者]";
mes "あなたは転職できません";
mes "転職条件を良く確かめてから";
mes "お願いします。";
close;
}
if ( JobLevel<40 ) {
mes "["+getarg(0)+"ギルド関係者]";
mes "JobLvが足りません。";
mes "Lvを上げてまたお越しください";
close;
}
if ( SkillPoint>0 ) {
mes "["+getarg(0)+"ギルド関係者]";
mes "スキルポイントを使い切ってから";
mes "また来てください。";
close;
}
mes "["+getarg(0)+"ギルド関係者]";
mes "あなたは、";
mes "転職の条件を満たしているようです";
mes getarg(0)+"に転職しますか?";
next;
if ( select("はい","いいえ")==1 ) {
unequip;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -