PDA

View Full Version : [KT] Cần anh em giúp đỡ về tank quái trong map hoạt động.



chaulenba
17-10-14, 11:05 AM
Trong một đoạn Scipt có đoạn về tank số quái đã đánh được trong 1 map làm nhiệm vụ nhưng khi đánh nó không thông báo gì và trả nhiệm vụ cứ bảo 0/50 quái ( Mặc dù đã đúng map và đúng quái)
[PHP]

local nCount1 = me.GetTask(7030,1) -- Task Đếm Số Quái Giết được !
local nCount2 = me.GetTask(self.TaskGourp, self.TaskId_Count) -- Task Đếm Số Lần Nhận Nhiệm Vụ !
local nCount3 = me.GetTask(7030,5) -- Task Đếm Số Lần Trả Nhiệm Vụ !

Đã khai báo trong task_def.txt. Xin các anh em chỉ giáo thêm có cần khai báo vào chỗ nào nữa không? Thank các anh em nhiều.
( Làm hoài không ra, bí quá)

satthupro95
17-10-14, 12:55 PM
Trong một đoạn Scipt có đoạn về tank số quái đã đánh được trong 1 map làm nhiệm vụ nhưng khi đánh nó không thông báo gì và trả nhiệm vụ cứ bảo 0/50 quái ( Mặc dù đã đúng map và đúng quái)
[PHP]

local nCount1 = me.GetTask(7030,1) -- Task Đếm Số Quái Giết được !
local nCount2 = me.GetTask(self.TaskGourp, self.TaskId_Count) -- Task Đếm Số Lần Nhận Nhiệm Vụ !
local nCount3 = me.GetTask(7030,5) -- Task Đếm Số Lần Trả Nhiệm Vụ !

Đã khai báo trong task_def.txt. Xin các anh em chỉ giáo thêm có cần khai báo vào chỗ nào nữa không? Thank các anh em nhiều.
( Làm hoài không ra, bí quá)

Đấy là chỉ là hàm GetTask thôi bạn, muốn tăng hoặc giảm phải dùng hàm SetTask

chaulenba
17-10-14, 09:15 PM
Đấy là chỉ là hàm GetTask thôi bạn, muốn tăng hoặc giảm phải dùng hàm SetTask

Cám ơn sat thu đã trả lời Đây là nguyên văn của em nó:

local tbNpc = Npc:GetClass("npc_hanbangdong");
tbNpc.TaskGourp = 1730;
tbNpc.TaskId_Day = 2;
tbNpc.TaskId_Count = 3;
tbNpc.tbItemInfo = {
bForceBind=1,
};
function tbNpc:OnDialog()
DoScript("\\script\\event\\cacevent\\hanbangdong\\npc_hanban gdong.lua");
local nDate = tonumber(GetLocalDate("%y%m%d"));
if me.GetTask(self.TaskGourp, self.TaskId_Day) < nDate then
me.SetTask(self.TaskGourp, self.TaskId_Day, nDate);
me.SetTask(self.TaskGourp, self.TaskId_Count, 0);
me.SetTask(1730,1, 0);
me.SetTask(1730,5, 0);
end
local nCount1 = me.GetTask(1730,1) -- Task Đếm Số Quái Giết được !
local nCount2 = me.GetTask(self.TaskGourp, self.TaskId_Count) -- Task Đếm Số Lần Nhận Nhiệm Vụ !
local nCount3 = me.GetTask(1730,5) -- Task Đếm Lần Vào Hàn Băng Động !

local msg =
"<pic:\\image\\ui\\logodockiem2.spr> Mỗi ngày có thể nhận nhiệm vụ tiêu diệt \n<color=yellow>Hạ Băng Trần<color> 2 lần<color>\n"..
"Hôm nay bạn đã hoàn thành nhiệm vụ tiêu diệt <color=red>"..nCount3.."<color> lần !\n"..
"Thời gian mở cửa <color=Blue>Hàn Băng Động<color> :\n"..
"<color=yellow>Sáng<color>: 08h00 đến 11h00\n"..
"<color=yellow>Chiều<color>: 14h00 đến 17h00\n"..
"<color=yellow>Tối<color>: 20h00 đến 23h00"
local tbOpt =
{
{"<color=red>[Di Chuyển]<color> vào <color=Blue>Hàn Băng Động<color>", self.DiChuyenHBD, self},
{"<color=red>[Mua]<color> <color=Blue>Hàn Băng Lệnh<color> <color=yellow>[50v Đồng]", self.MuaHanBangLenh, self},
{"<pic=123> Nhận <color=gold>Nhiệm Vụ Tiêu Diệt Hạ Băng Trần<color>", self.NhanNV_HBT, self},
{"Trả <color=gold>nhiệm vụ Tiêu Diệt Hạ Băng Trần<color>", self.TraNV_HBT, self},
{"Hoạt động đã kết thúc", self.TangDanhVong, self},
}
Dialog:Say(msg, tbOpt);
end
function tbNpc:DiChuyenHBDx()
Dialog:Say("Hoạt động đang bảo trì");

