PDA

View Full Version : [JX] Hỏi về Thời gian của vòng sáng



DarkUnDer
31-03-16, 08:49 PM
Chào các bạn mình muốn hỏi về cách chỉnh sửa thời gian vòng sáng ... mình nhận vóng sáng thì trong game thì ko bị mất... khi thoát ra vào lại thì vòng sáng bị mất
mình muốn chỉnh cho vòng sáng đó ko bị mất thì phải chỉnh như thế nào vậy ạ ?
Code vòng sáng :


function vongsa()
n_title = 3000 -- S?a ID danh hi?u vào
local nServerTime = GetCurServerTime()+ 1728000; --20*24*60*60
local nDate = FormatTime2Number(nServerTime);
local nDay = floor(mod(nDate,1000000) / 10000);
local nMon = mod(floor(nDate / 1000000) , 100)
local nTime = nMon * 1000000 + nDay * 10000
Title_AddTitle(n_title, 2, nTime)
Title_ActiveTitle(n_title)
end

DarkUnDer
01-04-16, 12:14 PM
Ai giúp mình với ạ :"( .

Kethanglang
01-04-16, 12:27 PM
Ai giúp mình với ạ :"( .

Theo mình thì bạn đừng tắt server là ko bị.

wermanhme1990
01-04-16, 12:29 PM
Thấy bạn post hỏi bữa giờ, không ai giúp được đâu, tu luyện c/c++ mấy năm, rồi giải quyết được à.

DarkUnDer
01-04-16, 12:44 PM
Theo mình thì bạn đừng tắt server là ko bị.

Mình ko có tắt server. thoát acc ra vào lại là bị à bạn

khanhhello9091
01-04-16, 02:23 PM
Chào các bạn mình muốn hỏi về cách chỉnh sửa thời gian vòng sáng ... mình nhận vóng sáng thì trong game thì ko bị mất... khi thoát ra vào lại thì vòng sáng bị mất
mình muốn chỉnh cho vòng sáng đó ko bị mất thì phải chỉnh như thế nào vậy ạ ?
Code vòng sáng :


function vongsa()
n_title = 3000 -- S?a ID danh hi?u vào
local nServerTime = GetCurServerTime()+ 1728000; --20*24*60*60
local nDate = FormatTime2Number(nServerTime);
local nDay = floor(mod(nDate,1000000) / 10000);
local nMon = mod(floor(nDate / 1000000) , 100)
local nTime = nMon * 1000000 + nDay * 10000
Title_AddTitle(n_title, 2, nTime)
Title_ActiveTitle(n_title)
end
ai cũng vậy thôi bạn à...JX k phải hoàn hảo...nên đa số dính 1 số lỗi ...
Mình gợi ý cho bạn cái chỉnh sửa time nhé :D
local nServerTime = GetCurServerTime()+ 1728000; --20*24*60*60

Kethanglang
01-04-16, 02:26 PM
Mình ko có tắt server. thoát acc ra vào lại là bị à bạn

Ủa sao kì nhỉ, mình thoát ra vào lại nó còn nguyên, muốn tắt nó cũng ko được.

khanhhello9091
01-04-16, 02:38 PM
Ủa sao kì nhỉ, mình thoát ra vào lại nó còn nguyên, muốn tắt nó cũng ko được.

cái này k biết tùy sv nữa bạn à..mình xài sv minhduc ..thỉnh thoảng nó tắt..

Kethanglang
01-04-16, 02:47 PM
cái này k biết tùy sv nữa bạn à..mình xài sv minhduc ..thỉnh thoảng nó tắt..

Bác thử dùng code danh hiệu xem, bên topic fix lỗi từ A»z.

tvnnam
01-04-16, 02:48 PM
cái này k biết tùy sv nữa bạn à..mình xài sv minhduc ..thỉnh thoảng nó tắt..

để biết nó hoạt động thế nào thì bạn nên tìm hiểu cấu trúc của hàm.... bạn tham khảo các hàm khác thêm danh hiệu thử xem...

Kethanglang
01-04-16, 02:52 PM
để biết nó hoạt động thế nào thì bạn nên tìm hiểu cấu trúc của hàm.... bạn tham khảo các hàm khác thêm danh hiệu thử xem...

Anh Nam cho hỏi hàm cho nhân vật trở lại trạng thái bình thường với anh.

tvnnam
01-04-16, 03:19 PM
Anh Nam cho hỏi hàm cho nhân vật trở lại trạng thái bình thường với anh.


SetTimer: cài đặt file chạy sau mỗi n giây trong hàm

Cú pháp: SetTimer(thời gian*18,id file muốn chạy trong settings\timertask.txt)

Thời gian là giây

