PDA

View Full Version : [KT] Xin cao nhân chỉ giúp em script này sai ở chổ nào ạ!



Hollister
15-09-16, 02:41 PM
Tình hình em tạo ra một item và file .lua trong script item có tên là itemvip. Em khai báo như thế này mà gameserver nó cú báo lỗi ai có thể giúp em được không?


local tbItem = Item:GetClass("itemvip");

tbItem.TaskGroup_DiemDanh = 3033;
tbItem.TaskId_Day = 1;
tbItem.Task_DiemDanh = 2;
tbItem.Task_GioiHanNgay = 3;
tbItem.Use_Max = 0;

function tbItem:OnDialog()
local nDate = tonumber(GetLocalDate("%Y%m%d"));
if me.GetTask(self.TaskGroup_DiemDanh, self.TaskId_Day) < nDate then
me.SetTask(self.TaskGroup_DiemDanh, self.TaskId_Day, nDate);
me.SetTask(self.TaskGroup_DiemDanh, self.Task_GioiHanNgay, 0);
end
local nCount = me.GetTask(self.TaskGroup_DiemDanh, self.Task_DiemDanh);
local szMsg = "<color=yellow>Điểm Danh Hằng Ngày nhận phần thưởng cực <color=red>khủng<color>\n\n"..
"<color=pink>Ngươi đã điểm danh ngày thứ:<color> <color=green>".. nCount .."<color>"
local tbOpt = {
{"<color=yellow>Điểm danh<color>", self.diemdanh, self};
{"Kết thúc đối thoại"}
}
Dialog:Say(szMsg,tbOpt)
end
function tbItem:diemdanh()
local nCount1 = me.GetTask(self.TaskGroup_DiemDanh, self.Task_DiemDanh);
local nCount2 = me.GetTask(self.TaskGroup_DiemDanh, self.Task_GioiHanNgay);
if nCount2 > self.Use_Max then
Dialog:Say("Ngươi đã điểm danh rồi !")
return 0;
end
if nCount1 >= 30 then
me.SetTask(self.TaskGroup_DiemDanh,self.Task_DiemD anh, 0); -- reset điểm danh
Dialog:Say("Ngươi đã điểm danh hết tháng này ta thưởng cho 10 vạn đồng khóa và 50 vạn bạc khóa để khích lệ sự kiên trì của ngươi. <color=red>Điểm danh lại từ đầu!<color>")
me.AddBindMoney(500000,0);
me.AddBindCoin(100000);
return 0;
end
me.SetTask(self.TaskGroup_DiemDanh,self.Task_GioiH anNgay, nCount2 + 1);
me.SetTask(self.TaskGroup_DiemDanh,self.Task_DiemD anh, nCount1 + 1); -- Tăng 1 ngày
Dialog:Say("Đã điểm danh ngày thứ <color=green>".. nCount1 + 1 .."<color>. Nhận 5 huyền tinh 6")
me.AddItem(18,1,114,6);
me.AddItem(18,1,114,6);
me.AddItem(18,1,114,6);
me.AddItem(18,1,114,6);
me.AddItem(18,1,114,6);
end

kebactinh86
15-09-16, 04:21 PM
Cách đơn giản nhất là coi log gamesever báo lỗi dồng nào thì tìm dòng đó check kỹ lại .

Hollister
15-09-16, 04:47 PM
Cách đơn giản nhất là coi log gamesever báo lỗi dồng nào thì tìm dòng đó check kỹ lại .

Nó không báo lỗi dòng mà nó báo là can't load file ấy anh em cũng ko biết sửa ở đâu. Anh có thể giúp e được ko?

Sesshomaru
15-09-16, 05:18 PM
Thiếu dấu ; ở hàm Dialog.................

tuidangvui
15-09-16, 06:05 PM
local tbOpt = {
{"<color=yellow>Điểm danh<color>", self.diemdanh, self};
{"Kết thúc đối thoại"}
}
fix

local tbOpt = {
{"<color=yellow>Điểm danh<color>", self.diemdanh, self};
{"Kết thúc đối thoại"} ;
}

or

local tbOpt = {
{"<color=yellow>Điểm danh<color>", self.diemdanh, self},
{"Kết thúc đối thoại"} ,
}

<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>

Hollister
15-09-16, 06:19 PM
Thiếu dấu ; ở hàm Dialog.................

Em đã làm theo anh nhưng vẫn không được anh ạ

--- Chế độ gộp bài viết ---


fix

or

<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>

Anh có thể giúp em hiểu rõ thêm được không anh. Em đã cố gắng lắm nhưng mãi vẫn không làm được

kebactinh86
15-09-16, 06:50 PM
Bác ấy viết chỗ lỗi của bác rồi cách fix bền dưới có 2 cách fix nên bác ấy dùng chử or cho phương án fix thứ 2 đó thôi .code đa phần sẽ có dấu ";" hoặc dấu "," đã ngắt dòng lệnh bạn chú ý khi viết là được mà.30 chả chưa ta 8-x8-x8-x8-x8-x8-x

Hollister
15-09-16, 07:08 PM
Bác ấy viết chỗ lỗi của bác rồi cách fix bền dưới có 2 cách fix nên bác ấy dùng chử or cho phương án fix thứ 2 đó thôi .code đa phần sẽ có dấu ";" hoặc dấu "," đã ngắt dòng lệnh bạn chú ý khi viết là được mà.30 chả chưa ta 8-x8-x8-x8-x8-x8-x

Em đã thử cả 2 cách nhưng không cách nào được. Server vẫn báo lỗi huhu. Ai giúp em với

wermanhme1990
15-09-16, 07:18 PM
Báo lỗi thế nào bạn upload hình ảnh chi tiết lỗi lên.

Hollister
15-09-16, 08:35 PM
Báo lỗi thế nào bạn upload hình ảnh chi tiết lỗi lên.

