Frage zu CreateActor

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guckst du hier:
    [wiki]CreateActor[/wiki]


    Zitat

    Actors are limited to 1000 (MAX_ACTORS).

    Oder hier sind alle Limits: [wiki]Limits[/wiki]


    Wenn du zu viele erstellst, wird beim CreateActor INVALID_ACTOR_ID (65535) returnt und der Actor nicht erstellt.

  • Ok sehr gut. Wisst ihr vlt noch wie die Function heißt um ein Object zum explodieren bringen zu können?


    Also so das man eine Taschenbombe drauf wirft dann drückt man halt auf dem Knopf und BoooM die Tür verschwindet.

  • Das Limit liegt wie oben bereits erwähnt bei 1000, d.h. aber nicht das du problemlos spielen kannst wenn sich 1000 Actors in der Nähe befinden, wollte das nur anmerken.
    Bei 50 Actors sollte es aber in der Regel keine Probleme geben, was ich mir nur vorstellen könnte ist, wenn alle nebeneinander sind und jeder eine Animation ausführt das es zu einigen FPS Drops kommt, das ist aber nur eine Vermutung :)


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Ich habe es so geschrieben aber mein Script crasht



    if(strcmp(cmd,"/tresorbombe",true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid, 15.0, -1991.38464, 545.81628, 34.85460))
    {
    new Float:x, Float:y, Float:z;
    CreateExplosion(x, y, z, 6, 10.0);
    DestroyObject(tresordoor);
    }
    }
    else SendClientMessage(playerid,rot,"Du bist nicht in der Nähe");
    return 1;
    }
    }

  • @Russian_Mythos


    Versuch es mal so:



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp(cmdtext,"/tresorbombe",true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid, 15.0, -1991.38464, 545.81628, 34.85460))
    {
    new Float:x, Float:y, Float:z;
    CreateExplosion(x, y, z, 6, 10.0);
    DestroyObject(tresordoor);
    }
    }
    else SendClientMessage(playerid,rot,"Du bist nicht in der Nähe");
    return 1;
    }




    Mit freundlichen Grüßen
    JustMe.77 8)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Zeig doch mal dein ganzes OnPlayerCommandText. Vielleicht ist dort dein Fehler irgendwo.


  • Function OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp(cmdtext,"/tresorbombe",true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid, 15.0, -1991.38464, 545.81628, 34.85460))
    {
    new Float:x, Float:y, Float:z;
    CreateExplosion(x, y, z, 6, 10.0);
    DestroyObject(tresordoor);
    }
    }
    else
    {
    SendClientMessage(playerid,rot,"Du bist nicht in der Nähe");
    return 1;


    }




  • 1. Da ist ein Klammerfehler (eine } fehlt).
    2. Muss das so:

  • Und so?

  • Ich denke der Crasht aus folgendem Grund:


    C
    //Ausschnitt aus deinem Code.
    new Float:x, Float:y, Float:z;
    CreateExplosion(x, y, z, 6, 10.0);


    Die Funktion CreateExplusion weis in deinem Fall nicht wo sie explodieren soll, da du x, y, z ja keinen Wert zuweist.
    Sprich du musst der Funktion einen Wert zuweisen, damit die Funktion weis wo die Explosion erstellt werden soll.
    Testbefehl:



    C
    if(strcmp(cmdtext,"/bombe",true) == 0)
    {
        new Float:Pos[3];
        GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
        CreateExplosion(Pos[0],Pos[1],Pos[2], 6, 10.0);
        return 1;
    }

    MfG
    :thumbup:


    Mit freundlichen Grüßen
    German_ScripterHD