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.
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
 
Powered by vBulletin® Version 4.2.0 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.