Csáó, aha van.
Példa:
new SzirenaObject[MAX_VEHICLES];
CMD:szirenafelrak(playerid, params[])
{
SzirenaObject[VID] = CreateObject(18646, 10.0, 10.0, 10.0, 0, 0, 0);
AttachObjectToVehicle(SzirenaObject[VID], VID, 0.0, 0.75, 0.275, 0.0, 0.1, 0.0);
}
CMD:szirenalevesz(playerid, params[])
{
DestroyObject(SzirenaObject[VID]);
}
Remélem segítettem ;)!
Létrehoztunk egy objectet hozzá illesztettük a kocsihoz
Mi az objectet töröljük és nem a kocsiról, szóval logikus, ha újra létrehozod megint rajta lesz. :D
Kurvára nem logikus.
Én kipróbáltam hogy törlöm és újra létrehozom az objectet és nem marad rajt, lehet ti más sa-mp verziót használtok másra nem tudok gondolni.
new SzirenaObject[MAX_VEHICLES];
CMD:felrak(playerid, params[])
{
new
VID = GetPlayerVehicleID(playerid);
if(VID)
{
if(SzirenaObject[VID] != -1) DestroyObject(SzirenaObject[VID]);
SzirenaObject[VID] = SzirenaObject[VID] = CreateObject(18646, 0.0, 0.0, 0.0, 0, 0, 0);
AttachObjectToVehicle(SzirenaObject[VID], VID, 0.0, 0.75, 0.275, 0.0, 0.1, 0.0);
}
return 1;
}
CMD:levesz(playerid, params[])
{
new
VID = GetPlayerVehicleID(playerid);
if(VID)
{
DestroyObject(SzirenaObject[VID]);
SzirenaObject[VID] = -1;
new
Float:vx,
Float:vy,
Float:vz;
GetVehiclePos(VID, vx, vy, vz);
SzirenaObject[VID] = CreateObject(18646, vx, vy, vz + 0.5, 0, 0, 0);
}
return 1;
}
Létrehoztunk egy objectet hozzá illesztettük a kocsihoz
Mi az objectet töröljük és nem a kocsiról, szóval logikus, ha újra létrehozod megint rajta lesz. :D
Kurvára nem logikus.
Én kipróbáltam hogy törlöm és újra létrehozom az objectet és nem marad rajt, lehet ti más sa-mp verziót használtok másra nem tudok gondolni.
new SzirenaObject[MAX_VEHICLES];
CMD:felrak(playerid, params[])
{
new
VID = GetPlayerVehicleID(playerid);
if(VID)
{
if(SzirenaObject[VID] != -1) DestroyObject(SzirenaObject[VID]);
SzirenaObject[VID] = SzirenaObject[VID] = CreateObject(18646, 0.0, 0.0, 0.0, 0, 0, 0);
AttachObjectToVehicle(SzirenaObject[VID], VID, 0.0, 0.75, 0.275, 0.0, 0.1, 0.0);
}
return 1;
}
CMD:levesz(playerid, params[])
{
new
VID = GetPlayerVehicleID(playerid);
if(VID)
{
DestroyObject(SzirenaObject[VID]);
SzirenaObject[VID] = -1;
new
Float:vx,
Float:vy,
Float:vz;
GetVehiclePos(VID, vx, vy, vz);
SzirenaObject[VID] = CreateObject(18646, vx, vy, vz + 0.5, 0, 0, 0);
}
return 1;
}
[/quote]
Nem értem..
Mért ne lenne logikus?!
Nem értem..
Mért ne lenne logikus?!
Az hogy létrehozod az objectet, ráteszed a jármûre, törlöd az objectet, majd újra létrehozod az objectet, és rajt marad a jármûvön anélkül hogy rátennéd.
pawn kódban:
CreateObject(..
AttachObjectToVehicle(...
DestroyObject(...
CreateObject(...
Mert ti végig azt állítottátok hogy rajt marad.
Hozd létre újra mikor törlöd és úgy tûnik majd mintha csak levetted volna.
Csak egy kis logika. :D
[/quote]
Igen ezt így csináltam, csak utána úgy érzékeli, hogy még mindig rajta van az az adott dolog.
[/quote]
Létrehoztunk egy objectet hozzá illesztettük a kocsihoz
Mi az objectet töröljük és nem a kocsiról, szóval logikus, ha újra létrehozod megint rajta lesz. :D
[/quote]
Nem, nem lesz rajt csak akkor ha az object létrehozása után újból használjátok az AttachObjectToVehicle funkciót!
Egyszer a fórumra magyarosítottam egy FS-t, object szerkesztõ volt, kocsin.
/edit parancsal mindig tudtam újjabb objectet rakni a jármûre.
A parancs:
if(!strcmp(\"/edit\", cmd, true))
{
tmp = strtok(cmdtext, idx);
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, CBLUE, \"|- ((Hiba)) Nem vagy jármûben. -|\");
if(!strlen(tmp)) return SendClientMessage(playerid, CBLUE, \"|- ((Hiba)) Használat: /edit [objectid] -|\");
new i, bool:OtherObject;
for(i = 0; i < MAX_OBJECTS_PER_EDIT; i++)
{
if(PlayerData[playerid][ObjectID] == -1) break;
OtherObject = true;
if(i == (MAX_OBJECTS_PER_EDIT - 1)) return SendClientMessage(playerid, CBLUE, \"|- ((Hiba)) Elérte a maximum objectet. -|\");
}
new Obj = CreateObject(strval(tmp), 0.0, 0.0, -10.0, 0.0, 0.0, 0.0),
vId = GetPlayerVehicleID(playerid), str[148];
if(OtherObject)
{
PlayerData[playerid][ObjectModel] = strval(tmp);
PlayerData[playerid][EditionID] = i;
PlayerData[playerid][ObjectID] = Obj;
format(str, sizeof str, \"|- Módosítol az objecten {F40B74}%d{4E76B1}, edition id {F40B74}%d{4E76B1}. Használat KEY_LEFT, KEY_RIGHT és KEY_FIRE hogy betudd állítani magadnak. -|\", strval(tmp), i);
SendClientMessage(playerid, CBLUE, str);
SendClientMessage(playerid, CBLUE, \"|- Használat {F40B74}/X /Y és /Z{4E76B1} hogy változtasd a koordinátát. -|\");
SendClientMessage(playerid, CBLUE, \"|- Használat {F40B74}/RX /RY és /RZ{4E76B1} ezzel tudod változtatni a forgatási irányokat. -|\");
SendClientMessage(playerid, CBLUE, \"|- Használat {F40B74}/EDITION{4E76B1} választhatsz az ocjectek közül, melyeket leraktál. -|\");
SendClientMessage(playerid, CBLUE, \"|- Használat {F40B74}/FREEZE{4E76B1} és {F40B74}/UNFREEZE{4E76B1} ez segít jobban beállítani a koordinátát. -|\");
SendClientMessage(playerid, CBLUE, \"|- Használat {F40B74}/STOP{4E76B1} abba hagytad az object lerakást. -|\");
SendClientMessage(playerid, CBLUE, \"|- Használat {F40B74}/PAUSE{4E76B1} Megállítottad az object mozgatását. -|\");
SendClientMessage(playerid, CBLUE, \"|- Használat {F40B74}/BACK{4E76B1} Már tudod mozgatni az objectet. -|\");
SendClientMessage(playerid, CBLUE, \"|- Használat {F40B74}/SAVEOBJ{4E76B1} lementi a koordinátát \\\"editions.pwn\\\". -|\");
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, \"Információ\", \"Szeretnél ugyan olyan objectumot létrehozni az utolsóban?\", \"Igen\", \"Nem\");
return true;
}
PlayerData[playerid][VehicleID] = vId;
PlayerData[playerid][ObjectModel] = strval(tmp);
PlayerData[playerid][EditionID] = i;
PlayerData[playerid][OffSetX][PlayerData[playerid][EditionID]] = 0.0;
PlayerData[playerid][OffSetY][PlayerData[playerid][EditionID]] = 0.0;
PlayerData[playerid][OffSetZ][PlayerData[playerid][EditionID]] = 0.0;
PlayerData[playerid][OffSetRX][PlayerData[playerid][EditionID]] = 0.0;
PlayerData[playerid][OffSetRY][PlayerData[playerid][EditionID]] = 0.0;
PlayerData[playerid][OffSetRZ][PlayerData[playerid][EditionID]] = 0.0;
PlayerData[playerid][ObjectID] = Obj;
PlayerData[playerid][TimerID] = SetTimerEx(\"GetKeys\", 30, true, \"i\", playerid);
format(str, sizeof str, \"|- Editing the object {F40B74}%d{4E76B1}, edition id {F40B74}%d{4E76B1}. Use KEY_LEFT, KEY_RIGHT and KEY_FIRE to adjust the offset\'s -|\", strval(tmp), i);
SendClientMessage(playerid, CBLUE, str);
SendClientMessage(playerid, CBLUE, \"|- Használat {F40B74}/X /Y és /Z{4E76B1} hogy változtasd a koordinátát. -|\");
SendClientMessage(playerid, CBLUE, \"|- Használat {F40B74}/RX /RY és /RZ{4E76B1} ezzel tudod változtatni a forgatási irányokat. -|\");
SendClientMessage(playerid, CBLUE, \"|- Használat {F40B74}/EDITION{4E76B1} választhatsz az ocjectek közül, melyeket leraktál. -|\");
SendClientMessage(playerid, CBLUE, \"|- Használat {F40B74}/FREEZE{4E76B1} és {F40B74}/UNFREEZE{4E76B1} ez segít jobban beállítani a koordinátát. -|\");
SendClientMessage(playerid, CBLUE, \"|- Használat {F40B74}/STOP{4E76B1} abba hagytad az object lerakást.. -|\");
SendClientMessage(playerid, CBLUE, \"|- Használat {F40B74}/SAVEOBJ{4E76B1} lementi a koordinátát \\\"editions.pwn\\\". -|\");
return true;
}
Ha az egész kell: http://sampforum.hu/index.php?topic=36786.0
Hátha kitudsz szedni belõle olyan dolgot ami segíthet.
Én használok és egy másik objectet szeretnék rárakni.
Akkor rosszul használod mert amit levenni szeretnél a jármûrõl azt ha vissza teszed, teljesen érthetõ hogy rajta marad.
Több object a jármûvön már csak rajtad múlik,
#define MAX_ATTACHED_OBJECTS 10
new AttachObject[MAX_VEHICLES][MAX_ATTACHED_OBJECTS];
// Ide már for ciklus is kell mivel ellenõrizni kell létezik-e az adott object tárolva valamelyik cellában, ha igen ha nem, akkor az meg ez történjen.
amúgy fõposztban ez a kérés nem szerepelt, és mivel se köszönöm se semmi nincs csak újabb és újabb kérések meg kötözködések, szal ebbe a témában meg ez volt az utolsó hozzászólásom.