PDA

View Full Version : [KT] Hỏi về hàm đội pt



devsevergame
26-01-15, 04:05 PM
Các pro cho em hỏi, em đag dev lệnh bài event, các pro biết hàm nào sử dụng lệnh bài đưa cả 1 pt tới 1 tọa độ mạp cùng lúc k???, hàm đưa nv tới tọa độ mạp khác thì em biết rồi.
ví dụ: em pt 6 người sau đó sử dụng lệnh bài nó đưa cả 6 người trong 1 pt đi cùng 1 lúc tới tọa độ đó.
các pro nào biết cho em xin 1 lời hướng dẫn với.

vipbk
26-01-15, 04:34 PM
Xem script báo danh tiêu dao cốc

__Jie__
27-01-15, 01:37 PM
local tbNpc_1 = Npc:GetClass("hl_jiheshi");

tbNpc_1.szDesc = "tập hợp thạch "
tbNpc_1.SEND_POS = {1702, 3328};


function tbNpc_1:OnDialog()
local nSubWorld, _, _ = him.GetWorldPos();
local tbInstancing = Task.tbArmyCampInstancingManager:GetInstancing(nSu bWorld);
if (tbInstancing.nJiHeShiTime ~= 0) then
local szMsg = "tập hợp thạch tạm thời không có khả năng sử dụng, hãy " .. tbInstancing.nJiHeShiTime .. "miễn tái sử dụng! ";
local tbOpt = {"kết thúc đối thoại "};
Dialog:Say(szMsg, tbOpt);
return;
end;
if (tbInstancing.nJiHeShiCanUse ~= 1) then
return ;
end;

local tbOpt = {};
local szMsg = "hãy lựa chọn đội hữu bạn muốn lập ";
local tbPlayList, _ = KPlayer.GetMapPlayer(tbInstancing.nMapId);
for _, teammate in ipairs(tbPlayList) do
if (tbInstancing.tbPassJingJiMiLin[teammate.nId] ~= 1 and teammate.nId ~= me.nId) then
tbOpt[#tbOpt + 1] = { teammate.szName, self.CallUp, self, tbInstancing, teammate.nId};
end;
end;
if (#tbOpt == 0) then
szMsg = "đội hữu thông qua hình thức mật lâm hoặc tại phó bản, không cần truyền tống! ";
end;
tbOpt[#tbOpt + 1] = {"Kết thúc đối thoại"};
Dialog:Say(szMsg, tbOpt);
end;


function tbNpc_1:CallUp(tbInstancing, nId)
if (tbInstancing.tbPassJingJiMiLin[nId] and tbInstancing.tbPassJingJiMiLin[nId] == 1) then
return;
end;

local pPlayer = KPlayer.GetPlayerObjById(nId);
if (not pPlayer or pPlayer.nMapId ~= tbInstancing.nMapId) then
return;
end;

Setting:SetGlobalObj(pPlayer);

local tbPlayerDarkData = BlackSky:GetDarkData();
if (tbPlayerDarkData.nInDark == 1) then
Setting:RestoreGlobalObj();
return;
end;

local szMsg = "đội hữu của ngươi gọi ngươi,không truyền tống? ";
local tbOpt = {
{"Đồng ý", self.SendNewPos, self, tbInstancing},
{"không"},
};
Dialog:Say(szMsg, tbOpt);
Setting:RestoreGlobalObj();
end;


function tbNpc_1:SendNewPos(tbInstancing)
if (tbInstancing.nJiHeShiTime ~= 0) then
return;
end;

me.NewWorld(tbInstancing.nMapId, self.SEND_POS[1], self.SEND_POS[2]);
tbInstancing.nJiHeShiTime = 30;
me.SetFightState(1);
Task.tbArmyCampInstancingManager:Tip2MapPlayer(me. nMapId, "<color=yellow>" .. me.szName .. "<color>đã truyền tống thông qua mật lâm ");
end;



Hải lăng vương mộ giải quyết vấn đề ^^
script\task\armycamp\110_120\npc\jinjimilinnpc.lua

Cách 2 Tiêu dao cốc

local tbMember, nMemberCount = KTeam.GetTeamMemberList(nTeamId);
for i = 1, #tbMember do
local pPlayer = KPlayer.GetPlayerObjById(tbMember[i]);
pPlayer.NewWorld(IdMap,nToaDoX,nToaDoY);

end

devsevergame
27-01-15, 02:40 PM
Hải lăng vương mộ giải quyết vấn đề ^^
script\task\armycamp\110_120\npc\jinjimilinnpc.lua

Cách 2 Tiêu dao cốc

local tbMember, nMemberCount = KTeam.GetTeamMemberList(nTeamId);
for i = 1, #tbMember do
local pPlayer = KPlayer.GetPlayerObjById(tbMember[i]);
pPlayer.NewWorld(IdMap,nToaDoX,nToaDoY);

end



Vậy em muốn thêm code trên vào cái lệnh bài của em thì như thế nào, nhờ anh jie giúp với, code lệnh bài em là thế này.


function tbItem:OnUse()
me.NewWorld(4, 1587, 3251);
end

__Jie__
27-01-15, 03:25 PM
function tbItem:OnUse()
local tbMember, nMemberCount, nMemberList = KTeam.GetTeamMemberList(nTeamId);
if nMemberCount < 2 then
me.msg("Tổ đội từ 2 ngươi trở lên mới có thể thao tác")
return 0;
end
for _, teammate in ipairs(nMemberList) do
tbOpt[#tbOpt + 1] = { teammate.szName, self.MoveTeam, self, teammate.nId};
end;
tbOpt[#tbOpt + 1] = {"Kết thúc đối thoại"};
Dialog:Say("Có muốn đưa đồng đội đến nơi của ngươi không?\n Hãy chọn lựa danh sách cần dịch chuyển", tbOpt);
end
function tbItem:MoveTeam(nId})
local pPlayer = KPlayer.GetPlayerObjById(nId);
pPlayer.NewWorld(1,1359,1254);
end


-- Them Điều kiện hỏi ý kiến thành viên


function tbItem:OnUse()
local tbMember, nMemberCount, nMemberList = KTeam.GetTeamMemberList(nTeamId);
if nMemberCount < 2 then
me.msg("Tổ đội từ 2 ngươi trở lên mới có thể thao tác")
return 0;
end
for _, teammate in ipairs(nMemberList) do
tbOpt[#tbOpt + 1] = { teammate.szName, self.CallUp, self, teammate.nId};
end;
tbOpt[#tbOpt + 1] = {"Kết thúc đối thoại"};
Dialog:Say("Có muốn đưa đồng đội đến nơi của ngươi không?\n Hãy chọn lựa danh sách cần dịch chuyển", tbOpt);
end
function tbItem:CallUp(nID)
local pPlayer = KPlayer.GetPlayerObjById(nID);


local szMsg = "Đội Trưởng đang gọi ngươi đến . Có Đi Không? ";
local tbOpt = {
{"Đồng ý", self.SendNewPos, self},
{"không"},
};
Dialog:Say(szMsg, tbOpt);
end
function tbItem:SendNewPos(})
me.NewWorld(1,1359,1254);
end

Code trên dịch chuyển từng nhân vật còn đoạn làm dịch chuyển cả team thì sẽ triển khai một bước khác

__Jie__
27-01-15, 08:04 PM
Nhớ không lầm thì dùng local pPlayer = KPlayer.GetPlayerObjById(nID);
Chỉ dùng được trong 1 SUB hay 1 GS qua GS khác không thực thi được