PDA

View Full Version : [TLBB] Lỗi nhận quà hàng ngày bị trùng nhau



tronggavit
24-07-25, 10:14 AM
các pro cho mình hỏi mình có viết cái script nhận vật phẩm nhiệm vụ QLL,QTC như này, nhưng nó đang bị cái là khi mình nhận cái QTC key 88 thì cái key 89 nó cũng bị báo là đã nhận rồi, cho mình hỏi làm sao để 2 cái này nó tách biệt nhau để khi nhận thằng này thì thằng kia không bị ảnh hưởng ạ.

if key == 8 then
BeginEvent(sceneId)
AddNumText( sceneId, x045020_g_scriptId, "Nh§n VP Q1 Tô Châu", 6, 88 )
AddNumText( sceneId, x045020_g_scriptId, "Nh§n VP Q1 Lâu Lan", 6, 89 )
EndEvent(sceneId)
DispatchEventList(sceneId,selfId,targetId)
return
end

if key == 88 then
local QTC = "QTCVP" .. tostring(selfId)
if GetMissionData (sceneId, selfId, QTC1) == GetDayTime() then
BeginEvent(sceneId)
AddText(sceneId,"Hôm Nay Ngß¶i Ðã Nh§n V§t Ph¦m Nhi®m Vø R°i, Ngày Mai Hãy Quay LÕi!")
EndEvent(sceneId)
DispatchEventList(sceneId,selfId,targetId)
return
end
TryRecieveItem(sceneId,selfId,40004315,1) --QTC1
TryRecieveItem(sceneId,selfId,40004315,1)
TryRecieveItem(sceneId,selfId,40004315,1)
TryRecieveItem(sceneId,selfId,40004315,1)
TryRecieveItem(sceneId,selfId,40004315,1)
SetMissionData(sceneId,selfId, QTC, GetDayTime())
BeginEvent(sceneId)
AddText(sceneId,"Ðã Nh§n Ðßþc V§t Ph¦m Nhi®m Vø Tô Châu 1!!!")
EndEvent(sceneId)
DispatchEventList(sceneId, selfId, targetId)
LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfI d,selfId,148,0)
end

if key == 89 then
local QLL = "QTLLVP" .. tostring(selfId)
if GetMissionData (sceneId, selfId, QLL) == GetDayTime() then
BeginEvent(sceneId)
AddText(sceneId,"Hôm Nay Ngß¶i Ðã Nh§n V§t Ph¦m Nhi®m Vø R°i, Ngày Mai Hãy Quay LÕi!")
EndEvent(sceneId)
DispatchEventList(sceneId,selfId,targetId)
return
end
TryRecieveItem(sceneId,selfId,40004460,1) --QLL1
TryRecieveItem(sceneId,selfId,40004460,1)
TryRecieveItem(sceneId,selfId,40004460,1)
TryRecieveItem(sceneId,selfId,40004460,1)
TryRecieveItem(sceneId,selfId,40004460,1)
SetMissionData(sceneId,selfId, QLL, GetDayTime())
BeginEvent(sceneId)
AddText(sceneId,"Ðã Nh§n Ðßþc V§t Ph¦m Nhi®m Vø Tô Châu 1!!!")
EndEvent(sceneId)
DispatchEventList(sceneId, selfId, targetId)
LuaFnSendSpecificImpactToUnit(sceneId,selfId,selfI d,selfId,148,0)
end

huuduyen_05
25-07-25, 08:53 PM
Tầm này thì hỏi chatbot cho nhanh bạn, sẽ được trả lời chi tiết và sửa code dùm bạn luôn.
Code trên chỗ key 88 thì về mặt logic khi get thì biến khác mà khi set thì biến khác => dẫn tới không đúng mong đợi

Sói Đẹp Trai
09-08-25, 09:45 AM
SetMissionData(sceneId,selfId, QLL, GetDayTime())

Lỗi của bạn do đoạn này, SETMD nó KHÔNG sử dụng String, cụ thể cái QLL của bạn là dạng String, trong khi chỗ đó nó phải là 1 NUMBER tức là thứ tự của cái MD đó.
Kết quả là nó sẽ sử dụng cái giá trị -1 (ảo không tồn tại trong DB nhưng tồn tại trong phiên chạy của GS) => 2 thằng trông thì khác nhau nhưng thực tế là 1. Một số phiên bản cũ báo lỗi luôn thay vì mặc định dùng cái -1 => KHÔNG chạy script nốt

Ngoài ra có thể bạn không hiểu ý nghĩa của nó, và đúng là GET thì một đằng mà SET thì một kiểu => giả sử bỏ qua lỗi logic liên quan đến String.