Untitled
Anonymous
plain_text
03/09/2026 7:23 PM
3.5 KB
12
Indexable
// Thêm vào main.pwn
new bool:PlayerSpinProcessing[MAX_PLAYERS]; // chống spam click
public OnMobilePlayerRequestSpin(playerid, boxid)
{
// Kiểm tra UI có đang mở không
if(PlayerCurrentBox[playerid] != boxid || !PlayerIsOpening[playerid]) return 1;
// Chống spam: đang xử lý rồi thì bỏ qua
if(PlayerSpinProcessing[playerid]) return 1;
PlayerSpinProcessing[playerid] = true; // ← dùng flag riêng, KHÔNG đụng PlayerIsOpening
new itemID = GetCaseItemID(boxid);
if(itemID > 0)
{
if(CountItemInventory(playerid, itemID) < 1)
{
SendClientMessage(playerid, -1, "{FF6347}Ban da het hop qua nay roi!");
PlayerSpinProcessing[playerid] = false;
return 1;
}
RemoveItemInventory(playerid, itemID, 1);
}
new winSlot = SelectWeightedCaseItem(boxid);
if(winSlot == -1)
{
PlayerSpinProcessing[playerid] = false;
return 1;
}
PlayerFinalItem[playerid] = winSlot;
SendCaseSpinResultMobile(playerid, boxid, winSlot);
return 1;
}
public OnMobilePlayerSpinFinished(playerid, boxid)
{
// Không check PlayerIsOpening nữa, check PlayerSpinProcessing
if(!PlayerSpinProcessing[playerid]) return 1;
new iType = CaseOpenInfo[boxid][caseopen_Itemid][PlayerFinalItem[playerid]];
new iAmount = CaseOpenInfo[boxid][caseopen_Amount][PlayerFinalItem[playerid]];
XuLy_Gift_CaseOpen(playerid, boxid, PlayerFinalItem[playerid]);
new str[256];
format(str, sizeof(str), "{00FF87}Chuc mung! Ban vua mo duoc: {FFFFFF}%s x%s",
GetNameCaseOpen(iType), number_format(iAmount));
SendClientMessage(playerid, -1, str);
format(str, sizeof(str), "[MOBILE BOX %d] %s mo thanh cong %s x %s",
boxid, GetPlayerNameExt(playerid), GetNameCaseOpen(iType), number_format(iAmount));
Log("logs/vongquay_hopqua.log", str);
SaveCaseBoxHistory(playerid, boxid, iType, iAmount);
printf("[MOBILE CASE] SpinFinished player=%d box=%d type=%d amount=%d",
playerid, boxid, iType, iAmount);
PlayerSpinProcessing[playerid] = false; // ← mở khóa để quay tiếp
// PlayerIsOpening giữ = true → player vẫn đang ở UI, bấm quay tiếp được
return 1;
}
public OnMobilePlayerClosedCase(playerid)
{
PlayerIsOpening[playerid] = false;
PlayerSpinProcessing[playerid] = false; // ← reset cả 2
PlayerCurrentBox[playerid] = 0;
TogglePlayerControllable(playerid, true);
SetPVarInt(playerid, "SuDungHopQua", 0);
printf("[MOBILE CASE] player %d closed case UI", playerid);
return 1;
}Editor is loading...
Leave a Comment