Szerző Téma: Actor Törlés  (Megtekintve 955 alkalommal)

Nem elérhető quips

Actor Törlés
« Dátum: 2015. szeptember 08. - 22:23:25 »
0 Show voters
Sziasztok! Az lenne a problémám ,hogy van egy parancsom melyben a létrehozott actort lehet törölni, a skint módosítani, illetve a pozíciót módosítani. Azonban mikor törlöm az actort illetve módosítom a pozíciót minden rendben működik és törlődik a \"régi\" actor, de mikor a skint módosítom ott hagyja az eredetit és arra pozícióra létrehoz még egyet a az új skinnel.
Parancs:
 
CMD:actoredit(playerid, params[])
{
new id, type[24], string[128], Float:ActorPos[4], world, skin;
if(sscanf(params, \"ds[24]S()[128]\", id, type, string)) return SendClientMessage(playerid, COLOR_FEHER, \"Használat: /actoredit [ActorID] [Módosítás]\"), SendClientMessage(playerid, COLOR_FEHER, \"Módosítások: pozicio, skin, torles\");
    if (!strcmp(type, \"pozicio\", true))
    {
        if(ActorInfo[id][aSkin] == 0) return SendClientMessage(playerid, COLOR_FEHER, \"Hibás ID\");
if(IsValidActor(id))
DestroyActor(id);
GetPlayerPos(playerid, ActorPos[0], ActorPos[1],  ActorPos[2]);
GetPlayerFacingAngle(playerid, ActorPos[3]);
world = GetPlayerVirtualWorld(playerid);
ActorInfo[id][aPozX] = ActorPos[0];
ActorInfo[id][aPozY] = ActorPos[1];
ActorInfo[id][aPozZ] = ActorPos[2];
ActorInfo[id][aVirtualWorld] = world;
SaveActor(id);
SetPlayerPos(playerid, ActorPos[0], ActorPos[1], ActorPos[2]);
CreateActor(ActorInfo[id][aSkin], ActorPos[0], ActorPos[1], ActorPos[2], ActorPos[3]);
SendClientMessage(playerid, COLOR_FEHER, \"A módosítás sikeresen végrehajtva!\");
}
else if (!strcmp(type, \"skin\", true))
    {
        if(sscanf(string, \"d\", skin)) return SendClientMessage(playerid, COLOR_FEHER, \"Használat: /actoredit [ActorID] [skinID]\");
        if(ActorInfo[id][aSkin] == 0) return SendClientMessage(playerid, COLOR_FEHER, \"Hibás ID\");
       
        if(IsValidActor(id))
DestroyActor(id);
        ActorInfo[id][aSkin] = skin;
SaveActor(id);
CreateActor(skin, ActorInfo[id][aPozX], ActorInfo[id][aPozY], ActorInfo[id][aPozZ], ActorInfo[id][aPozA]);
SetActorVirtualWorld(id, ActorInfo[id][aVirtualWorld]);
SendClientMessage(playerid, COLOR_FEHER, \"A módosítás sikeresen végrehajtva!\");
}
else if (!strcmp(type, \"torles\", true))
{
        if(ActorInfo[id][aSkin] == 0) return SendClientMessage(playerid, COLOR_FEHER, \"Hibás ID\");
   if(IsValidActor(id))
DestroyActor(id);
format(string, sizeof(string), ActorPath, id);
fremove(string);
SendClientMessage(playerid, COLOR_FEHER, \"A módosítás sikeresen végrehajtva!\");
}
return 1;
}

 
Mi lehet a probléma? A válaszokat előre is köszönöm!
« Utoljára szerkesztve: 2015. szeptember 08. - 22:58:45 írta Flash »

Actor Törlés
« Válasz #1 Dátum: 2015. szeptember 12. - 10:14:50 »
0 Show voters
Nem szóltam....
« Utoljára szerkesztve: 2015. szeptember 12. - 10:16:39 írta zsoolt997 »

Actor Törlés
« Válasz #2 Dátum: 2015. október 11. - 00:23:55 »
+1 Show voters
CreateActor(ActorInfo[id][aSkin], ActorPos[0], ActorPos[1], ActorPos[2], ActorPos[3]);

 
Itt rendeld hozzá egy IDhez, vagyis generálj neki egy úgy ID-t és az alapján hozd létre. Majd, mikor törölni akarod, akkor az alapján töröld. Így:
 

//Itt van az IDje, amit Te generálsz le neki. Arra már magadtól jöjj rá :)
Actorinfo[id][aID] = CreateActor(ActorInfo[id][aSkin], ActorPos[0], ActorPos[1], ActorPos[2], ActorPos[3]);
DestroyActor(Actorinfo[id][aID]);
//És itt törlöd a generált ID alapján

 
Nekem így működött és megtudtam csinálni. Sok sikert!
Ui.: Azért írtam 2 hsz-t, hogy lássa, hogy írtam ide. Mivel én nem tudom törölni az előzőt, ezért kérem, töröljék.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal