PDA

View Full Version : [KT] Share code mà mới sưu tầm



sidanlovehan
12-03-14, 09:19 PM
1)Hướng dẫn kích hoạt NPC liên đấu

mình đã chỉnh được NPC liên đấu bằng cách như sau
đầu tiên
Code:
local tbNpc = {};
Wlls.DialogNpc = tbNpc;

function tbNpc:OnDialog(nGameLevel, nFlag)
if Wlls:GetMacthSession() <= 0 then
Dialog:Say("Quan liên đấu: Giải đấu vẫn chưa mở.");
return 1;
end

if nGameLevel == Wlls.MACTH_ADV and Wlls:GetMacthSession() > Wlls.MACTH_ADV_START_MISSION then
Dialog:Say("Quan liên đấu: Giải đấu đã được mở, các anh hùng võ lâm ghi danh tham gi tỉ võ liên đấu.");
return 1;
end
sửa như sau
Code:
local tbNpc = {};
Wlls.DialogNpc = tbNpc;

function tbNpc:OnDialog(nGameLevel, nFlag)
--if Wlls:GetMacthSession() <= 0 then
--Dialog:Say("Quan liên đấu: Giải đấu vẫn chưa mở.");
--return 1;
---end

if nGameLevel == Wlls.MACTH_ADV and Wlls:GetMacthSession() > Wlls.MACTH_ADV_START_MISSION then
Dialog:Say("Quan liên đấu: Giải đấu đã được mở, các anh hùng võ lâm ghi danh tham gi tỉ võ liên đấu.");
return 1;
end
file
...\gameserver\script\mission\wlls\wlls_npc.lua
2)Code giới hạn du long hoàn chỉnh

hấy các bạn tìm kiếm nhiều nên mình share cho các bạn giới hạn du long

Ta thao tác trên 1 số file sau

1.gameserver\script\event\youlongmibao\youlongmiba o_def
lưu ý những dòng màu đỏ
Code:
Youlongmibao.TASK_GROUP_ID = 2106; -- 游龙密窑
Youlongmibao.TASK_YOULONG_HAVEAWARD = 1; -- 有奖未领
Youlongmibao.TASK_YOULONG_INTERVAL = 2; -- 挑战间隔
Youlongmibao.TASK_YOULONG_COUNT = 3; -- 累计次数
Youlongmibao.TASK_YOULONG_HAPPY_EGG = 6; -- 是否已经拿过开心蛋;0为未拿
Youlongmibao.TASK_DEPOSIT_COIN = 7; -- 未领取的古币值
Youlongmibao.TASK_ATTEND_NUM = 8; -- 每天参加的次数
Youlongmibao.TASK_ATTEND_DATE = 9; -- 每天参加的日期记录


Youlongmibao.TASK_ATTEND_NUM_EVENT = 10; -- 游龙周活动参加的次数及领奖情况
Youlongmibao.TASK_BATCH = 11; --游龙周批次
Youlongmibao.TASK_DAILY_NO_INTERVAL_TIMES = 12; --每天参加游龙阁次数
Youlongmibao.TaskId_Day = 13; -- 最多进行4次
Youlongmibao.TaskId_Count = 14; -- 最多进行4次


Youlongmibao.nMaxAttendNum = 20000; --游龙周活动记录的最大参加次数*100


Youlongmibao.MAX_FIGHT_TIME = 100; -- Chỉnh số lần khiêu chiến giới hạn tại đây(số lần hiện tại là 100 lần 1 ngày)
Youlongmibao.MAX_TIMES = 4; -- 最多进行4次
Youlongmibao.MAX_GRID = 25; -- 格子数量
Youlongmibao.MAX_INTERVAL = 15; -- 挑战间隔15秒
Youlongmibao.DEF_GET_HAPPYEGG_COUNT = 5;
Youlongmibao.nBatch = 1; --游龙周批次
Youlongmibao.NO_TIME_MAX_NUM = 200; --每天前两百个不需要等待时间


Youlongmibao.ITEM_YUEYING = {18, 1, 476, 1}; -- 月影之石
Youlongmibao.ITEM_ZHANSHU = {18, 1, 524, 1}; -- 游龙战书
Youlongmibao.ITEM_ZHANSHU_BIND = {18, 1, 524, 4}; -- 游龙战书
Youlongmibao.ITEM_COIN = {18, 1, 553, 1}; -- 游龙古币
Youlongmibao.ITEM_HAPPYEGG = "18,1,525,1" -- 开心蛋
Youlongmibao.MAX_TIMES = 20;




Youlongmibao.NPC_DIALOG = 3690;
Youlongmibao.NPC_FIGHT = 3689;


Youlongmibao.bOpen = EventManager.IVER_bOpenYoulongmibao;


Youlongmibao.TYPE_RATE_PATH = "\\setting\\event\\youlongmibao\\youlongmibao_rate. txt";


Youlongmibao.tbExcludeBind = {8, 16, 18, 28, 29};


Youlongmibao.nMaxAttendDaily = 30;
2.gameserver\script\event\youlongmibao\youlongmiba o_gs

