Attach Object To Vehicle ( I can pay for help : PM me )
#1

Ok guys i've been workin on this script for a while now. I just can't figure out how to attach my edited object on vehicle. So the script goes like this :

Defines
Код:
new Ctoyslot[MAX_PLAYERS];
	pCToyModel[3],
	Float:pCToyX[3],
	Float:pCToyY[3],
	Float:pCToyZ[3],
	Float:pCToyRX[3],
	Float:pCToyRY[3],
	Float:pCToyRZ[3],
 	Float:pCToySX[3],
    Float:pCToySY[3],
    Float:pCToySZ[3],
Код:
    for(new i=0; i<3; i++) // Toys
    {
    	PlayerInfo[playerid][pCToyModel][i] = 0;
        PlayerInfo[playerid][pCToyX][i] = 0;
		PlayerInfo[playerid][pCToyY][i] = 0;
		PlayerInfo[playerid][pCToyZ][i] = 0;
		PlayerInfo[playerid][pCToyRX][i] = 0;
		PlayerInfo[playerid][pCToyRY][i] = 0;
		PlayerInfo[playerid][pCToyRZ][i] = 0;
	 	PlayerInfo[playerid][pCToySX][i] = 0;
	    PlayerInfo[playerid][pCToySY][i] = 0;
	    PlayerInfo[playerid][pCToySZ][i] = 0;
You use /buycartoys , get a toy and it saves in your files.
Код:
CMD:buycartoys(playerid, params[])
{
 	new option, index, model, idx = GetPlayerVirtualWorld(playerid)-100, string[128];
	if(!IsPlayerLoggedIn(playerid) || PlayerInfo[playerid][pAsshole] == 1) return SendClientMessage(playerid, COLOR_GREY, "You are not allowed to use command.");
	if (IsPlayerInRangeOfPoint(playerid, 3.0, 1891.9252, -2328.7129, 13.5469)) return SendClientMessage(playerid, COLOR_GREY, "You are not inside a Garage.");
	if(sscanf(params, "ii", option, index))
	{
		ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_MSGBOX, "USAGE: /buycartoys [Item Number] [Toy slot (0-3)]", "Surfboard = 1 | Snowplow = 2 | GM454 (Motor) = 3", "Close", "Close");
	    return 1;
	}
	if(index < 0 || index > 3) return SendClientMessage(playerid, COLOR_GREY, "Slots are between 0 and 3.");
	switch(option)
	{
	    case 1 : model = 2404; case 2 : model = 19601; case 3 : model = 19917;
	}
	if(PlayerInfo[playerid][pMoney] < 300) return SendClientMessage(playerid, COLOR_GREY, "You don't have enough money to do this.");
	PlayerInfo[playerid][pCToyModel][index] = model;	GiveDodMoney(playerid, -300);
	format(string, sizeof(string), "* %s has bought a car toy for $300.", RPN(playerid), params);
 	SendNearbyMessage(playerid, 15, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
 	SendClientMessage(playerid, COLOR_WHITE, " You can view and edit your toys using /cartoys.");
	return 1;
}
Then you use /cartoys to show, edit or hide your car toys
Код:
CMD:cartoys(playerid, params[])
{
	if(!IsPlayerLoggedIn(playerid) || PlayerInfo[playerid][pAsshole] == 1) return SendClientMessage(playerid, COLOR_GREY, "You are not allowed to use command.");
	{
		ShowDialog(playerid, 231);
	}
	return 1;
}
Here is the Dialog 231

Код:
else if(dialogid == 231)
	{
	    if(response)
	    {
	        switch(listitem)
	        {
	            case 0: Ctoyslot[playerid] = 0; case 1: Ctoyslot[playerid] = 1; case 2: Ctoyslot[playerid] = 2;
	        }
	        new index = Ctoyslot[playerid];
		    if(PlayerInfo[playerid][pCToyModel][index] == 0)
		    {
		        ShowDialog(playerid, 231);
		    }
		    else
		    {
	        	ShowDialog(playerid, 241);
	        }
	    }
	}
	else if(dialogid == 241)
	{
	    if(response)
	    {
			switch(listitem)
			{
				case 0:
				{
					if(!IsPlayerAttachedObjectSlotUsed(playerid, Ctoyslot[playerid]))
					{
					    ShowDialog(playerid, 251);
					}
			    	else
			    	{
			    	    RemovePlayerAttachedObject(playerid, Ctoyslot[playerid]);
			    	    
			    	}
				}
				case 1:
				{
				    EditAttachedObject(playerid, Ctoyslot[playerid]);
				}
			}
	    }
	    else ShowDialog(playerid, 231);
	}
	else if(dialogid == 251)
	{
	    if(response)
	    {
			new bone, index = Ctoyslot[playerid];
	        switch(listitem)
	        {
	            case 0: bone = 1; case 1: bone = 1;
	        }
	        SetPlayerAttachedObject(playerid, index, PlayerInfo[playerid][pCToyModel][index], bone, Float:PlayerInfo[playerid][pCToyX][index], Float:PlayerInfo[playerid][pCToyY][index], Float:PlayerInfo[playerid][pCToyZ][index], Float:PlayerInfo[playerid][pCToyRX][index], Float:PlayerInfo[playerid][pToyRY][index], Float:PlayerInfo[playerid][pCToyRZ][index], Float:PlayerInfo[playerid][pCToySX][index], Float:PlayerInfo[playerid][pCToySY][index], Float:PlayerInfo[playerid][pCToySZ][index]);
	        new vehicle;
			vehicle = GetPlayerVehicleID(playerid);
			
			AttachPlayerObjectToVehicle(playerid, PlayerInfo[playerid][pCToyModel][index], vehicle, Float:PlayerInfo[playerid][pToyX][index], Float:PlayerInfo[playerid][pToyY][index], Float:PlayerInfo[playerid][pToyZ][index], Float:PlayerInfo[playerid][pToyRX][index], Float:PlayerInfo[playerid][pToyRY][index], Float:PlayerInfo[playerid][pToyRZ][index]);
	    }
	    else ShowDialog(playerid, 241);
	}
Here are the dialog callbacks

Код:
		case 231: // Car Toys
		{
			// 1 SurfBoard, 2 Snowplow, 3 GM 454 Motor

		    format(string, sizeof(string), "Slot 0 (%s)\nSlot 1 (%s)\nSlot 2 (%s)", RCTN(playerid, 0), RCTN(playerid, 1), RCTN(playerid, 2));
			ShowPlayerDialog(playerid, 231, DIALOG_STYLE_LIST, "Your car toys", string, "Choose", "Cancel");
		}
		case 241: // Toy Add/Remove/Edit
		{
		    new info[16], type[16];
		    if(!IsPlayerAttachedObjectSlotUsed(playerid, Ctoyslot[playerid])) format(info, sizeof(info), "Show Car Toy");
		    else format(info, sizeof(info), "Hide Car Toy");
		    format(string, sizeof(string), "%s\nEdit Car Toy", info);
		    format(type, sizeof(type), "Car Toy Slot %d", Ctoyslot[playerid]);
		    ShowPlayerDialog(playerid, 241, DIALOG_STYLE_LIST, type, string, "Choose", "Back");
		}
		case 251: // Car Toy adding bones
		{
		    ShowPlayerDialog(playerid, 251, DIALOG_STYLE_LIST, "Confirm Car Toy Spawn", "Yes\nNo", "Choose", "Back");
		}
Here is the onplayereditattachedobject

Код:
public OnPlayerEditAttachedObject(playerid, response, index, modelid, boneid, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:fRotX, Float:fRotY, Float:fRotZ, Float:fScaleX, Float:fScaleY, Float:fScaleZ)
{
 	SetPlayerAttachedObject(playerid, index, modelid, boneid, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:fRotX, Float:fRotY, Float:fRotZ, Float:fScaleX, Float:fScaleY, Float:fScaleZ);
	PlayerInfo[playerid][pCToyX][index] = fOffsetX;
	PlayerInfo[playerid][pCToyY][index] = fOffsetY;
	PlayerInfo[playerid][pCToyZ][index] = fOffsetZ;
	PlayerInfo[playerid][pCToyRX][index] = fRotX;
	PlayerInfo[playerid][pCToyRY][index] = fRotY;
	PlayerInfo[playerid][pCToyRZ][index] = fRotZ;
    PlayerInfo[playerid][pCToySX][index] = fScaleX;
    PlayerInfo[playerid][pCToySY][index] = fScaleY;
    PlayerInfo[playerid][pCToySZ][index] = fScaleZ;


    return 1;
}
Here are the model names for the dialogs

Код:
stock RCTN(playerid, slot)
{
    new name[241], Ctoy = PlayerInfo[playerid][pCToyModel][slot];
    format(name, sizeof(name), "None");
    // Model assigning
	if(Ctoy >= 2403 && Ctoy <= 2405) format(name, sizeof(name), "Surfboard");
	else if(Ctoy >= 19600 && Ctoy <= 19602) format(name, sizeof(name), "Snowplow");
	else if(Ctoy >= 19916 && Ctoy <= 19918) format(name, sizeof(name), "GM 454");
	return name;
}
So yeah the items saves well and all but what I want to do is use /cartoys to edit the item ( must be in a car so I can get CarId ) and then when the player has finished positioning his item then it is no longer attached to the player but to the vehicle. I know it can be done by getting item's location and sending it back to AttachPlayerObjectToVehicle but still I'm unable to do it. I can pay for help and ANY help is much appreciated ! Thanks to you guys
Reply


Messages In This Thread
Attach Object To Vehicle ( I can pay for help : PM me ) - by Mikeydoo - 11.01.2016, 07:13
Re: Attach Object To Vehicle ( I can pay for help : PM me ) - by RoboN1X - 11.01.2016, 08:36
Re: Attach Object To Vehicle ( I can pay for help : PM me ) - by Mikeydoo - 11.01.2016, 14:32
Re: Attach Object To Vehicle ( I can pay for help : PM me ) - by RoboN1X - 12.01.2016, 02:39
Re: Attach Object To Vehicle ( I can pay for help : PM me ) - by PrO.GameR - 12.01.2016, 08:48

Forum Jump:


Users browsing this thread: 1 Guest(s)