end
function tbNpc:MuaHanBangLenh()
local nCount = me.GetJbCoin()
if me.CountFreeBagCell() < 5 then
Dialog:Say("Phải Có 5 Ô Trống Trong Túi Hành Trang!");
return 0;
end
if nCount < 500000 then
Dialog:Say("Cần <color=yellow>50 vạn đồng<color> mới có thể mua !")
return 0;
end
me.AddStackItem(18,1,2186,2,self.tbItemInfo,1)
me.AddJbCoin(-1*500000)
end

function tbNpc:NhanNV_HBT()

local nCount1 = me.GetTask(1730,1) -- Task Đếm Số Quái Giết được !
local nCount2 = me.GetTask(self.TaskGourp, self.TaskId_Count) -- Task Đếm Số Lần Nhận Nhiệm Vụ !
local nCount3 = me.GetTask(1730,5) -- Task Đếm Số Lần Trả Nhiệm Vụ !
if nCount2 >= 2 then
Dialog:Say("Hôm nay nhà ngươi đã nhận 2 lần nhiệm vụ <color=gold>Tiêu Diệt Hạ Băng Trần<color>\nNgày mai quay lại nhé !")
return
end
if nCount2 >= 1 then
Dialog:Say("Ngươi đã nhận <color=gold>Nhiệm Vụ Tiêu Diệt Hạ Băng Trần<color> rồi !\nMau tiêu diệt <color=yellow>100 Hạ Băng Trần<color> !\n<color=red>[Lưu Ý]<color> Nhiệm vụ chỉ cần nhận 1 lần/1 ngày !")
return
end
Dialog:Say("Nhận <color=gold>Nhiệm Vụ Tiêu Diệt Hạ Băng Trần<color> thành công !\nMau tiêu diệt <color=yellow>100 Hạ Băng Trần<color> !")
me.SetTask(self.TaskGourp, self.TaskId_Count, nCount2 + 1);
end
function tbNpc:TraNV_HBT()
local nCount4 = me.GetItemCountInBags(18,1,2202,2) -- Thổ Phỉ lệnh
local nCount3 = me.GetTask(1730,5) -- Task Đếm Số Lần Trả Nhiệm Vụ !
local nCount2 = me.GetTask(self.TaskGourp, self.TaskId_Count) -- Task Đếm Số Lần Nhận Nhiệm Vụ !
if nCount3 >= 2 then
Dialog:Say("Hôm nay nhà ngươi đã hoàn thành 2 lần nhiệm vụ <color=gold>Tiêu Diệt Hạ Băng Trần<color>\nNgày mai quay lại nhé !")
return
end
if nCount2 < 1 then
Dialog:Say("Ngươi chưa nhận nhiệm vụ <color=yellow>Tiêu Diệt Hạ Băng Trần<color> !")
return
end
local nCount1 = me.GetTask(1730,1) -- Task Đếm Số Quái Giết được !
if nCount1 < 100 then
Dialog:Say("Nhiệm vụ chưa hoàn thành\n"..
"Ngươi đã tiêu diệt được <color=red>"..nCount1.."<color>/100 <color=yellow>Hạ Băng Trần")
return
end


me.SetTask(1730,1, 0);
me.SetTask(1730,5, 0);
Con số 5 thật sự mình ko hiểu nó dc khai báo ở đâu và ý nghĩa như thế nào.Không biết có sai gì không mà khi đánh quái xong nó cứ bảo 0/100 con, Xin sat thủ hoặc anh em ai biết xem dùm. Thanhk nhiều.

chaulenba
19-10-14, 03:23 PM
Đấy là chỉ là hàm GetTask thôi bạn, muốn tăng hoặc giảm phải dùng hàm SetTask

Pro đi hết chỉ còn lại toàn gà, ko ai đủ khả năng trả lời, CLB này chắc sắp đóng cửa rồi.

satthupro95
19-10-14, 04:47 PM
Pro đi hết chỉ còn lại toàn gà, ko ai đủ khả năng trả lời, CLB này chắc sắp đóng cửa rồi.

Bạn post cả đoạn code dài loằng ngoằng thế sao bạn ý hiểu, nói đơn giản SetTask sẽ hiểu tìm hàm SetTask = Notepad++

__Jie__
19-10-14, 05:10 PM
Hàm bạn post mình ráng banh mắt ra xem và thấy chả có gì cả =))
Nó không hợp vs câu hỏi của bạn. Sau khi xem kỷ code mình kéo lên xem bạn đang hỏi vấn đề gì.
Thì lại thấy bạn đang bị khi đánh quái không set task cho nhân vật được đúng không nhỉ?
Và đoạn code mà bạn post lên lại là 1 đoạn code của 1 NPC ( được cho là người quản lý nhiệm vụ , chỉ có giao nhận , trả , và bán LB ) hoàn toàn không liên quan gì đến vấn đề bạn hỏi