tìm function Youlongmibao:Continue(pPlayer)
thêm vào:
Code:
local nDate = tonumber(GetLocalDate("%y%m%d"));
if pPlayer.GetTask(self.TASK_GROUP_ID, self.TaskId_Day) < nDate then
pPlayer.SetTask(self.TASK_GROUP_ID, self.TaskId_Day, nDate);
pPlayer.SetTask(self.TASK_GROUP_ID, self.TaskId_Count, 0);
end
local nCount = pPlayer.GetTask(self.TASK_GROUP_ID, self.TaskId_Count)
if nCount >= self.MAX_FIGHT_TIME then
Dialog:Say(string.format("Mỗi ngày chỉ Được khiêu chiến %d lần.", Youlongmibao.MAX_FIGHT_TIME));
return 0;
end
Sẽ thành

Code:
function Youlongmibao:Continue(pPlayer)

local nDate = tonumber(GetLocalDate("%y%m%d"));
if pPlayer.GetTask(self.TASK_GROUP_ID, self.TaskId_Day) < nDate then
pPlayer.SetTask(self.TASK_GROUP_ID, self.TaskId_Day, nDate);
pPlayer.SetTask(self.TASK_GROUP_ID, self.TaskId_Count, 0);
end
local nCount = pPlayer.GetTask(self.TASK_GROUP_ID, self.TaskId_Count)
if nCount >= self.MAX_FIGHT_TIME then
Dialog:Say(string.format("Mỗi ngày chỉ Được khiêu chiến %d lần.", Youlongmibao.MAX_FIGHT_TIME));
return 0;
end

............................................(còn đoạn nữa)
Làm tương tự với

function Youlongmibao:StartFight(pPlayer)

ta sẽ có function hoàn chỉnh sau:
Code:
function Youlongmibao:StartFight(pPlayer)
local nDate = tonumber(GetLocalDate("%y%m%d"));
if pPlayer.GetTask(self.TASK_GROUP_ID, self.TaskId_Day) < nDate then
pPlayer.SetTask(self.TASK_GROUP_ID, self.TaskId_Day, nDate);
pPlayer.SetTask(self.TASK_GROUP_ID, self.TaskId_Count, 0);
end


local nCount = pPlayer.GetTask(self.TASK_GROUP_ID, self.TaskId_Count)
if nCount >= self.MAX_FIGHT_TIME then
Dialog:Say(string.format("Mỗi ngày chỉ Được khiêu chiến %d lần.", Youlongmibao.MAX_FIGHT_TIME));
return 0;
end
local nTimes = 1;
if self.tbPlayerList[pPlayer.nId] then
nTimes = self.tbPlayerList[pPlayer.nId].nTimes + 1;
end

Dialog:SendBlackBoardMsg(pPlayer, string.format("Tiến hành khiên chiến lần thứ %s", nTimes));

-- 召唤战斗npc
Youlongmibao.Manager:DelNpc(pPlayer);
Youlongmibao.Manager:AddFightNpc(pPlayer);

pPlayer.SetTask(self.TASK_GROUP_ID, self.TASK_YOULONG_COUNT, pPlayer.GetTask(self.TASK_GROUP_ID, self.TASK_YOULONG_COUNT) + 1);
KGblTask.SCSetDbTaskInt(DBTASK_YOULONGMIBAO_COUNT, KGblTask.SCGetDbTaskInt(DBTASK_YOULONGMIBAO_COUNT) + 1);

-- 记录时间
pPlayer.SetTask(self.TASK_GROUP_ID, self.TASK_YOULONG_INTERVAL, GetTime());
pPlayer.SetTask(self.TASK_GROUP_ID, self.TaskId_Count, nCount + 1);
pPlayer.SetFightState(1);
end
Bước cuối cùng.Vào setting\player\task_def.txt thêm 2 task

Search: 2106(group) ta sẽ có Group sau
Code:
2106 1 3 [Hệ thống Chiến Thần] Du Long Quật 0 0
2106 4 5 [Hệ thống Chiến Thần] Du Long Quật-Trứng vui vẻ 1 0
2106 6 6 [Hệ thống Chiến Thần] Du Long Quật 0 0
2106 7 7 [Hệ thống Chiến Thần] Du Long Quật 0 0
2106 8 9 [Hệ thống Chiến Thần] Du Long Quật 0 0
2106 10 11 [Hệ thống Chiến Thần] Du Long Quật 0 0
2106 12 12 [Hệ thống Chiến Thần] Du Long Quật 0 0
Thêm vào:
2106 13 14 [Hệ thống Chiến Thần] Du Long Quật 0
Ta sẽ có Task Group 2106 hoàn chỉnh như sau:

Code:
2106 1 3 [Hệ thống Chiến Thần] Du Long Quật 0 0
2106 4 5 [Hệ thống Chiến Thần] Du Long Quật-Trứng vui vẻ 1 0
2106 6 6 [Hệ thống Chiến Thần] Du Long Quật 0 0
2106 7 7 [Hệ thống Chiến Thần] Du Long Quật 0 0
2106 8 9 [Hệ thống Chiến Thần] Du Long Quật 0 0
2106 10 11 [Hệ thống Chiến Thần] Du Long Quật 0 0
2106 12 12 [Hệ thống Chiến Thần] Du Long Quật 0 0
2106 13 14 [Hệ thống Chiến Thần] Du Long Quật 0
Nếu thấy có ích thì nhấn nút thank bằng hành động.đừng bằng lời
Hàm đổi trạng thái chiến đấu cho toàn server

