[RA] 副本 隊伍傳送問題
本帖最後由 Ceres8154 於 2016-11-24 12:49 AM 編輯==========================================
解決辦法:
請往下看XD
大大們所提出的都是不錯的想法,後面有問題的人可以都借鑒看看
==========================================
各位好,
小弟使用環境為
server端:Rathena SVN 23043
最近在撰寫副本時
遇到一個小問題,想請教各位大大
想法:
僅隊長付費
建立副本> 付費完成 >整個隊伍傳送
也就是說建立完副本之後,整個隊伍會直接傳送進副本內
隊伍其餘玩家不用透過NPC一個個點進去
執行結果:
付費,建立副本都沒問題,問題出在隊伍傳送部分,
目前僅有隊長會進入副本,其餘玩家會在外面乾等=口=
小弟寫法如下
懇請大大們指導如何修改
.@create = instance_create(.@instance$);//建立副本
if (.@create < 0) {
next;
mes "[副本訊息: ]";
switch (.@create) {
case -1: mes "ERROR: Invalid type."; close;break;
case -2: mes "ERROR: 請先建立隊伍"; close;break; case -3: mes "ERROR: 記憶迷宮副本已經存在"; close; break;
case -4: mes "ERROR: No free instances."; break;
}
set Zeny,Zeny-.@inszeny;
addrid(2,0,.@inspartyid);
instance_enter(.@instance$);
小弟想法為:
利用getcharid 先拿到隊伍ID 傳入到 addrid
再使用addrid的方式將下面區塊作用於隊伍人物中
不知道我對addrid的理解對不對(?)
麻煩大大們指教,謝謝
為什麼不用
warpparty "XXX.gat",49,47,getcharid(1);
就好 其他隊員有在同個地圖嗎?
還是說其他隊員處在不可傳送的地圖呢? 直接使用warpparty "XXX.gat",49,47,getcharid(1);
就可以整個隊伍傳送了嗎?
隊員基本上都在同一地圖
還是可以無視地圖傳送呢? Ceres8154 發表於 2016-11-22 11:57 AM static/image/common/back.gif
直接使用warpparty "XXX.gat",49,47,getcharid(1);
就可以整個隊伍傳送了嗎?
我之前遇過的狀況是
隊員處在不可傳送的地圖
所以就只有隊長傳送進去
louis8604031 發表於 2016-11-22 12:17 PM static/image/common/back.gif
我之前遇過的狀況是
隊員處在不可傳送的地圖
所以就只有隊長傳送進去
無法傳送的flag不是只有不能傳送過去該張地圖?
也會影響被召喚走的指令是嗎
例如partywarp?
Ceres8154 發表於 2016-11-22 12:20 PM static/image/common/back.gif
無法傳送的flag不是只有不能傳送過去該張地圖?
也會影響被召喚走的指令是嗎
例如partywarp?
有個地圖屬性 叫做不可傳送
隊員處在那個地圖 就不會被傳送 本帖最後由 Ceres8154 於 2016-11-22 09:23 PM 編輯
已試過warpparty 無法使用
應該說,會傳過去地圖沒錯,但不是"副本生成"的那張地圖
不會觸發到Oninstanceinit
請問還有其他好的辦法嗎?
你的方法是對的
錯在變量的使用
instance_enter(.@instance$);
addrid後,除了隊長其他人都沒有.@instance$
sense 發表於 2016-11-22 09:32 PM static/image/common/back.gif
你的方法是對的
錯在變量的使用
instance_enter(.@instance$);
想請問有辦法將原本隊長的變數
作用於addrid後的變數上面嗎?
如果不能,似乎還是不能解決這問題~"~
我也嘗試過在腳本最一開始直接上addrid(2,0,getcharid(1));
但還是僅有隊長進去而已
Ceres8154 發表於 2016-11-22 10:14 PM static/image/common/back.gif
想請問有辦法將原本隊長的變數
作用於addrid後的變數上面嗎?
如果不能,似乎還是不能解決這問題~"~
其實,如果沒有要做其他判斷*warpparty "<to_mapname>",<x>,<y>,<party_id>,{"<from_mapname>"};這一定是最快的方式warpparty instance_mapname("地圖名稱"),x,y,getcharid(1); 本帖最後由 Ceres8154 於 2016-11-22 11:27 PM 編輯
sense 發表於 2016-11-22 11:10 PM static/image/common/back.gif
其實,如果沒有要做其他判斷這一定是最快的方式
感謝您花這麼多時間協助我
依照您的方法的確可行,但是在地圖傳送時就要做許多個跳入點
不知有沒有更好的寫法~"~
由於小弟是,
讓使用者輸入數字>確認進入副本> 傳送
再輸入數字時就已經去紀錄要執行的副本名稱
在最後面傳送統一用一個instance_enter進入
例如:
//最開頭設定腳本"名稱"的陣列
setarray .@insname$,
"ORC_HERO","Maya","ORC_LORD","Golden_Bug","Eddga";
input(.@inpnum, 0, 44);//使用者輸入數字
switch(.@inpnum){
case 1: if(select("進入:取消") == 2){close; end;}
set .@instance$,.@insname$[.@inpnum];
set .@inszeny,.@insz[.@inpnum];
goto intoins;}
intoins:
instance_create(.@instance$)
instance_enter(.@instance$); 因此在最前面的變數,沒辦法拿到後面給隊伍共用
目前解法似乎只能在後面再做一次switch case 填入地圖名稱
然後再做party warp了?
不知道有沒有更好的寫法呢..
頁:
[1]