PDA

View Full Version : AttachObjectToVehicle


Clarck
16/05/2015, 01:09 PM
hello, i used the filescript to create boxes using (ivo) AttachObjectToVehicle
when the player type / pbox......2 player is more work together giving the same command
while delivering the box, it disappears from the first that took and buga, how do I not give bug?

example:



if(PlayerW[playerid][Work] == box){
box1 = CreateObject(id ,0,0,-1000,0,0,0,100);
box2 = CreateObject(id,0,0,-1000,0,0,0,100);
AttachObjectToVehicle(box1, GetPlayerVehicleID(playerid), 0.000000,-0.750000,0.300000,0.000000,0.000000,89.099983);
AttachObjectToVehicle(box2, GetPlayerVehicleID(playerid), 0.075000,-0.750000,0.449999,0.000000,0.000000,89.099983);
SetPlayerMapIcon(playerid, 37, 1324.5773,286.8284,20.0452, 17, 0, MAPICON_GLOBAL);
tbox[playerid] = 1;

Logofero
16/05/2015, 02:24 PM
hello, i used the filescript to create boxes using (ivo) AttachObjectToVehicle
when the player type / pbox......2 player is more work together giving the same command
while delivering the box, it disappears from the first that took and buga, how do I not give bug?

example:



if(PlayerW[playerid][Work] == box){
box1 = CreateObject(id ,0,0,-1000,0,0,0,100);
box2 = CreateObject(id,0,0,-1000,0,0,0,100);
AttachObjectToVehicle(box1, GetPlayerVehicleID(playerid), 0.000000,-0.750000,0.300000,0.000000,0.000000,89.099983);
AttachObjectToVehicle(box2, GetPlayerVehicleID(playerid), 0.075000,-0.750000,0.449999,0.000000,0.000000,89.099983);
SetPlayerMapIcon(playerid, 37, 1324.5773,286.8284,20.0452, 17, 0, MAPICON_GLOBAL);
tbox[playerid] = 1;


What is the code stub? If you want to help lay out more information.

if (PlayerW [playerid] [Work] == box) {
box1 = CreateObject(id, 0,0, -1000,0,0,0,100); // ID that be? you declared new box1, box2;?
box2 = CreateObject(id, 0,0, -1000,0,0,0,100); // If you specify a floating-point better to write it as well
AttachObjectToVehicle (box1, GetPlayerVehicleID (playerid), 0.000000, -0.750000,0.300000,0.000000,0.000000,89.099983);
AttachObjectToVehicle (box2, GetPlayerVehicleID (playerid), 0.075000, -0.750000,0.449999,0.000000,0.000000,89.099983);
SetPlayerMapIcon (playerid, 37 1324.5773,286.8284,20.0452, 17, 0, MAPICON_GLOBAL);
tbox [playerid] = 1;

Example:
#define MAX_MSG_SIZE (256)
public OnPlayerCommandText(playerid, cmdtext[])
{
new msg[MAX_MSG_SIZE];

if (strcmp("/mbox", cmdtext, true, 10) == 0)
{
if (IsPlayerInAnyVehicle(playerid)) {
new vehicleid = GetPlayerVehicleID(playerid);
new box1 = CreateObject(19832, 0.0,0.0,0.0, 0.0,0.0,0.0, 100.0);
new box2 = CreateObject(19832, 0.0,0.0,0.0, 0.0,0.0,0.0, 100.0);
AttachObjectToVehicle(box1, vehicleid, 0.000000,-0.750000,0.300000, 0.000000,0.000000,89.099983);
AttachObjectToVehicle(box2, vehicleid, 0.075000,-0.750000,0.449999, 0.000000,0.000000,89.099983);
SetPlayerMapIcon(playerid, 37, 1324.5773,286.8284,20.0452, 17, 0, MAPICON_GLOBAL);
format(msg, MAX_MSG_SIZE, "MBox: box1 (%d), box2 (%d) created and attached vehicle (%d)", box1, box2,vehicleid);
SendClientMessage(playerid, 0x00FF00FF, msg);
} else {
SendClientMessage(playerid, 0xFF0000FF, "You not in car!");
}
return 1;
}
return 0;
}

Clarck
17/05/2015, 01:18 PM
if you and I get the box, when I unload my box, your disappear ,my box should disappear when I unload, not your box, this is the bug

Konstantinos
17/05/2015, 01:25 PM
Having "box1" and "box2" as global variables and more than 1 player use them at a time will mess the IDs up.

Let's say player A uses the command and it creates the two objects. Player B uses the command too and "box1", "box2" hold the objectid from the player B. When player A is done and you want to delete the objects, you haven't stored them anywhere as they were overwritten by player B so it destroys the objects from player B.

If each player can have 2 boxes, then create a global array:

// global:
new Player_Box[2][MAX_PLAYERS];

// OnPlayerConnect:
Player_Box[0][playerid] = Player_Box[1][playerid] = INVALID_OBJECT_ID;


Player_Box[0][playerid] = CreateObject(id ,0,0,-1000,0,0,0,100);
Player_Box[1][playerid] = CreateObject(id,0,0,-1000,0,0,0,100);
AttachObjectToVehicle(Player_Box[0][playerid], GetPlayerVehicleID(playerid), 0.000000,-0.750000,0.300000,0.000000,0.000000,89.099983);
AttachObjectToVehicle(Player_Box[1][playerid], GetPlayerVehicleID(playerid), 0.075000,-0.750000,0.449999,0.000000,0.000000,89.099983);

When you destroy them, set the variables to INVALID_OBJECT_ID as in OnPlayerConnect.

Logofero
18/05/2015, 06:25 AM
[pawn]
// global:
new Player_Box[2][MAX_PLAYERS];

// OnPlayerConnect:
Player_Box[0][playerid] = Player_Box[1][playerid] = INVALID_OBJECT_ID;


new Player_Box[2][MAX_PLAYERS] = {{INVALID_OBJECT_ID,...},{INVALID_OBJECT_ID,...}}; // initialize all the variables with the value 65535 instead of each assignment

Example:

#define foreach2(%1,%2) for(new %1; %1<%2; %1++)

main() {
new Player_Box[2][MAX_PLAYERS] = {{65535,...},{65535,...}};

foreach2(p, 1000) {
foreach2(i, 2) {
printf("player %d box[%d] value %d",p, i, Player_Box[i][p]);
}
}
}