kittyngoc_dp_
22-07-14, 04:56 PM
Mình thấy trên sv KT linux có chứ năng thú cưng khá thú vị. Thoạt đầu mình có ý định thử đem nó bỏ vào sv 2.6 cơ mà ko phải dân IT nên nghèo nàn về kiến thức nay share những gì đã làm đc để các pro đắp vá thêm xem có đc ko ^^
Nguyên liệu và các file liên quan mình tìm đc:
\gamecenter\script\item\class\qiankunfulogic.lua
Tìm
function tb:ObtainMemberPos(nMemberPlayerId, nPlayerId, nItemId, nMapId, nPosX, nPosY, nFightState)
thêm vào ngay dưới cùng
Npc.tbFollowPartner:FollowNewWorld(pPlayer, nMapId, nPosX, nPosY);
gameserver\script\event\extendaward\extendaward.lu a
Tìm
function ExtendAward:DoCheck(szType, ...)
thay thành
function ExtendAward:DoCheck(szType, ...)
if not self.tbInterFaceFun[szType] then
return 0;
end
if self[self.tbInterFaceFun[szType]] then
local nFreeCount, tbFunExecute, szExtendInfo, tbProductSet = self[self.tbInterFaceFun[szType]](self, unpack(arg))
if self.tbFunExecute[szType] then
local tbFun = {};
for nRegId, tbExe in pairs(self.tbFunExecute[szType]) do
local tbTempExe = {}
for _, v in ipairs(tbExe) do
table.insert(tbTempExe, v);
end
for _, v in ipairs(arg) do
table.insert(tbTempExe, v);
end
table.insert(tbFun, tbTempExe);
end
for _, tbExe in pairs(self:RegistrationExecute(tbFun)) do
table.insert(tbFunExecute, tbExe);
end
end
--宠物系统
tbFunExecute = tbFunExecute or {};
table.insert(tbFunExecute, {["fun"] = Npc.tbFollowPartner.AddAward, ["tbParam"] = {Npc.tbFollowPartner, arg[1] or me, szType}});
if self.tbFreeCountScript[szType] then
for nRegId, tbExe in pairs(self.tbFreeCountScript[szType]) do
local tbTempExe = {}
for _, v in ipairs(tbExe) do
table.insert(tbTempExe, v);
end
for _, v in ipairs(arg) do
table.insert(tbTempExe, v);
end
nFreeCount = nFreeCount + tbTempExe[1](unpack(tbTempExe,2))
end
end
if self.tbFreeCount[szType] then
for nRegId, nTmpFreeCount in pairs(self.tbFreeCount[szType]) do
nFreeCount = nFreeCount + (tonumber(nTmpFreeCount) or 0)
end
end
return nFreeCount, tbFunExecute, szExtendInfo, tbProductSet;
end
return 0;
end
script\item\class\chuansongfu.lua
function tbChuangsongfu:TransPlayer(nItemId, tbPos, nIsLimit, szName)
thay
function tbChuangsongfu:TransPlayer(nItemId, tbPos, nIsLimit, szName)
local pItem = KItem.GetObjById(nItemId);
if (not pItem) then
return;
end
if (nIsLimit == 1) then
if (me.DelItem(pItem, Player.emKLOSEITEM_USE) ~= 1) then
me.Msg("Hủy Truyền Tống Phù thất bại!");
return;
end
end
if type(tbPos) == "table" then
me.Msg(string.format("Ngồi yên, %s!",szName));
me.NewWorld(unpack(tbPos));
if nFightState then
me.SetFightState(nFightState);
end
Npc.tbFollowPartner:FollowNewWorld(me, unpack(tbPos));
elseif type(tbPos) == "string" then
me.CallClientScript({ tbPos });
end
end
gameserver\script\item\class\qiankunfulogic.lua thay giống gamecenter ở trên
tải cái này về chép vào gameserver\script\item\class\
<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>!ApVwQCwb!d6O9r4hYLow4W-h9RlnKeSdoLbvvpEs9wvdF9XsTA9U
\gameserver\script\map\map.lua
function Map:OnEnter2(nMapId)
local tbMap = self:GetClass(nMapId);
--如果是观战模式,走自己的统一逻辑
if Looker:IsLooker(me) > 0 then
Looker:MapOnEnter(nMapId);
return 0;
end
tbMap:OnEnter2();
end
thay
function Map:OnEnter2(nMapId)
local tbMap = self:GetClass(nMapId);
--如果是观战模式,走自己的统一逻辑
if Looker:IsLooker(me) > 0 then
Looker:MapOnEnter(nMapId);
return 0;
end
tbMap:OnEnter2();
Npc.tbFollowPartner:FollowPartnerOnEnter();
end
function Map:OnPlayerTrap(nMapId, szClassName)
local tbMap = self:GetClass(nMapId);
tbMap:OnPlayerTrap(szClassName);
end
thay
function Map:OnPlayerTrap(nMapId, szClassName)
local tbMap = self:GetClass(nMapId);
tbMap:OnPlayerTrap(szClassName);
--宠物跟玩家跳trap点
Npc.tbFollowPartner:FollowPartnerOnTrap();
end
function Map:OnNpcTrap(nMapId, szClassName)
local tbMap = self:GetClass(nMapId);
tbMap:OnNpcTrap(szClassName);
end
thay
function Map:OnNpcTrap(nMapId, szClassName)
--宠物不受npc Trap点影响
if Npc.tbFollowPartner:CheckIsFollowPartner() == 1 then
return;
end
local tbMap = self:GetClass(nMapId);
tbMap:OnNpcTrap(szClassName);
end
\gameserver\script\npc
tải cái này chép vô: <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>!QlV3Xaoa!kZobAC6OM2GZS12SjyNE3FwHCOT1FN4O0v-rrB6pjRc
gameserver\script\player\player.lua
tìm function Player:_OnLogin(bExchangeServerComing)
thêm dưới cùng
if not GLOBAL_AGENT then
Npc.tbFollowPartner:FollowPartnerLogin();
end
tìm function Player:_OnLogout(szReason)
thêm dưới cùng
if (MODULE_GAMESERVER) then
local tbXJRecord = me.GetXJRecordInfo();
if tbXJRecord and tbXJRecord ~= {} then
local szLog = "";
local bHasValue = 0;
for i, nCount in pairs(tbXJRecord) do
if (i ~= 1) then
szLog = szLog..",";
end
szLog = string.format("%s%d", szLog, nCount);
if (nCount > 0 ) then
bHasValue = 1;
end
end
if (bHasValue == 1) then
StatLog:WriteStatLog("stat_info", "roleobtain", "xuanjing", me.nId, szLog);
end
end
MiniResource.tbDownloadInfo:OnLogout(szReason);
--跟宠上线事件
if not GLOBAL_AGENT then
Npc.tbFollowPartner:FollowPartnerLogOut();
end
--科举考试下线需要置打开ui变量为0,� �止上来就算题目了,其实没打开界面
me.SetTask(2216, 16, 0);
else
ClientEvent:OnLogout(szReason);
end
function Player:_OnDeath(pKiller)
BlackSky:GiveMeBright(me);
if (not pKiller) then
return;
end
if (pKiller.nKind == 1) then
local szMsg = "Bạn bị <color=yellow>"..pKiller.szName.."<color> đánh trọng thương!";
Dialog:SendInfoBoardMsg(me, szMsg);
me.Msg(szMsg)
local pPlayer = pKiller.GetPlayer();
if (pPlayer) then
local szMsg = "<color=yellow>"..me.szName.."<color> bị bạn đánh trọng thương!";
Dialog:SendInfoBoardMsg(pPlayer, szMsg);
pPlayer.Msg(szMsg);
end
end
end
thay thành
function Player:_OnDeath(pKiller)
BlackSky:GiveMeBright(me);
if (not pKiller) then
return;
end
if (pKiller.nKind == 1) then
local szMsg = "Bạn bị <color=yellow>"..pKiller.szName.."<color> đánh trọng thương!";
Dialog:SendInfoBoardMsg(me, szMsg);
me.Msg(szMsg)
local pPlayer = pKiller.GetPlayer();
if (pPlayer) then
local szMsg = "<color=yellow>"..me.szName.."<color> bị bạn đánh trọng thương!";
Dialog:SendInfoBoardMsg(pPlayer, szMsg);
pPlayer.Msg(szMsg);
Npc.tbFollowPartner:AddAward(pPlayer, "killplayer");
end
end
end
Phần setting thì tải cái này về rồi cho thêm vào <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>!0w0CTI5C!ECDEjaZSbZvGc16scjAtopOxeLItJf7PTsRkZ0D Ny_k
thiếu chắc gì đó nên vấn đề là gọi và cất được thú cưng nhưng nó ko đi theo, ko đánh quái, nếu gọi ra mà ko cất đi khi uot ra đăng nhập lại sẽ xuất hiện thêm 1 con nữa :-"
Một vài hình ảnh:
<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>
Nguyên liệu và các file liên quan mình tìm đc:
\gamecenter\script\item\class\qiankunfulogic.lua
Tìm
function tb:ObtainMemberPos(nMemberPlayerId, nPlayerId, nItemId, nMapId, nPosX, nPosY, nFightState)
thêm vào ngay dưới cùng
Npc.tbFollowPartner:FollowNewWorld(pPlayer, nMapId, nPosX, nPosY);
gameserver\script\event\extendaward\extendaward.lu a
Tìm
function ExtendAward:DoCheck(szType, ...)
thay thành
function ExtendAward:DoCheck(szType, ...)
if not self.tbInterFaceFun[szType] then
return 0;
end
if self[self.tbInterFaceFun[szType]] then
local nFreeCount, tbFunExecute, szExtendInfo, tbProductSet = self[self.tbInterFaceFun[szType]](self, unpack(arg))
if self.tbFunExecute[szType] then
local tbFun = {};
for nRegId, tbExe in pairs(self.tbFunExecute[szType]) do
local tbTempExe = {}
for _, v in ipairs(tbExe) do
table.insert(tbTempExe, v);
end
for _, v in ipairs(arg) do
table.insert(tbTempExe, v);
end
table.insert(tbFun, tbTempExe);
end
for _, tbExe in pairs(self:RegistrationExecute(tbFun)) do
table.insert(tbFunExecute, tbExe);
end
end
--宠物系统
tbFunExecute = tbFunExecute or {};
table.insert(tbFunExecute, {["fun"] = Npc.tbFollowPartner.AddAward, ["tbParam"] = {Npc.tbFollowPartner, arg[1] or me, szType}});
if self.tbFreeCountScript[szType] then
for nRegId, tbExe in pairs(self.tbFreeCountScript[szType]) do
local tbTempExe = {}
for _, v in ipairs(tbExe) do
table.insert(tbTempExe, v);
end
for _, v in ipairs(arg) do
table.insert(tbTempExe, v);
end
nFreeCount = nFreeCount + tbTempExe[1](unpack(tbTempExe,2))
end
end
if self.tbFreeCount[szType] then
for nRegId, nTmpFreeCount in pairs(self.tbFreeCount[szType]) do
nFreeCount = nFreeCount + (tonumber(nTmpFreeCount) or 0)
end
end
return nFreeCount, tbFunExecute, szExtendInfo, tbProductSet;
end
return 0;
end
script\item\class\chuansongfu.lua
function tbChuangsongfu:TransPlayer(nItemId, tbPos, nIsLimit, szName)
thay
function tbChuangsongfu:TransPlayer(nItemId, tbPos, nIsLimit, szName)
local pItem = KItem.GetObjById(nItemId);
if (not pItem) then
return;
end
if (nIsLimit == 1) then
if (me.DelItem(pItem, Player.emKLOSEITEM_USE) ~= 1) then
me.Msg("Hủy Truyền Tống Phù thất bại!");
return;
end
end
if type(tbPos) == "table" then
me.Msg(string.format("Ngồi yên, %s!",szName));
me.NewWorld(unpack(tbPos));
if nFightState then
me.SetFightState(nFightState);
end
Npc.tbFollowPartner:FollowNewWorld(me, unpack(tbPos));
elseif type(tbPos) == "string" then
me.CallClientScript({ tbPos });
end
end
gameserver\script\item\class\qiankunfulogic.lua thay giống gamecenter ở trên
tải cái này về chép vào gameserver\script\item\class\
<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>!ApVwQCwb!d6O9r4hYLow4W-h9RlnKeSdoLbvvpEs9wvdF9XsTA9U
\gameserver\script\map\map.lua
function Map:OnEnter2(nMapId)
local tbMap = self:GetClass(nMapId);
--如果是观战模式,走自己的统一逻辑
if Looker:IsLooker(me) > 0 then
Looker:MapOnEnter(nMapId);
return 0;
end
tbMap:OnEnter2();
end
thay
function Map:OnEnter2(nMapId)
local tbMap = self:GetClass(nMapId);
--如果是观战模式,走自己的统一逻辑
if Looker:IsLooker(me) > 0 then
Looker:MapOnEnter(nMapId);
return 0;
end
tbMap:OnEnter2();
Npc.tbFollowPartner:FollowPartnerOnEnter();
end
function Map:OnPlayerTrap(nMapId, szClassName)
local tbMap = self:GetClass(nMapId);
tbMap:OnPlayerTrap(szClassName);
end
thay
function Map:OnPlayerTrap(nMapId, szClassName)
local tbMap = self:GetClass(nMapId);
tbMap:OnPlayerTrap(szClassName);
--宠物跟玩家跳trap点
Npc.tbFollowPartner:FollowPartnerOnTrap();
end
function Map:OnNpcTrap(nMapId, szClassName)
local tbMap = self:GetClass(nMapId);
tbMap:OnNpcTrap(szClassName);
end
thay
function Map:OnNpcTrap(nMapId, szClassName)
--宠物不受npc Trap点影响
if Npc.tbFollowPartner:CheckIsFollowPartner() == 1 then
return;
end
local tbMap = self:GetClass(nMapId);
tbMap:OnNpcTrap(szClassName);
end
\gameserver\script\npc
tải cái này chép vô: <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>!QlV3Xaoa!kZobAC6OM2GZS12SjyNE3FwHCOT1FN4O0v-rrB6pjRc
gameserver\script\player\player.lua
tìm function Player:_OnLogin(bExchangeServerComing)
thêm dưới cùng
if not GLOBAL_AGENT then
Npc.tbFollowPartner:FollowPartnerLogin();
end
tìm function Player:_OnLogout(szReason)
thêm dưới cùng
if (MODULE_GAMESERVER) then
local tbXJRecord = me.GetXJRecordInfo();
if tbXJRecord and tbXJRecord ~= {} then
local szLog = "";
local bHasValue = 0;
for i, nCount in pairs(tbXJRecord) do
if (i ~= 1) then
szLog = szLog..",";
end
szLog = string.format("%s%d", szLog, nCount);
if (nCount > 0 ) then
bHasValue = 1;
end
end
if (bHasValue == 1) then
StatLog:WriteStatLog("stat_info", "roleobtain", "xuanjing", me.nId, szLog);
end
end
MiniResource.tbDownloadInfo:OnLogout(szReason);
--跟宠上线事件
if not GLOBAL_AGENT then
Npc.tbFollowPartner:FollowPartnerLogOut();
end
--科举考试下线需要置打开ui变量为0,� �止上来就算题目了,其实没打开界面
me.SetTask(2216, 16, 0);
else
ClientEvent:OnLogout(szReason);
end
function Player:_OnDeath(pKiller)
BlackSky:GiveMeBright(me);
if (not pKiller) then
return;
end
if (pKiller.nKind == 1) then
local szMsg = "Bạn bị <color=yellow>"..pKiller.szName.."<color> đánh trọng thương!";
Dialog:SendInfoBoardMsg(me, szMsg);
me.Msg(szMsg)
local pPlayer = pKiller.GetPlayer();
if (pPlayer) then
local szMsg = "<color=yellow>"..me.szName.."<color> bị bạn đánh trọng thương!";
Dialog:SendInfoBoardMsg(pPlayer, szMsg);
pPlayer.Msg(szMsg);
end
end
end
thay thành
function Player:_OnDeath(pKiller)
BlackSky:GiveMeBright(me);
if (not pKiller) then
return;
end
if (pKiller.nKind == 1) then
local szMsg = "Bạn bị <color=yellow>"..pKiller.szName.."<color> đánh trọng thương!";
Dialog:SendInfoBoardMsg(me, szMsg);
me.Msg(szMsg)
local pPlayer = pKiller.GetPlayer();
if (pPlayer) then
local szMsg = "<color=yellow>"..me.szName.."<color> bị bạn đánh trọng thương!";
Dialog:SendInfoBoardMsg(pPlayer, szMsg);
pPlayer.Msg(szMsg);
Npc.tbFollowPartner:AddAward(pPlayer, "killplayer");
end
end
end
Phần setting thì tải cái này về rồi cho thêm vào <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>!0w0CTI5C!ECDEjaZSbZvGc16scjAtopOxeLItJf7PTsRkZ0D Ny_k
thiếu chắc gì đó nên vấn đề là gọi và cất được thú cưng nhưng nó ko đi theo, ko đánh quái, nếu gọi ra mà ko cất đi khi uot ra đăng nhập lại sẽ xuất hiện thêm 1 con nữa :-"
Một vài hình ảnh:
<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>