有關卡普拉新增收費傳送
本帖最後由 ex00089 於 2018-1-4 09:20 PM 編輯想請問
我想在卡普拉選單裡面新增一個洞穴傳送
想把城市與洞穴分開收費與傳送
我分開後 選單 傳送服務 顯示傳送地區與金額都是正常 也能傳送
但是 選擇 洞穴服務 顯示傳送地區是 傳送服務 的城是傳送卻不是洞穴傳送的選單
傳送後只會扣錢 也不會傳送
內件卡普拉的菜單 我新增了一個(由於腳本內容長 有刪減一些掉)function script F_Kafra {
callfunc "F_ClearGarbage"; // Clear outdated, unused variables
.@welcome = getarg(0);
.@menu_num = getarg(1);
switch(.@welcome){
default:
case 0:
mes "[卡普拉 職員]";
mes "歡迎光臨!";
mes "卡普拉公司永遠為您提供最優質的服務!";
mes "您需要什麼服務呢?";
break;
case 1:
mes "[卡普拉 職員]";
mes "^666666歡迎...來到...";
mes "卡普拉公司...";
mes "我們...到死...都會繼續為您服務...^000000";
break;
case 2:
set @GID,getcharid(2);
mes "[卡普拉 職員]";
mes "歡迎光臨. ^ff0000" + GetGuildName(@GID) + "^000000 成員們.";
mes "卡普拉公司永遠在各位身邊為您服務!";
break;
case 3:
mes "[卡普拉 職員]";
mes "您看起來好像來自一個遙遠的地方, 是來研究我們的文化, 還是來觀光呢?";
mes "若兩者皆是, 為何不稍稍停留片刻?";
mes "在這野花香味撲鼻的國度, 相聚是緣.";
break;
case 4:
mes "[卡普拉 職員]";
mes "與許多的卡普拉服務點一樣,";
mes "我們會讓你感覺從未離開家鄉.";
break;
case 5:
break;
}
while (1) {
next;
deletearray @K_Menu0$,getarraysize(@K_Menu0$);
if (.@welcome == 2) {
// Guild Kafra Menu override (free Teleport, free Storage, Free Cart)
setarray @K_Menu0$,"使用倉庫","租用手推車","傳送服務","結束對話";
// setarray @K_Menu0$,"使用倉庫","租用手推車","結束對話";
} else {
switch(.@menu_num){
case 1: setarray @K_Menu0$,"儲存服務","使用倉庫","結束對話"; break;
default: setarray @K_Menu0$,"儲存服務","使用倉庫","傳送服務","洞穴傳送","租用手推車","查詢其他信息","結束對話"; break;
}
}
set .@menu$,"";
for (set .@i, 0; .@i < getarraysize(@K_Menu0$); set .@i, .@i + 1)
set .@menu$, .@menu$ + @K_Menu0$[.@i] + ":";
set .@j, select (.@menu$) - 1;
if (@K_Menu0$[.@j] == "儲存服務") {
return;
} else if (@K_Menu0$[.@j] == "使用倉庫") {
if(.@welcome == 2)
callfunc "F_KafStor",2,0,0;
else
callfunc "F_KafStor",0,getarg(3),.@welcome;
} else if (@K_Menu0$[.@j] == "傳送服務") {
if(.@menu_num != 4) callfunc "F_KafTele",.@welcome;
else {
mes "[卡普拉 職員]";
mes "由於卡普拉公司與秀髮茲發德共和國";
mes "簽訂了 ^FF0000《限制傳送服務協議》^000000";
mes "所以目前無法為您提供傳送服務!";
next;
mes "[卡普拉 職員]";
mes "如果您想移動到其他區域, 我們推薦您使用飛空艇服務!";
mes "感謝您的理解與支持.";
}
} else if (@K_Menu0$[.@j] == "洞穴傳送") {
if(.@menu_num != 4) callfunc "Fild",.@welcome;
} else if (@K_Menu0$[.@j] == "租用手推車") {
callfunc "F_KafCart",.@welcome,getarg(4);
} else if (@K_Menu0$[.@j] == "查詢其他信息") {
callfunc "F_KafInfo",getarg(2);
} else if (@K_Menu0$[.@j] == "結束對話"){
callfunc "F_KafEnd",.@welcome,0;
end;
} else if (@K_Menu0$[.@j] == "公會倉庫") {
callfunc "F_KafStor",1,0;
}
}
}
--------------------------------------------------------------------------------------------------------------
城市傳送 座標地點function script F_KafTele {
mes "[卡普拉 職員]";
mes "請告訴我您的目的地";
next;
set .@menu$, "";
for (set .@i, 0; .@i <= 6; set .@i, .@i + 1)
set .@menu$, .@menu$ + @wrpC$[.@i] + ":";
set .@j, select (.@menu$) - 1;
if (@wrpC$[.@j] == "結束對話")
{
mes "[卡普拉 職員]";
mes "如果想用傳送服務, 歡迎您隨時來找我!";
close2;
cutin "", 255;
end;
}
if(countitem(7060) > 0 && getarg(0) != 2) delitem 7060,1;
else {
if (Zeny<@wrpP[.@j]){
mes "[卡普拉 職員]";
mes "您沒有足夠的金幣來使用傳送服務,";
mes "傳送到 "+@wrpD$[.@j]+" 需要 "+@wrpP[.@j]+" Zeny.";
close2;
cutin "", 255;
end;
}
set Zeny, Zeny - @wrpP[.@j];
set RESRVPTS, RESRVPTS + (@wrpP[.@j]/16);
}
cutin "", 255;
if (@wrpD$[.@j] == "運河之都 艾爾帕蘭") warp "aldebaran",168,112;
else if (@wrpD$[.@j] == "魔法之都 吉芬") warp "geffen", 120, 39;
end;
}------------------------------------------------------------------------------------------------------------------------
城市傳送 收費function script F_KafSet {
cleararray @wrpC$,"",getarraysize(@wrpC$);
cleararray @wrpD$,"",getarraysize(@wrpD$);
cleararray @wrpP$,"",getarraysize(@wrpP$);
cleararray @viewpX,"",getarraysize(@viewpX);
cleararray @viewpY,"",getarraysize(@viewpY);
if (strnpcinfo(4) == "prontera") {
setarray @wrpD$, "運河之都 艾爾帕蘭", "魔法之都 吉芬";
setarray @wrpP, 2000, 3000;
if (VIP_SCRIPT && !vip_status(VIP_STATUS_ACTIVE)) {
for (set .@i, 0; .@i < getarraysize(@wrpD$); set .@i, .@i + 1)
setd "@wrpP["+.@i+"]",getd("@wrpP["+.@i+"]") * 2;
}
for (set .@i, 0; .@i < getarraysize(@wrpD$); set .@i, .@i + 1)
setd "@wrpC$["+.@i+"]",getd("@wrpD$["+.@i+"]")+" -> "+getd("@wrpP["+.@i+"]")+" z";
setd "@wrpC$["+getarraysize(@wrpC$)+"]","結束對話";
return;
}---------------------------------------------------------------------------------------------------------------------
洞穴傳送 座標地點function script Fild {
mes "[卡普拉 職員]";
mes "請告訴我您的目的地";
next;
set .@menu$, "";
for (set .@i, 0; .@i <= 20; set .@i, .@i + 1)
set .@menu$, .@menu$ + @wrpC$[.@i] + ":";
set .@j, select (.@menu$) - 1;
if (@wrpC$[.@j] == "結束對話")
{
mes "[卡普拉 職員]";
mes "如果想用傳送服務, 歡迎您隨時來找我!";
close2;
cutin "", 255;
end;
}
else {
if (Zeny<@wrpP[.@j]){
mes "[卡普拉 職員]";
mes "您沒有足夠的金幣來使用傳送服務,";
mes "傳送到 "+@wrpD$[.@j]+" 需要 "+@wrpP[.@j]+" Zeny.";
close2;
cutin "", 255;
end;
}
set Zeny, Zeny - @wrpP[.@j];
}
cutin "", 255;
if (@wrpD$[.@j] == "廢棄礦場") warp "mjolnir_02", 99, 351;
else if (@wrpD$[.@j] == "獸人村落") warp "gef_fild10", 52, 326;
end;
}-----------------------------------------------------------------------------------------------
洞穴傳送 收費function script Dun {
cleararray @wrpC$,"",getarraysize(@wrpC$);
cleararray @wrpD$,"",getarraysize(@wrpD$);
cleararray @wrpP$,"",getarraysize(@wrpP$);
cleararray @viewpX,"",getarraysize(@viewpX);
cleararray @viewpY,"",getarraysize(@viewpY);
if (strnpcinfo(4) == "prontera") {
setarray @wrpD$, "廢棄礦場","獸人村落";
setarray @wrpP, 600, 1200;
if (VIP_SCRIPT && !vip_status(VIP_STATUS_ACTIVE)) {
for (set .@i, 0; .@i < getarraysize(@wrpD$); set .@i, .@i + 1)
setd "@wrpP["+.@i+"]",getd("@wrpP["+.@i+"]") * 2;
}
for (set .@i, 0; .@i < getarraysize(@wrpD$); set .@i, .@i + 1)
setd "@wrpC$["+.@i+"]",getd("@wrpD$["+.@i+"]")+" -> "+getd("@wrpP["+.@i+"]")+" z";
setd "@wrpC$["+getarraysize(@wrpC$)+"]","結束對話";
return;
}
---------------------------------------------------------------------------------------------------------------------------------
卡普拉的選單我也新增了一個
fayon,100,115,4 script 卡普拉 職員::kaf_payon2 113,{
cutin "kafra_05",2;
callfunc "F_KafSet";
mes "[卡普拉 職員]";
mes "歡迎光臨, 熱情的冒險家~!";
mes "卡普拉服務永遠在您身邊!";
mes "您需要什麼服務呢?";
callfunc "F_Kafra",5,0,1,60,930;
savepoint "fayon",69,100,1,1;
callfunc "F_KafEnd",0,1,"斐揚 城內";
callfunc "Dun";請問該如何共存 也不會起衝突
挑個小錯誤,我還沒有仔細看是不是這個原因
(@K_Menu0$[.@j] == "洞穴服務")
可是你的選單內是"洞穴傳送"
字串判定會不相等
造成If else出問題 vincent800307 發表於 2017-12-28 11:00 PM static/image/common/back.gif
挑個小錯誤,我還沒有仔細看是不是這個原因
(@K_Menu0$[.@j] == "洞穴服務")
並不是..照片因為是別台電腦寫的
但如果字一樣都是
洞穴傳送 就是像我說的狀況是 傳送服務
ex00089 發表於 2017-12-29 08:32 AM static/image/common/back.gif
並不是..照片因為是別台電腦寫的
但如果字一樣都是
洞穴傳送 就是像我說的狀況是 傳送服務
其實你也可以考慮抓現成的參考,參考一下語法在做修改,也是一種方法.
逍遙天子 發表於 2017-12-31 05:25 AM static/image/common/back.gif
其實你也可以考慮抓現成的參考,參考一下語法在做修改,也是一種方法.
指的是原碼嗎?
如果是腳本
我是參考卡普拉的
ex00089 發表於 2017-12-31 08:45 AM static/image/common/back.gif
指的是原碼嗎?
如果是腳本
我是參考卡普拉的
腳本區也有傳送npc的腳本,多參考也不吃虧.
逍遙天子 發表於 2017-12-31 03:06 PM static/image/common/back.gif
腳本區也有傳送npc的腳本,多參考也不吃虧.
我自己是有寫一套收費的可以用
但我想用成每個地區的卡普拉收費制度不一樣
但我發現 如果我改function script F_KafZ {
mes "[卡普拉 職員]";
mes "請告訴我您的目的地";
next;
set .@menu$, "";
for (set .@i, 0; .@i <= 20; set .@i, .@i + 1)
set .@menu$, .@menu$ + @wrpC$[.@i] + ":";
set .@j, select (.@menu$) - 1;
if (@wrpC$[.@j] == "結束對話")
{
中的
set .@menu$, .@menu$ + @wrpC$[.@i] + ":";
改成其他
set .@menu$, .@menu$ + @wrpX$[.@i] + ":";
就會變成 空白的
逍遙天子 發表於 2017-12-31 05:25 AM static/image/common/back.gif
其實你也可以考慮抓現成的參考,參考一下語法在做修改,也是一種方法.
他要的是收費的
腳本區全都是免費傳送!
要不然只能固定價錢了
ickrc0204 發表於 2018-1-9 08:32 AM static/image/common/back.gif
他要的是收費的
腳本區全都是免費傳送!
早期的印象是有類似收費的腳本,真的要翻,可能會翻到眼花撩亂.
本帖最後由 z0202520 於 2018-1-10 05:21 PM 編輯
cleararray @wrpP$,"",getarraysize(@wrpP$);
setarray @wrpP, 600, 1200;
型態不太對吧
題外話,如果沒有特別需求盡量少用點setd getd
這語法會加深閱讀難度
再者你只有收費部分有對那些地圖做初始化動作
免費部分的選單地圖那些如果沒有做初始化
就會沿用你腳色上次使用過的樣子去呈現
頁:
[1]