new PlayerToyInfo[MAX_PLAYERS+1][MAX_PLAYERTOYS][ptInfo];
stock player_remove_vip_toys(iTargetID) { if(PlayerInfo[iTargetID][pDonator] >= 3) return 1; else for(new iToyIter; iToyIter < MAX_PLAYER_ATTOBJECTS; ++iToyIter) { for(new LoopRapist; LoopRapist < sizeof(HoldingObjectsCop); ++LoopRapist) { if(HoldingObjectsCop[LoopRapist][holdingmodelid] == PlayerToyInfo[iTargetID][iToyIter][ptModelID]) { PlayerToyInfo[iTargetID][iToyIter][ptModelID] = 0; PlayerToyInfo[iTargetID][iToyIter][ptBone] = 0; PlayerToyInfo[iTargetID][iToyIter][ptPosX] = 0.0; PlayerToyInfo[iTargetID][iToyIter][ptPosY] = 0.0; PlayerToyInfo[iTargetID][iToyIter][ptPosZ] = 0.0; PlayerToyInfo[iTargetID][iToyIter][ptPosX] = 0.0; PlayerToyInfo[iTargetID][iToyIter][ptPosY] = 0.0; PlayerToyInfo[iTargetID][iToyIter][ptPosZ] = 0.0; if(IsPlayerAttachedObjectSlotUsed(iTargetID, iToyIter)) RemovePlayerAttachedObject(iTargetID, iToyIter); } } } SendClientMessage(iTargetID, COLOR_WHITE, "All accessories/toys that were property of your former employer have been removed."); return 1; }
CMD:buytoys(playerid, params[]) { if(CheckGMX(playerid)) return 1; // (TEMPORARY - ZHAO NOTE) NO VIP added yet /*if(IsPlayerInRangeOfPoint(playerid, 4, 2787.095947, 2390.353027, 1240.531127)) { if(PlayerInfo[playerid][pDonator] < 3) { SendClientMessage(playerid, COLOR_WHITE, "* you're not a Gold or Undefined Donator!"); } else { ShowPlayerDialogEx(playerid, BUYTOYSGOLD, DIALOG_STYLE_MSGBOX, "Toy Store", "Welcome to the VIP toy store! Here you can buy accessories to attach to your player.\n\nFirst, we will choose a slot to store the toy in.","Continue", "Cancel"); } }*/ if(IsAtClothShop(playerid)) { ShowPlayerDialogEx(playerid, BUYTOYS, DIALOG_STYLE_MSGBOX, "Toy Store", "Welcome to the toy store! Here you can buy accessories to attach to your player.\n\nFirst, we will choose a slot to store the toy in.\n(Note: Non-Donators can only hold 5 toys, Ruby-Diamond Donator can hold 6-8)","Continue", "Cancel"); //ShowPlayerDialogEx(playerid, BUYTOYS, DIALOG_STYLE_MSGBOX, "Toy Store", "Welcome to the toy store! Here you can buy accessories to attach to your player.\n\nFirst, we will choose a slot to store the toy in.\n(Note: You can only hold 5 toys)","Continue", "Cancel"); } else { SendClientMessage(playerid, COLOR_WHITE, " You're not in a Clothing Shop!"); } return 1; }
CMD:listtoys(playerid, params[]) { if(CheckGMX(playerid)) return 1; if(PlayerInfo[playerid][pAdmin] >= 4) { if(AdminDuty[playerid] != 1 && PlayerInfo[playerid][pAdmin] < 6) { SendClientMessage(playerid,COLOR_WHITE, "You're not on-duty as admin. To access your admin commands you must be on-duty. Type /aduty to go on-duty."); return 1; } new iTargetID; if(sscanf(params, "u", iTargetID)) { SendClientMessage(playerid, COLOR_GREY, "USAGE: /listtoys [playerid/partofname]"); } else if(IsPlayerConnected(iTargetID)) for(new iToyIter, szMessage[128]; iToyIter < MAX_PLAYER_ATTOBJECTS; ++iToyIter) { for(new LoopRapist; LoopRapist < sizeof(HoldingObjectsAll); ++LoopRapist) { if(HoldingObjectsAll[LoopRapist][holdingmodelid] == PlayerToyInfo[iTargetID][iToyIter][ptModelID]) { format(szMessage, sizeof(szMessage), "%s (slot %i, bone: %s)", HoldingObjectsAll[LoopRapist][holdingmodelname], iToyIter, HoldingBones[PlayerToyInfo[iTargetID][iToyIter][ptBone]]); SendClientMessage(playerid, COLOR_WHITE, szMessage); break; } } } else SendClientMessage(playerid, COLOR_GRAD2, "Invalid player specified."); } return 1; }
CMD:toys(playerid, params[]) { if(CheckGMX(playerid)) return 1; ShowPlayerDialogEx(playerid, TOYS, DIALOG_STYLE_LIST, "Toy Menu", "Attach/Dettach a Toy\nEdit a Toy\nDelete a Toy","Select", "Cancel"); return 1; }
CMD:dat(playerid, params[]) { if(CheckGMX(playerid)) return 1; SendClientMessage(playerid, COLOR_WHITE, "* Deattached all toys."); for(new x;x<MAX_PLAYERTOYS;x++) { RemovePlayerAttachedObject(playerid, x); } return 1; }
stock ShowEditMenu(playerid) { if(IsPlayerAttachedObjectSlotUsed(playerid, slotselection[playerid])) { RemovePlayerAttachedObject(playerid, slotselection[playerid]); } if(PlayerToyInfo[playerid][slotselection[playerid]][ptScaleX] == 0) { PlayerToyInfo[playerid][slotselection[playerid]][ptScaleX] = 1.0; PlayerToyInfo[playerid][slotselection[playerid]][ptScaleY] = 1.0; PlayerToyInfo[playerid][slotselection[playerid]][ptScaleZ] = 1.0; } SetPlayerAttachedObject(playerid, slotselection[playerid], PlayerToyInfo[playerid][slotselection[playerid]][ptModelID], PlayerToyInfo[playerid][slotselection[playerid]][ptBone], PlayerToyInfo[playerid][slotselection[playerid]][ptPosX], PlayerToyInfo[playerid][slotselection[playerid]][ptPosY], PlayerToyInfo[playerid][slotselection[playerid]][ptPosZ], PlayerToyInfo[playerid][slotselection[playerid]][ptRotX], PlayerToyInfo[playerid][slotselection[playerid]][ptRotY], PlayerToyInfo[playerid][slotselection[playerid]][ptRotZ], PlayerToyInfo[playerid][slotselection[playerid]][ptScaleX], PlayerToyInfo[playerid][slotselection[playerid]][ptScaleY], PlayerToyInfo[playerid][slotselection[playerid]][ptScaleZ]); new stringg[512]; format(stringg, sizeof(stringg), "Bone (%s)\nOffset X (%f)\nOffset Y (%f)\nOffset Z (%f)\nRotation X (%f)\nRotation Y (%f)\nRotation Z (%f)\nScale X (%f)\nScale Y (%f)\nScale Z (%f)", HoldingBones[PlayerToyInfo[playerid][slotselection[playerid]][ptBone]], (PlayerToyInfo[playerid][slotselection[playerid]][ptPosX]*100), (PlayerToyInfo[playerid][slotselection[playerid]][ptPosY]*100), (PlayerToyInfo[playerid][slotselection[playerid]][ptPosZ]*100), PlayerToyInfo[playerid][slotselection[playerid]][ptRotX], PlayerToyInfo[playerid][slotselection[playerid]][ptRotY], PlayerToyInfo[playerid][slotselection[playerid]][ptRotZ], PlayerToyInfo[playerid][slotselection[playerid]][ptScaleX], PlayerToyInfo[playerid][slotselection[playerid]][ptScaleY], PlayerToyInfo[playerid][slotselection[playerid]][ptScaleZ]); ShowPlayerDialogEx(playerid, EDITTOYS2, DIALOG_STYLE_LIST, "Toy Menu: Edit", stringg, "Select", "Cancel"); }
https://sampforum.blast.hk/showthread.php?tid=478531& has exactly what you want.
|