Untitled
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