vào script\boss\qinshihuang\map\qinshihuangling_5.lua
tìm
me.SetFightState(0);
0 -- phi chiến đấu
1 -- chiến đấu

<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
{"<color=yellow>Vào trạng thái chiến đấu", me.SetFightState, 1}; -- 1 là chiến đấu
{"<color=yellow>Hủy trạng thái chiến đấu", me.SetFightState, 0}; -- 0 là phi chiến đấu
Lười mò quá chủ thread ạ cái gì cũng mau mau

Cần thiết thì đặt luôn vào script\player\player.lua luôn login là vào trạng thái luôn
Ðề: Hàm đổi trạng thái chiến đấu cho toàn server ?
Thử thế này xem có được không

Cho vào thẻ admin
tiếp Vào trạng thái chiến đấu

table.insert(tbOpt, 1, {"Vào Trạng Thái Chiến Đấu",self.VaoTrangThai, self});
function tbAdminCard:VaoTrangThai()
local tbPlayerList = KPlayer:GetAllPlayer();
for _,pPlayer in pairs(tbPlayerList) do
pPlayer.SetFightState(1);
end
end
Hủy trạng thái chiến đấu
table.insert(tbOpt, 1, {"Vào Trạng Thái Chiến Đấu",self.HuyTrangThai, self});
function tbAdminCard:HuyTrangThai()
local tbPlayerList = KPlayer:GetAllPlayer();
for _,pPlayer in pairs(tbPlayerList) do
pPlayer.SetFightState(0);
end
end

function tbGmPlayer:ComeHereAll()
local nMapId, nMapX, nMapY = me.GetWorldPos();
me.Msg("全体集合!");
self:RemoteCall_ApplyAll("me.NewWorld", nMapId, nMapX, nMapY);
end
function tbGmPlayer:RemoteCall_ApplyAll(...)
GlobalExcute({"GM.tbPlayer:RemoteCall_DoAll", arg})
end
function tbGmPlayer:RemoteCall_DoAll(tbCallBack)
local tbLocalPlayer = KPlayer.GetAllPlayer();
for _, pPlayer in pairs(tbLocalPlayer) do
pPlayer.Call(unpack(tbCallBack));
end
end
-- 申请为单一玩家执行
function tbGmPlayer:RemoteCall_ApplyOne(nToPlayerId, ...)
GlobalExcute({"GM.tbPlayer:RemoteCall_DoOne", nToPlayerId, arg})
end
-- 为本服务器玩家执行
function tbGmPlayer:RemoteCall_DoOne(nToPlayerId, tbCallBack)
local pPlayer = KPlayer.GetPlayerObjById(nToPlayerId);
if (pPlayer) then
pPlayer.Call(unpack(tbCallBack));
end
end


Mình hiểu ý bạn rồi ý bạn là muốn mng khi sử dụng thành PK dạng đồ sát hết
Thế member muốn thành Bang Phái thì chuyển sao
Search từ khóa lúc chuyển PK sang Đồ Sát là rõ
5)Code max chân nguyên và nhận linh hồn-tu luyện thánh linh

function tbNpc:tuluyenchannguyen()
local pItem = me.GetEquip(Item.EQUIPPOS_ZHENYUAN_MAIN);
if pItem == nil then
me.Msg("Ngươi không trang bị Chân Nguyên. Vui lòng trang bị sau đó mới có thể Tu Luyện");
return 0;
end
Item:UpgradeZhenYuanNoItem(pItem,1000000,1);
Item:UpgradeZhenYuanNoItem(pItem,1000000,2);
Item:UpgradeZhenYuanNoItem(pItem,1000000,3);
Item:UpgradeZhenYuanNoItem(pItem,1000000,4);
me.Msg(string.format("Chúc mừng <color=gold>%s<color> tu luyện Chân Nguyên thành công thuộc tính! Tăng <color=gold> %d điểm<color>.", me.szName, chiphi));
end
tiếp

function tbNpc:nhanlinhhon()
local lhcu = me.GetTask(2123,1);
local lhmoi = lhcu + 10000000000;
me.SetTask(2123,1,lhmoi);
end

Sesshomaru
12-03-14, 10:01 PM
ý bạn là cái này chăng?
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

sidanlovehan
12-03-14, 10:08 PM
ý bạn là cái này chăng?
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

Sesshomaru
12-03-14, 10:11 PM
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
web nào về dev game cũng lấy ở đây thôi bạn ạ.Nhưng tinh thần rất tốt. :))

vipbk
12-03-14, 10:16 PM
ghi rõ là "sưu tầm" rồi còn gì :))

sidanlovehan
12-03-14, 10:17 PM
web nào về dev game cũng lấy ở đây thôi bạn ạ.Nhưng tinh thần rất tốt. :))
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
kệ cái nào hay thì lấy share ^^!