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