Mang mình ko up dc huhu. no ghi ko thể load file đó thôi :(
Mình làm mãi mà ko biết nó lỗi ở chổ nào. Script mình đã gửi lên nhờ anh em xem hộ mà vẫn hok dc :(

satthupro95
15-09-16, 08:59 PM
Đối với item Item:GetClass là OnUse không phải OnDialog, OnDialog dùng cho Npc:GetClass nhé

Sửa function tbItem:OnDialog()
Thành function tbItem:OnUse()

Hollister
15-09-16, 09:05 PM
Đối với item Item:GetClass là OnUse không phải OnDialog, OnDialog dùng cho Npc:GetClass nhé

Sửa function tbItem:OnDialog()
Thành function tbItem:OnUse()

Dạ em cũng đã sửa như anh nói mà vẫn báo lỗi anh à! Em cũng hok hiểu sao nữa :(

visaothe123
16-09-16, 02:26 AM
Lỗi này là do khai báo thiếu hoặc chưa khai task ID, xem và fix nhé :D


1: Chèn thêm giòng code: local nCount = me.GetTask(3033,1); này bên dưới code local nDate = tonumber , để cho thông báo szMsg. có thể load được nCount

2: Nếu dùng cho NPC hoặc Item thì phải làm theo hướng dẫn của satthupro95

3: chưa khai báo task 3033 ở task_def.txt ở GS + GC :-" , lúc nhận k thể lưu task nên lỗi thông báo k thể load file...

vào khai báo thế này: 3033 1 3 Code Task Điểm Dạnh,(1) thời gian nhận,(2) task ngày nhận,(3) Giới hạn nhận

Chú ý cách 1 fix lại chảy thử và xem nhé, Ok men.................................

satthupro95
16-09-16, 02:52 AM
Lỗi ở đây nè bác ơi :D


tbItem.TaskGroup_DiemDanh = 3033; - chưa khai báo task 3033 ở task_def.txt ở GS + GC :-" , k thể lưu task nên lỗi thông báo k thể load file chứ sao :)

vào khai báo thế này: 3033 1 3 Code Task Điểm Dạnh,(1) thời gian nhận,(2) task ngày nhận,(3) Giới hạn nhận

0k men.................................

Task không cần khai báo vẫn dùng được bình thường, lỗi của chủ thread là nằm ở cái Dialog:Say, kết thúc mà k có dấu chấm phẩy ;

visaothe123
16-09-16, 03:08 AM
Task không cần khai báo vẫn dùng được bình thường, lỗi của chủ thread là nằm ở cái Dialog:Say, kết thúc mà k có dấu chấm phẩy ;

không khai báo task id, khi nhận thương sẽ báo lỗi load file đến GS bác cứ check, cái này không fix là bị ăn hành, Còn Dialog:Say khi ở giòng cuối cùng kết thúc script, k có ; vẫn load được.. chỉ khi dùng me. playr. local không có ; mới báo lỗi.. cái chủ yếu là thiếu Get task 3033, hoặc chưa khai báo Task id, chủ yếu chủ topic lỗi khi kích vào, hay khi nhận thưởng mới báo lỗi.

Nếu Lỗi khi kích vào npc: Fix Cách 1 -> 2
Nếu Lỗi Khi nhận thưởng: Fix Cách 3 ...

Hollister
16-09-16, 02:58 PM
Em xin cám ơn tất cả các anh đã giúp em. Nhưng thật sự em đã làm theo hết cách của các anh nhưng vẫn ko thể nào khai báo đúng. Em khai báo task bên GS rồi nhưng vẫn không thành công đây là task của em


3033 1 3 Điểm Danh Hằng Ngày,(1) thời gian nhận,(2) task ngày nhận,(3) Giới hạn nhận

và đây là Script em đã chỉnh sửa


local tbItem = Item:GetClass("itemvip");
tbItem.TaskGroup_DiemDanh = 3033;
tbItem.TaskId_Day = 1;
tbItem.Task_DiemDanh = 2;
tbItem.Task_GioiHanNgay = 3;
tbItem.Use_Max = 0;

function tbItem:OnUse()
local nDate = tonumber(GetLocalDate("%Y%m%d"));
local nCount = me.GetTask(3033,1);
if me.GetTask(self.TaskGroup_DiemDanh, self.TaskId_Day) < nDate then
me.SetTask(self.TaskGroup_DiemDanh, self.TaskId_Day, nDate);
me.SetTask(self.TaskGroup_DiemDanh, self.Task_GioiHanNgay, 0);
end
local nCount = me.GetTask(self.TaskGroup_DiemDanh, self.Task_DiemDanh);
local szMsg = "<color=yellow>Điểm Danh Hằng Ngày nhận phần thưởng cực <color=red>khủng<color>\n\n"..
"<color=pink>Ngươi đã điểm danh ngày thứ:<color> <color=green>".. nCount .."<color>"
local tbOpt = {
{"<color=yellow>Điểm danh<color>", self.diemdanh, self},
{"Kết thúc đối thoại"},
}
Dialog:Say(szMsg,tbOpt);
end

function tbItem:diemdanh()
local nCount1 = me.GetTask(self.TaskGroup_DiemDanh, self.Task_DiemDanh);
local nCount2 = me.GetTask(self.TaskGroup_DiemDanh, self.Task_GioiHanNgay);
if nCount2 > self.Use_Max then
Dialog:Say("Ngươi đã điểm danh rồi !");
return 0;
end
if nCount1 >= 30 then
me.SetTask(self.TaskGroup_DiemDanh,self.Task_DiemD anh, 0); -- reset điểm danh
Dialog:Say("Ngươi đã điểm danh hết tháng này ta thưởng cho 10 vạn đồng khóa và 50 vạn bạc khóa để khích lệ sự kiên trì của ngươi. <color=red>Điểm danh lại từ đầu!<color>");
me.AddBindMoney(500000,0);
me.AddBindCoin(100000);
return 0;
end
me.SetTask(self.TaskGroup_DiemDanh,self.Task_GioiH anNgay, nCount2 + 1);
me.SetTask(self.TaskGroup_DiemDanh,self.Task_DiemD anh, nCount1 + 1); -- Tăng 1 ngày
Dialog:Say("Đã điểm danh ngày thứ <color=green>".. nCount1 + 1 .."<color>. Nhận 5 huyền tinh 6");
me.AddItem(18,1,114,6);
me.AddItem(18,1,114,6);
me.AddItem(18,1,114,6);
me.AddItem(18,1,114,6);
me.AddItem(18,1,114,6);
end


thật sự em bất lực về script này :(

na.ilusm89
16-09-16, 05:17 PM
Em xin cám ơn tất cả các anh đã giúp em. Nhưng thật sự em đã làm theo hết cách của các anh nhưng vẫn ko thể nào khai báo đúng. Em khai báo task bên GS rồi nhưng vẫn không thành công đây là task của em


3033 1 3 Điểm Danh Hằng Ngày,(1) thời gian nhận,(2) task ngày nhận,(3) Giới hạn nhận

và đây là Script em đã chỉnh sửa


local tbItem = Item:GetClass("itemvip");
tbItem.TaskGroup_DiemDanh = 3033;
tbItem.TaskId_Day = 1;
tbItem.Task_DiemDanh = 2;
tbItem.Task_GioiHanNgay = 3;
tbItem.Use_Max = 0;

function tbItem:OnUse()
local nDate = tonumber(GetLocalDate("%Y%m%d"));
local nCount = me.GetTask(3033,1);
if me.GetTask(self.TaskGroup_DiemDanh, self.TaskId_Day) < nDate then
me.SetTask(self.TaskGroup_DiemDanh, self.TaskId_Day, nDate);
me.SetTask(self.TaskGroup_DiemDanh, self.Task_GioiHanNgay, 0);
end
local nCount = me.GetTask(self.TaskGroup_DiemDanh, self.Task_DiemDanh);
local szMsg = "<color=yellow>Điểm Danh Hằng Ngày nhận phần thưởng cực <color=red>khủng<color>\n\n"..
"<color=pink>Ngươi đã điểm danh ngày thứ:<color> <color=green>".. nCount .."<color>"
local tbOpt = {
{"<color=yellow>Điểm danh<color>", self.diemdanh, self},
{"Kết thúc đối thoại"},
}
Dialog:Say(szMsg,tbOpt);
end

function tbItem:diemdanh()
local nCount1 = me.GetTask(self.TaskGroup_DiemDanh, self.Task_DiemDanh);
local nCount2 = me.GetTask(self.TaskGroup_DiemDanh, self.Task_GioiHanNgay);
if nCount2 > self.Use_Max then
Dialog:Say("Ngươi đã điểm danh rồi !");
return 0;
end
if nCount1 >= 30 then
me.SetTask(self.TaskGroup_DiemDanh,self.Task_DiemD anh, 0); -- reset điểm danh
Dialog:Say("Ngươi đã điểm danh hết tháng này ta thưởng cho 10 vạn đồng khóa và 50 vạn bạc khóa để khích lệ sự kiên trì của ngươi. <color=red>Điểm danh lại từ đầu!<color>");
me.AddBindMoney(500000,0);
me.AddBindCoin(100000);
return 0;
end
me.SetTask(self.TaskGroup_DiemDanh,self.Task_GioiH anNgay, nCount2 + 1);
me.SetTask(self.TaskGroup_DiemDanh,self.Task_DiemD anh, nCount1 + 1); -- Tăng 1 ngày
Dialog:Say("Đã điểm danh ngày thứ <color=green>".. nCount1 + 1 .."<color>. Nhận 5 huyền tinh 6");
me.AddItem(18,1,114,6);
me.AddItem(18,1,114,6);
me.AddItem(18,1,114,6);
me.AddItem(18,1,114,6);
me.AddItem(18,1,114,6);
end


thật sự em bất lực về script này :(

Code đúng rồi bạn =)) chắc khai báo task trùng hay hàm get từ NPC hay từ Item sang item này sai
Còn code đầu vẫn đúng chỉ là sai chổ OnDialog đối với NPC OnUse đối với Item

Ví dụ bạn gọi từ Túi tân thủ thì sài như này sẻ get gọi ra được này


function tbGift:DiemDanh()
local tbItem = Item:GetClass("itemvip");
tbItem:OnUse();
end

visaothe123
16-09-16, 05:46 PM
Code đâu tiên của bác chủ topic, bị lỗi nhé.. sao đúg đc bác na :) .. bác chủ topic này đùa vãi ra :)), mình lấy code của bác test thử, chỉ lỗi k khai báo gettask 3033 thôi.. fix xong bình thường k bị lỗi nữa, bác này khai báo kiểu gì mà lỗi thì bó tay.. còn khai bao chung task cũng k bị lỗi load file đc..