chaulenba
19-10-14, 08:04 PM
Hàm bạn post mình ráng banh mắt ra xem và thấy chả có gì cả =))
Nó không hợp vs câu hỏi của bạn. Sau khi xem kỷ code mình kéo lên xem bạn đang hỏi vấn đề gì.
Thì lại thấy bạn đang bị khi đánh quái không set task cho nhân vật được đúng không nhỉ?
Và đoạn code mà bạn post lên lại là 1 đoạn code của 1 NPC ( được cho là người quản lý nhiệm vụ , chỉ có giao nhận , trả , và bán LB ) hoàn toàn không liên quan gì đến vấn đề bạn hỏi

Xin chân thành cám ơn 2 pro. Vậy đoạn này có phải khi đủ 100 con quái thì ok phải không?
local nCount1 = me.GetTask(1730,1) -- Task Đếm Số Quái Giết được !
if nCount1 < 100 then

Nhưng vào đâu khai báo để đánh quái nó báo số lượng đã tiêu diệt? Đại khái giống như ải tiêu đao cốc yêu cầu đánh 20 con cá sấu chẳng hạn. Nó tự đếm, đủ là hoàn thành nhiệm vụ. Ý của mình là hỏi thế.

NhanVT
19-10-14, 08:21 PM
Xin chân thành cám ơn 2 pro. Vậy đoạn này có phải khi đủ 100 con quái thì ok phải không?
local nCount1 = me.GetTask(1730,1) -- Task Đếm Số Quái Giết được !
if nCount1 < 100 then

Nhưng vào đâu khai báo để đánh quái nó báo số lượng đã tiêu diệt? Đại khái giống như ải tiêu đao cốc yêu cầu đánh 20 con cá sấu chẳng hạn. Nó tự đếm, đủ là hoàn thành nhiệm vụ. Ý của mình là hỏi thế.

On kill npc
if npc name = "ca sau" then
settask + 1
end
:^o

chaulenba
19-10-14, 08:37 PM
On kill npc
if npc name = "ca sau" then
settask + 1
end
:^o


Chân thành cám ơn bạn, nhưng cho hỏi ngu tí: cái đoạn trên nhét nó vào chỗ nào?:((

satthupro95
19-10-14, 09:17 PM
local tbBossNew = Npc:GetClass("npc_sibinh");
tbBossNew.TaskGroup = 3043
tbBossNew.TaskCount = 1
function tbBossNew:OnDialog()
end
function tbBossNew:OnDeath(pNpcKiller)
local pPlayer = pNpcKiller.GetPlayer();
local nNpcMapId,nNpcPosX,nNpcPosY = him.GetWorldPos(); -- Hàm Get Map, Tọa Độ BOSS
local nPlayerMapId,nPlayerPosX,nPlayerPosY = pPlayer.GetWorldPos(); -- Hàm Get Map, Tọa Độ Người Hạ Gục BOSS
if not pPlayer then
return 0;
end
local nCountBossHaGuc = pPlayer.GetTask(self.TaskGroup,self.TaskCount); -- Task Đếm Số BOSS Hạ Gục
pPlayer.SetTask(self.TaskGroup,self.TaskCount,nCou ntBossHaGuc + 1); -- GetTask, Hạ Gục 1 BOSS Task +1
end

Đây là 1 script của 1 boss, có hàm SetTask sau khi bos chết

chaulenba
20-10-14, 11:31 AM
local tbBossNew = Npc:GetClass("npc_sibinh");
tbBossNew.TaskGroup = 3043
tbBossNew.TaskCount = 1
function tbBossNew:OnDialog()
end
function tbBossNew:OnDeath(pNpcKiller)
local pPlayer = pNpcKiller.GetPlayer();
local nNpcMapId,nNpcPosX,nNpcPosY = him.GetWorldPos(); -- Hàm Get Map, Tọa Độ BOSS
local nPlayerMapId,nPlayerPosX,nPlayerPosY = pPlayer.GetWorldPos(); -- Hàm Get Map, Tọa Độ Người Hạ Gục BOSS
if not pPlayer then
return 0;
end
local nCountBossHaGuc = pPlayer.GetTask(self.TaskGroup,self.TaskCount); -- Task Đếm Số BOSS Hạ Gục
pPlayer.SetTask(self.TaskGroup,self.TaskCount,nCou ntBossHaGuc + 1); -- GetTask, Hạ Gục 1 BOSS Task +1
end

Đây là 1 script của 1 boss, có hàm SetTask sau khi bos chết

Cám ơn satthupro nhiều, tức là mình phải gán cho con quái một cái code, trong đó có hàm setTask.