Untitled

 avatar
unknown
plain_text
4 months ago
3.2 kB
7
Indexable
```
CMD:testcasemb(playerid, params[])
{
	if(PlayerInfo[playerid][pAdmin] < 9999) return 1;
    // if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}Chi admin moi dung lenh nay!");
    if(PlayerIsOpening[playerid]) return SendClientMessage(playerid, -1, "{FF6347}Ban dang mo mot hop qua khac!");

    new boxid = 9; // Hộp Quà 9 - NINJA H2R

    // Bỏ qua check key cho test → set state thủ công
    PlayerIsOpening[playerid]  = true;
    PlayerCurrentBox[playerid] = boxid;
    TogglePlayerControllable(playerid, false);

    // Gửi dữ liệu hộp 9 lên APK
    SendCaseOpenDataMobile(playerid, boxid);

    new boxName[128];
    GetCaseBoxName(boxid, boxName, sizeof(boxName));
    format(boxName, sizeof(boxName), "{00FF87}[TEST] Da gui: {FFFFFF}%s (Box %d)", boxName, boxid);
    SendClientMessage(playerid, -1, boxName);
    return 1;
}

stock SendCaseOpenDataMobile(playerid, boxid)
{
    if(boxid < 1 || boxid > MAX_CASEBOX_TYPES) return 0;

    // --- Build JSON items array ---
    static jsonItems[9000];
    static itemName[128];
    static itemRarity[20];
    static entry[256];
    static boxName[128];
    jsonItems[0] = EOS;

    strcat(jsonItems, "[");
    new count = 0;

    for(new i = 0; i < MAX_CASE_OPEN; i++)
    {
        if(CaseOpenInfo[boxid][caseopen_PreviewModel][i] == 0) continue;

        new iType   = CaseOpenInfo[boxid][caseopen_Itemid][i];
        new iModel  = CaseOpenInfo[boxid][caseopen_PreviewModel][i];
        new iAmount = CaseOpenInfo[boxid][caseopen_Amount][i];
        new iWeight = CaseOpenInfo[boxid][caseopen_Weight][i];

        if(iType == 3) format(itemName, sizeof(itemName), "%s", GetNameCar(iModel));
        else           format(itemName, sizeof(itemName), "%s x%s", GetNameCaseOpen(iType), number_format(iAmount));

        format(itemRarity, sizeof(itemRarity), "%s", GetRarityString(iWeight));

        if(count > 0) strcat(jsonItems, ",");
        format(entry, sizeof(entry),
            "{\"name\":\"%s\",\"rarity\":\"%s\",\"id\":%d,\"model\":%d}",
            itemName, itemRarity, i, iModel);
        strcat(jsonItems, entry);
        count++;
    }
    strcat(jsonItems, "]");

    GetCaseBoxName(boxid, boxName, sizeof(boxName));
    new keyCount = CountItemInventory(playerid, GetCaseItemID(boxid));

    // --- Gửi packet (giống SendPlayerInfoToClient) ---
    new BitStream:bs = BS_New();

    BS_WriteValue(bs, PR_UINT8,  PACKET_CUSTOMRPC);          // header
    BS_WriteValue(bs, PR_UINT32, MOBILE_RPC_CASE_OPEN_DATA); // rpcID = 0x46

    // jsonItems (uint32 len + string)
    BS_WriteValue(bs, PR_INT32,  strlen(jsonItems));
    BS_WriteValue(bs, PR_STRING, jsonItems);

    // boxName (uint32 len + string)
    BS_WriteValue(bs, PR_INT32,  strlen(boxName));
    BS_WriteValue(bs, PR_STRING, boxName);

    // keyCount + boxID
    BS_WriteValue(bs, PR_INT32, keyCount);
    BS_WriteValue(bs, PR_INT32, boxid);

    PR_SendPacket(bs, playerid);
    BS_Delete(bs);

    printf("[MOBILE CASE] Sent OPEN_DATA box=%d player=%d items=%d keyCount=%d",
           boxid, playerid, count, keyCount);
    return 1;
}
```
Editor is loading...
Leave a Comment