na.ilusm89
16-09-16, 05:51 PM
Code đâu tiên của bác chủ topic, bị lỗi nhé.. sao đúg đc bác na :) .. bác chủ topic này đùa vãi ra :)), mình lấy code của bác test thử, chỉ lỗi k khai báo gettask 3033 thôi.. fix xong bình thường k bị lỗi nữa, bác này khai báo kiểu gì mà lỗi thì bó tay.. còn khai bao chung task cũng k bị lỗi load file đc..

Còn code đầu vẫn đúng chỉ là sai chổ OnDialog đối với NPC OnUse đối với Item

ko đọc kỹ coment rồi e =))

visaothe123
16-09-16, 06:00 PM
Còn code đầu vẫn đúng chỉ là sai chổ OnDialog đối với NPC OnUse đối với Item

ko đọc kỹ coment rồi e =))

Anh k thấy đã bày cách fixx ở trên rõ rang rồi à.. do bác này khai báo sai thôi.. mà thật sự k có cái gettask 3033 thì k bao h load đc nhé... a na ngon copy code đầu tiên của chủ topic fix lại dùng cho item hoặc npc đi, xem có báo lỗi k là biết liền :)

na.ilusm89
16-09-16, 06:12 PM
Anh k thấy đã bày cách fixx ở trên rõ rang rồi à.. do bác này khai báo sai thôi.. mà thật sự k có cái gettask 3033 thì k bao h load đc nhé... a na ngon copy code đầu tiên của chủ topic fix lại dùng cho item hoặc npc đi, xem có báo lỗi k là biết liền :)

