Kết quả 1 đến 10 của 28
-
22-07-14, 04:56 PM #1
- Ngày tham gia
- Jul 2011
- Bài viết
- 98
- Thanks
- 21
- Thanked 10 Times in 10 Posts
Thảo luận về dự án Thú Cưng cho sv 2.6 cần pro giúp sức
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ìmPHP Code:function tb:ObtainMemberPos(nMemberPlayerId, nPlayerId, nItemId, nMapId, nPosX, nPosY, nFightState)
PHP Code:Npc.tbFollowPartner:FollowNewWorld(pPlayer, nMapId, nPosX, nPosY);
TìmPHP Code:function ExtendAward:DoCheck(szType, ...)
PHP Code: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
PHP Code:function tbChuangsongfu:TransPlayer(nItemId, tbPos, nIsLimit, szName)
PHP Code: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
tải cái này về chép vào gameserver\script\item\class\
[Only registered and activated users can see links. ]
\gameserver\script\map\map.lua
PHP Code:function Map:OnEnter2(nMapId)
local tbMap = self:GetClass(nMapId);
--如果是观战模式,走自己的统一逻辑
if Looker:IsLooker(me) > 0 then
Looker:MapOnEnter(nMapId);
return 0;
end
tbMap:OnEnter2();
end
PHP Code: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
PHP Code:function Map:OnPlayerTrap(nMapId, szClassName)
local tbMap = self:GetClass(nMapId);
tbMap:OnPlayerTrap(szClassName);
end
PHP Code:function Map:OnPlayerTrap(nMapId, szClassName)
local tbMap = self:GetClass(nMapId);
tbMap:OnPlayerTrap(szClassName);
--宠物跟玩家跳trap点
Npc.tbFollowPartner:FollowPartnerOnTrap();
end
PHP Code:function Map:OnNpcTrap(nMapId, szClassName)
local tbMap = self:GetClass(nMapId);
tbMap:OnNpcTrap(szClassName);
end
PHP Code:function Map:OnNpcTrap(nMapId, szClassName)
--宠物不受npc Trap点影响
if Npc.tbFollowPartner:CheckIsFollowPartner() == 1 then
return;
end
local tbMap = self:GetClass(nMapId);
tbMap:OnNpcTrap(szClassName);
end
tải cái này chép vô: [Only registered and activated users can see links. ]
gameserver\script\player\player.lua
tìm function Player:_OnLogin(bExchangeServerComing)
thêm dưới cùng
PHP Code:if not GLOBAL_AGENT then
Npc.tbFollowPartner:FollowPartnerLogin();
end
thêm dưới cùng
PHP Code: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
PHP Code: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
PHP Code: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
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:
[Only registered and activated users can see links. ]
[Only registered and activated users can see links. ]Khách viếng thăm hãy cùng kittyngoc_dp_ xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
22-07-14, 10:41 PM #2
- Ngày tham gia
- Apr 2012
- Đang ở
- SafeZone
- Bài viết
- 523
- Thanks
- 82
- Thanked 248 Times in 125 Posts
Ðề: Thảo luận về dự án Thú Cưng cho sv 2.6 cần pro giúp sức
Có sáng tạo. Mình nghĩ là làm được nhé, bạn có thể tham khảo script di chuyển của npc và phát triển, tuy nhiên, việc này có thể làm nặng thêm cho sever
Khách viếng thăm hãy cùng mrkutepro xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
Các thành viên gởi lời cảm ơn đến mrkutepro vì bài viết này !
bboyswat (04-11-14)
-
24-07-14, 07:59 AM #3
Ðề: Thảo luận về dự án Thú Cưng cho sv 2.6 cần pro giúp sức
Bỏ kiếm thế cũng đã lâu, nay vào lại nóng trong người rồi!!!!
, cái này cũng đã viết nhiều lần bằng nhiều cách khác nhau,dựa vào SC npc di chuyển, Ui theo sau nhé bạn, bạn còn thiếu file npc.lua nữa
- có thể giải quyết chỗ này FollowNewWorld(pPlayer, nMapId, nPosX, nPosY), nhưng hơi cao siêuLần sửa cuối bởi copday, ngày 24-07-14 lúc 08:01 AM.
Khách viếng thăm hãy cùngcopdayxây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
26-07-14, 09:23 PM #4
- Ngày tham gia
- Jul 2011
- Bài viết
- 98
- Thanks
- 21
- Thanked 10 Times in 10 Posts
Ðề: Thảo luận về dự án Thú Cưng cho sv 2.6 cần pro giúp sức
Khách viếng thăm hãy cùng kittyngoc_dp_ xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
26-07-14, 09:26 PM #5
- Ngày tham gia
- Jan 2012
- Bài viết
- 2,391
- Thanks
- 2,566
- Thanked 1,821 Times in 865 Posts
Ðề: Thảo luận về dự án Thú Cưng cho sv 2.6 cần pro giúp sức
Cái cần là hàm FollowNewWorld(pPlayer, nMapId, nPosX, nPosY). Tìm xem trên linux nó đang bơi ở đâu thử chép qua xem
Có lẽ vậy ...Lần sửa cuối bởi satthupro95, ngày 26-07-14 lúc 09:54 PM.
Khách viếng thăm hãy cùng satthupro95 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
26-07-14, 09:48 PM #6
Ðề: Thảo luận về dự án Thú Cưng cho sv 2.6 cần pro giúp sức
function tbFollowPartner:FollowNewWorld(pPlayer, nMapId, nX, nY)
if not nMapId or not nX or not nY then
return;
end
local tbTemp = pPlayer.GetTempTable("Player").tbFollowPartner;
if not tbTemp then
return;
end
local pNpc = KNpc.GetById(tbTemp.nParnerId);
if not pNpc then
return;
end
local tbNpcTemp = pNpc.GetTempTable("Npc").tbFollowPartner;
if not tbNpcTemp or tbNpcTemp.nPlayerId ~= pPlayer.nId then
return;
end
pNpc.NewWorld(nMapId, nX, nY);
end
nó vẫn là hàm NewWorld thui makKhách viếng thăm hãy cùng NhanVT xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
Các thành viên gởi lời cảm ơn đến NhanVT vì bài viết này !
satthupro95 (26-07-14)
-
26-07-14, 10:16 PM #7
- Ngày tham gia
- Jul 2011
- Bài viết
- 98
- Thanks
- 21
- Thanked 10 Times in 10 Posts
Ðề: Thảo luận về dự án Thú Cưng cho sv 2.6 cần pro giúp sức
Khách viếng thăm hãy cùng kittyngoc_dp_ xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
26-07-14, 10:24 PM #8
- Ngày tham gia
- Jul 2011
- Bài viết
- 98
- Thanks
- 21
- Thanked 10 Times in 10 Posts
Ðề: Thảo luận về dự án Thú Cưng cho sv 2.6 cần pro giúp sức
Khách viếng thăm hãy cùng kittyngoc_dp_ xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
27-07-14, 09:47 AM #9
- Ngày tham gia
- Apr 2012
- Đang ở
- SafeZone
- Bài viết
- 523
- Thanks
- 82
- Thanked 248 Times in 125 Posts
Ðề: Thảo luận về dự án Thú Cưng cho sv 2.6 cần pro giúp sức
tốt nhất ko dùng hèm NewWorld cho npc, vì nó chả giống người mà nó load dc dữ liệu từ mysql. Nếu như người đi mất rồi, thì cho xài hàm del npc đi, rồi add npc khác, còn trong phạm vi map, thì tăng tốc độ chạy cho npc lên là xong
Khách viếng thăm hãy cùng mrkutepro xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
27-07-14, 08:34 PM #10
Ðề: Thảo luận về dự án Thú Cưng cho sv 2.6 cần pro giúp sức
nó vẫn là hàm NewWorld thui mak
[/QUOTE]
pNpc.NewWorld(nMapId, nX, nY)
khác chớKhách viếng thăm hãy cùngcopdayxây dựng diễn đàn CLBGAMESVN vững mạnh nhé!