PDA

View Full Version : [KT] Satthupro95 và Các Bạc Giúp Em Ạ, Vấn Đề Thực Thi Tự Chuyển PK Đồ Sát Tại Map ID



visaothe123
15-09-16, 12:01 PM
tình hình em có đăng 1 topic gần đây, hỏi về lệnh thực thi chuyển PK Cừu Sát, và đã mò 2 3 hôm nay rồi nhưng kết qua vẫn không thành công, vấn đề là như thế này ạ.

Đã fix 1 map. Ví Dụ: Map 2000 không cho dùng Phù + Hồi Sinh, và mặt định khi vào map đó là PK Luyện công, không thể chuyển sang PK khác tại map, Vậy làm sao trong 1 thời gian, tự động có thể thực thi chuyển tắt cả người chơi sang chế độ PK Cừu Sát.

Em làm tới đoạn thực thi được tại map chuyển sang PK cừu sát, nhưng nhân vật không thể chuyển ngay được tại map, mà cần phải thoát khỏi map rồi vào lại, mới có thể chuyển PK.. Có bác nào giúp em về vấn đề này không ạ, cần lắm cao nhân.

tuidangvui
15-09-16, 12:16 PM
Nội dung event này nghe quen quen :|, không nhớ đã làm cho sv nào, cũng làm tới bước vào map chuyển PK, chưa tự chuyển khi trong map ;))
Get All Player in map là dc =)), tới đây chắc dư sức làm chứ :-"

__Jie__
15-09-16, 12:43 PM
Trước khi dev 1 tính năng mới ngoài tìm cách ra phải tìm xem có những tính năng nào hiện tại đang có , từ đó sẽ tự suy nghĩ ra thôi.

Ví dụ : Đang ở chế độ luyện công sau 1 thời gian chuyển sang DS tính năng tương tự (Thi đấu MP).

Vậy bước 1 : Copy setting map của thi đấu MP để tạo 1 map mới
Bước 2: Là từ luyện công sang DS
Chú ý ở trong factionbattle_gs.lua sẽ có 2 đoạn bạn cần quan tâm



function FactionBattle:OnLeaveMap(nFaction)
local tbData = self:GetFactionData(nFaction);
local nPlayerId = me.nId;
if tbData then
if tbData:FindAttendPlayer(nPlayerId) == 1 then -- 暂时恢复原来状态
tbData:KickPlayerFromArena(nPlayerId);
tbData:ResumeNormalState(nPlayerId);
end
tbData:DelMapPlayerTable(nPlayerId);
end
me.nForbidChangePK = 0;
me.ForbidEnmity(0); --仇杀
me.ForbidExercise(0); --切磋
me.DisabledStall(0); --摆摊
end

-- 进入地图
function FactionBattle:OnEnterMap(nFaction, bIsNewWorld)
local tbData = self:GetFactionData(nFaction)
if tbData then
tbData:AddMapPlayerTable(me.nId);
if tbData:FindAttendPlayer(me.nId) == 1 then -- 设置比赛准备状态
-- TODO
end
end
self:TrapIn(me);
me.SetFightState(0);
me.nPkModel = Player.emKPK_STATE_PRACTISE;
me.nForbidChangePK = 1;
me.ForbidEnmity(1); -- 禁止仇杀
me.ForbidExercise(1); -- 禁止切磋
me.DisabledStall(1); --禁止摆摊
end

na.ilusm89
15-09-16, 01:06 PM
local tbLocalPlayer = KPlayer.GetAllPlayer();
for _, pPlayer in pairs(tbLocalPlayer) do
local nMapId, nPosX, nPosY = pPlayer.GetWorldPos();
if nMapId == 2000 then
pPlayer.nForbidChangePK = 1;

visaothe123
15-09-16, 03:26 PM
Tks máy bác tận tình giúp ạ.. đã làm thành công ạ, tks nhiều......................