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