Bó chân bó cẳng


Còn code đầu vẫn đúng chỉ là sai chổ OnDialog đối với NPC OnUse đối với Item

Nói như này rồi còn hạch =)) E thích sài loại nào


Đối với item

local tbItem = Item:GetClass("itemvip");

tbItem.TaskGroup_DiemDanh = 3033;
tbItem.TaskId_Day = 1;
tbItem.Task_DiemDanh = 2;
tbItem.Task_GioiHanNgay = 3;
tbItem.Use_Max = 0;

function tbItem:OnUse()

Đối với NPC


local tbNpc =Npc:GetClass("itemvip");

tbNpc.TaskGroup_DiemDanh = 3033;
tbNpc.TaskId_Day = 1;
tbNpc.Task_DiemDanh = 2;
tbNpc.Task_GioiHanNgay = 3;
tbNpc.Use_Max = 0;

function tbNpc:OnDialog()

visaothe123
16-09-16, 06:23 PM
Thì cách anh bày gióng như satthupro đã hướng dẫn.. nhưng fix đúng dùng cho npc hoặc item, cũng sẽ bị lỗi.. nếu k thêm code gettask 3033 em đã hướng dẫn ở trên.. b-)...

Hollister
16-09-16, 07:44 PM
Em xin lỗi nhưng cái phần này em hơi ngu xin mấy anh chỉ giúp e. Sao em chỉnh sửa mãi mà vẫn bị lỗi. Các anh có thể chỉ giúp em cụ thể được không?

satthupro95
16-09-16, 09:14 PM
function tbItem:OnUse()
local nDate = tonumber(GetLocalDate("%Y%m%d"));
local nCount = me.GetTask(3033,1);
if me.GetTask(self.TaskGroup_DiemDanh, self.TaskId_Day) < nDate then
me.SetTask(self.TaskGroup_DiemDanh, self.TaskId_Day, nDate);
me.SetTask(self.TaskGroup_DiemDanh, self.Task_GioiHanNgay, 0);
end
local nCount = me.GetTask(self.TaskGroup_DiemDanh, self.Task_DiemDanh);
local szMsg = "<color=yellow>Điểm Danh Hằng Ngày nhận phần thưởng cực <color=red>khủng<color>\n\n"..
"<color=pink>Ngươi đã điểm danh ngày thứ:<color> <color=green>".. nCount .."<color>"
local tbOpt = {
{"<color=yellow>Điểm danh<color>", self.diemdanh, self},
{"Kết thúc đối thoại"},
}
Dialog:Say(szMsg,tbOpt);
end

