
public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
{
new Float:oldX, Float:oldY, Float:oldZ, Float:oldRotX, Float:oldRotY, Float:oldRotZ;
GetObjectPos(objectid, oldX, oldY, oldZ);
GetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
if(!playerobject) // If this is a global object, sync the position for other players
{
if(!IsValidObject(objectid)) return 1;
SetObjectPos(objectid, fX, fY, fZ);
SetObjectRot(objectid, fRotX, fRotY, fRotZ);
}
if(response == EDIT_RESPONSE_FINAL)
{
// The player clicked on the save icon
// Do anything here to save the updated object position (and rotation)
new string[128];
format(string, sizeof(string), "fX[%f] fY[%f] fZ[%f] fRotX[%f] fRotY[%f] fRotZ[%f]", fX, fY, fZ, fRotX, fRotY, fRotZ );
SendClientMessage(playerid, COLOR_GREY, string);
}
if(response == EDIT_RESPONSE_CANCEL)
{
//The player cancelled, so put the object back to it's old position
if(!playerobject) //Object is not a playerobject
{
SetObjectPos(objectid, oldX, oldY, oldZ);
SetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
}
else
{
SetPlayerObjectPos(playerid, objectid, oldX, oldY, oldZ);
SetPlayerObjectRot(playerid, objectid, oldRotX, oldRotY, oldRotZ);
}
}
return 1;
}
CMD:actorweapon(playerid, params[]) {
// https://sampwiki.blast.hk/wiki/EditAttachedObject ~ https://sampwiki.blast.hk/wiki/EditObject
if(admin[playerid] < 1337) return 0;
new actorid;
if(sscanf(params,"i", actorid)) return SendClientMessage(playerid, -1, "Use: /actorweapon [actorid]");
if(IsValidActor(actorid)) {
new Float:x, Float:y, Float:z;
GetActorPos(actorid, x, y, z);
new string[128];
format(string, sizeof(string), "[ACTOR POS] x[%f] y[%f] z[%f] RotX[0] RotY[0] RotZ[0]", x, y, z);
SendClientMessage(playerid, COLOR_GREY, string);
new weaponobj = CreateObject(GetGunObjectID(25), x, y, z, 0.0, 0.0, 0.0);
EditObject(playerid, weaponobj);
}
return 1;
}

[ACTOR POS] x[207.732498] y[-98.704498] z[1005.257812] RotX[0] RotY[0] RotZ[0] [WEAPO POS] X[207.578094] Y[-98.815635] Z[1005.568115] RotX[1.599998] RotY[-0.400000] RotZ[-66.699996] [NEW POS] X[-0.154404] Y[-0.111137] Z[+-0.310303] RotX[+1.599998] RotY[-0.400000] RotZ[-66.699996]
CreateActor(142, -28.9448,-186.8204,1003.5469, 0.0);
CreateActor(142, 1.9909,-30.7009,1003.5494, 357.6201);
CreateActor(223, 207.7325,-98.7045,1005.2578, 178.9347);
CreateActor(29, 203.6479,-40.7589,1001.8047, 181.8473);
CreateActor(141, 161.4051,-80.0589,1001.8047, 180.1522);
CreateActor(205, 375.6144,-65.7069,1001.5078, 140.8397);
CreateActor(85, 501.8527,-21.4871,1000.6797, 90.2779);
CreateActor(155, 373.9646,-117.2686,1001.4995, 180.2793);
new actstring[128];
for(new a; a< GetActorPoolSize()+1; ++a) {
if(IsValidActor(a)) {
SetActorVirtualWorld(a, 0);
SetActorInvulnerable(a, false);
SetActorHealth(a, 10);
new Float:x, Float:y, Float:z;
GetActorPos(a, x, y, z);
CreateObject(GetGunObjectID(25), x-0.154404, y-0.111137, z-0.310303, 1.599998, -0.400000, -66.699996);
}
}
CMD:edit(playerid)
{
static Float: pos[3];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
EditObject(playerid, CreateObject(348, pos[0], pos[1], pos[2], 0.0, 0.0, 0.0));
return true;
}
public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
{
if(!playerobject) {
if(!IsValidObject(objectid)) return 1;
SetObjectPos(objectid, fX, fY, fZ);
SetObjectRot(objectid, fRotX, fRotY, fRotZ);
}
if(response == EDIT_RESPONSE_FINAL) {
static str[70];
format(str, sizeof str, "Pos: %f, %f, %f", fX, fY, fZ);
SendClientMessage(playerid, -1, str);
format(str, sizeof str, "Rot: %f, %f, %f", fRotX, fRotY, fRotZ);
SendClientMessage(playerid, -1, str);
printf("\n%f, %f, %f\n%f, %f, %f\n", fX, fY, fZ, fRotX, fRotY, fRotZ);
}
if(response == EDIT_RESPONSE_CANCEL) {
DestroyObject(objectid);
}
return 1;
}
CreateObject(/*ID do Objeto*/, posX, posY, posZ, rotX, rotY, rotZ);
Troque "posX, posY, ..." pela posiзгo que vocк pegou apуs editar o objeto.
|
Eu fiz aqui e deu certo, se vocк nгo conseguir comente que eu irei ajudar.
Seguinte, vocк terб que ir atй o actor que vc quer pegar a posiзгo do objeto, dps digite o cmd (abaixo), e pegue a posiзгo. Comando para editar: PHP код:
PHP код:
PHP код:
|

for(new a; a < MAX_STOREACTOR; ++a) {
if(IsValidActor(a)) {
SetActorVirtualWorld(a, 0);
SetActorInvulnerable(a, false);
SetActorHealth(a, 10);
new Float:x, Float:y, Float:z;
GetActorPos(a, x, y, z);
ApplyActorAnimation(a, "PED", "GUN_STAND", 4.0, 1, 0, 0, 0, 0);
CreateObject(GetGunObjectID(25), x-0.154404, y-0.111137, z-0.310303, 1.599998, -0.400000, -66.699996);
}
}
"x-0.154404, y-0.111137, z-0.310303"
|
Код HTML:
"x-0.154404, y-0.111137, z-0.310303" |
|
Код HTML:
"x-0.154404, y-0.111137, z-0.310303" |
|
Vocк quis dizer em conjunto com aquele cуdigo?
https://sampwiki.blast.hk/wiki/Floatsin https://sampwiki.blast.hk/wiki/Floatcos Olhando as wiki nгo entendi como fazer, tem como dar uma simplificada por favor? |
|
Essas funзхes sгo para pegar o seno(floatsin) e o cosseno(floatcos), eu nгo entendo muito disso, sou pйssimo em matйmatica, mas eu acho que ele quis dizer pra vocк fazer algo que se auto ajuste independentemente do вngulo do actor
|
GUN GUN_STAND