Vd:SetTimer(60*18,1)
Sau 60 giây sẽ chạy file có id 1 trong Timertask.txt

Lưu ý file dc chạy thì sẽ được duyệt bằng hàm function OnTimer() thôi,có nghĩa là sẽ chạy file đó và các câu lệnh chứa trong hàm function OnTimer()

StopTimer():thôi ko chạy file đã được dùng hàm function OnTimer()

Cú pháp : StopTimer()

DarkUnDer
01-04-16, 03:27 PM
Ủa sao kì nhỉ, mình thoát ra vào lại nó còn nguyên, muốn tắt nó cũng ko được.


Vậy hả. Bạn cho mình xin code adđ vòng sáng của bạn với.

vn_soldier
01-04-16, 10:15 PM
Để mình phân tích cách giải quyết 1 vấn đề của mình cho các bạn hiểu nhé.

1.Đầu tiên mình muốn add vòng sáng nhưng lại xảy ra lỗi mất khi thoát game.
2.Mình sẽ nghĩ đến vòng sáng của danh hiệu liên đấu vì khi nhận vòng này k mất khi logout.
3.Bởi vì mình k hề biết chức năng liên đấu nằm ở đâu, nên mình sẽ search từ "liên đấu" trong tất cả các file trong thư mục script.
4.Sau khi tìm kiếm mình tìm được hàm phát thưởng liên đấu wlls_wantaward_title
5.Ở hàm nay khi mới nhìn mình sẽ không hiểu hết nội dung nên mình sẽ chọn lọc nội dung mình cho là cần thiết.

local nServerTime = GetCurServerTime()+ 1728000; --20*24*60*60
local nDate = FormatTime2Number(nServerTime);
local nDay = floor(mod(nDate,1000000) / 10000);
local nMon = mod(floor(nDate / 1000000) , 100)

local nTime = nMon * 1000000 + nDay * 10000 -- ³ÖÐøµ½Ï¢½ìÁªÈü½áÊø
_M("Title_AddTitle", n_title, nTime)

--RemoveÎäÁÖÃËÖ÷ºÀ¹â£¬ÔÚaddТµÄ� �À¹â֮ǰ- Modified by DinhHQ - 20110524
if Title_GetActiveTitle() == 3000 then
Title_RemoveTitle(3000)
end
if GetSkillState(1500) ~= -1 then
RemoveSkillState(1500)
end

Title_AddTitle(n_title, 2, nTime)
Title_ActiveTitle(n_title)


SetTask(1122, n_title) --µ±Ç°Íæ¼ÒÁìÈ¡µÄÊÇÄĸöÍ·ÏÎID

Khi phân tích những thứ này mình sẽ được:
-Thời gian add của vòng sáng là 20 ngày(20*24*60*60)
-Lưu id và thời gian của danh hiệu vào file
-ID của vòng sáng sẽ là biến n_title với giá trị được lấy từ table WLLS_AWARD_TITLE hoặc WLLS_AWARD_TITLE_EX đối với liên đấu cao cấp
-Hàm để remove title cũ Title_RemoveTitle(id)
-Hàm để kiểm tra và remove hiệu ứng hiện tại GetSkillState(id) và RemoveSkillState(id)
-Hàm add và kích hoạt title Title_AddTitle(id, stt, time), Title_ActiveTitle(id)
6.Và mình thấy 1 hàm SetTask(1122, n_title), tuy chưa chắc chắn nhưng mình đoán nó sẽ lưu lại id của danh hiệu để add khi online lần sau.
7.Khi nhìn vào hàm add title Title_AddTitle(n_title, 2, nTime) mình sẽ thấy được số thứ tự của title này là 2 và nhìn vào taskid là 1122 thì mình sẽ có thể đoán được taskid của title được bắt đầu từ 1120 với số thứ tự tương ứng (0-1120,1-1121,2-1122...) mà tối đa là bao nhiêu thì mình tạm thời chưa tính đến(nếu chuyên sâu hơn mình sẽ test đoạn này sau cũng không muộn).

Cuối cùng sau khi trải qua 7 bước này mình đã vô tình giải quyết được vấn đề các bạn đang thắc mắc:
-Add danh hiệu bị mất khi thoát game
-Cách để xóa danh hiêu
-Cách để xóa hiệu ứng
-Hiểu được cách lưu title vào task

Kết: Mong rằng với cách suy luận vấn đề như vậy các bạn có thể áp dụng theo khi giải quyết mọi vấn đề khác. Những bạn nói bạn là newbie không thể giải quyết như vậy được thì nói luôn, bạn chỉ cần dựa vào phuơng pháp mô phỏng thì sẽ giải quyết rất gọn, chỉ nói đến từ "khó" khi sáng tạo mà thôi.