Bạn có thấy gì lạ không :D
với lại mình đã test code của bạn, chạy tốt nhé
Ngoài ra ở trong function diemdanh bạn cần kiểm tra hành trang xem có đủ ô trống không trước khi settask và gửi vật phẩm

Hollister
16-09-16, 09:57 PM
function tbItem:OnUse()
local nDate = tonumber(GetLocalDate("%Y%m%d"));
local nCount = me.GetTask(3033,1);
if me.GetTask(self.TaskGroup_DiemDanh, self.TaskId_Day) < nDate then
me.SetTask(self.TaskGroup_DiemDanh, self.TaskId_Day, nDate);
me.SetTask(self.TaskGroup_DiemDanh, self.Task_GioiHanNgay, 0);
end
local nCount = me.GetTask(self.TaskGroup_DiemDanh, self.Task_DiemDanh);
local szMsg = "<color=yellow>Điểm Danh Hằng Ngày nhận phần thưởng cực <color=red>khủng<color>\n\n"..
"<color=pink>Ngươi đã điểm danh ngày thứ:<color> <color=green>".. nCount .."<color>"
local tbOpt = {
{"<color=yellow>Điểm danh<color>", self.diemdanh, self},
{"Kết thúc đối thoại"},
}
Dialog:Say(szMsg,tbOpt);
end


Bạn có thấy gì lạ không :D
với lại mình đã test code của bạn, chạy tốt nhé
Ngoài ra ở trong function diemdanh bạn cần kiểm tra hành trang xem có đủ ô trống không trước khi settask và gửi vật phẩm

