

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.
|