Thật sự em hok biết khác ở điểm nào! Cho em hỏi có khi nào em sai ở phần khai báo item trong Scriptitem ko ạ. Mà server không thể load file .lua
Đây là dòng em khai báo item có sai không ạ :(


Thẻ Vip Kiếm Thế 18 1 313 2 \image\item\other\xoyogame\yinka_jisha.spr 32 <color=gold>Thẻ Vip Kiếm Thế<color> 0 1 1 5000 1 1 itemvip

Cho em hỏi số 32 có nhiệm vụ gì ạ :(

satthupro95
16-09-16, 10:44 PM
Thật sự em hok biết khác ở điểm nào! Cho em hỏi có khi nào em sai ở phần khai báo item trong Scriptitem ko ạ. Mà server không thể load file .lua
Đây là dòng em khai báo item có sai không ạ :(


Thẻ Vip Kiếm Thế 18 1 313 2 \image\item\other\xoyogame\yinka_jisha.spr 32 <color=gold>Thẻ Vip Kiếm Thế<color> 0 1 1 5000 1 1 itemvip

Cho em hỏi số 32 có nhiệm vụ gì ạ :(

chụp cái ảnh lúc gs báo lỗi không load được lên đây để mọi người xem

Hollister
16-09-16, 10:58 PM
chụp cái ảnh lúc gs báo lỗi không load được lên đây để mọi người xem

Đây ạ. Hình em nó đây ạ.

<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>

Xin các anh chỉ giúp em

tuidangvui
16-09-16, 11:08 PM
Ác đạn, chuyển file utf-8 dùng notepad ++ cho chắc

Hollister
16-09-16, 11:21 PM
Ác đạn, chuyển file utf-8 dùng notepad ++ cho chắc

Là sao anh. Em dùng notepad ++ mà. Em làm 1 item khác thì không sao viết script cũng bình thường. Nhưng đến script này thì bị vậy :(

wermanhme1990
16-09-16, 11:48 PM
Bạn upload cái ảnh lỗi như mình nói thì mấy ông kia khỏi cải nhau rồi, bạn coppy 1 file lua script bất kỳ, rồi coppy cái code đó qua, sữa tên file lại, dùng notepad++ nha, để tránh lỗi.
utf-8 without BOM

Hollister
17-09-16, 12:09 AM
Bạn upload cái ảnh lỗi như mình nói thì mấy ông kia khỏi cải nhau rồi, bạn coppy 1 file lua script bất kỳ, rồi coppy cái code đó qua, sữa tên file lại, dùng notepad++ nha, để tránh lỗi.
utf-8 without BOM

Thanks bạn rất nhiều. Để mình sửa lại xem thử thế nào :)

Hollister
17-09-16, 12:22 AM
Em cảm ơn các anh rất nhiều. Em mới học dev nên chả biết gì nhiều. Cám ơn các anh đã nhiệt tình giúp đỡ em :)

Các anh cho em hỏi em xíu nữa được không ạ. Em coppy cái Script của anh Sess là thẻ X2 Exp ấy Script chạy mà em vào game thì hok nhấp chuột phải vào thẻ ấy được. Lỗi đó là sao mấy. Script của nó đây ạ



--江湖威望令牌--孙多良--2008.10.30
local tbItem = Item:GetClass("x2exp1");
tbItem.TASKGROUP = 3003;-- 人物任务变量的groupID
tbItem.TASKLASTTIME_ID = 1; -- 人物任务变量的最后时间保存的ID
tbItem.TASKREMAINTIME_ID = 2; -- 人物任务变量的剩余累积时间ID 单位:小时乘10
tbItem.SKILL_ID_EXP = 332; -- 332,经验加倍技能ID
tbItem.SKILL_ID_EXP_LEVEL = 10; -- Cấp độ của skill.Cấp 10 sẽ là + thêm 100% kinh nghiệm.Cấp 20 là cộng 200%(tương đương x3)

tbItem.tbEffect = {
[1] = 1;--(Thời gian hiệu nghiệm của thẻ.Đơn vị tính bằng Giờ)
}

function tbItem:OnUse()
self:Update();
local nRemainTime = self:GetRemainTime();
local nExpSkillLevel, nExpStateType, nExpEndTime, bExpIsNoClearOnDeath = me.GetSkillState(self.SKILL_ID_EXP);
local nNewExpTime = 0;
if (not nExpEndTime) then
nExpEndTime = 0;
end
nRemainTime = nRemainTime - self.tbEffect[it.nLevel];
nNewExpTime = self.tbEffect[it.nLevel] * 18 * 3600 + nExpEndTime;
me.AddSkillState(self.SKILL_ID_EXP, self.SKILL_ID_EXP_LEVEL, 1, nNewExpTime, 1);
me.Msg(string.format("Bạn nhận được <color=yellow>%s giờ <color> nhân đôi kinh nghiệm.",self.tbEffect[it.nLevel]))
return 1;
end
function tbItem:Update()
local nLastTime = me.GetTask(self.TASKGROUP, self.TASKLASTTIME_ID);
local nNowTime = GetTime();
local nDays = self:CalculateDay(nLastTime, nNowTime);
local nRemainTime = nDays * 1.5 + self:GetRemainTime();
if (nRemainTime < 0.1) then nRemainTime = 0;
end
if (nLastTime <= 0) then
nRemainTime = 1.5;
end
me.SetTask(self.TASKGROUP, self.TASKLASTTIME_ID, nNowTime);me.SetTask(self.TASKGROUP, self.TASKREMAINTIME_ID, nRemainTime * 10); -- 存的是小时的十倍
end
-- 计算离上次更新时间过了多少天
function tbItem:CalculateDay(nLastTime, nNowTime)
local nLastDay = Lib:GetLocalDay(nLastTime);
local nNowDay = Lib:GetLocalDay(nNowTime);
local nDays = nNowDay - nLastDay; if (nDays < 0) then
nDays = 0;
end
return nDays;
end
function tbItem:GetRemainTime()
return me.GetTask(self.TASKGROUP, self.TASKREMAINTIME_ID) / 10;
end

Em khai báo Task như vậy có đúng không ạ


3003 1 2 x2 kinh nghiệm