Create Explosion (Mit SetTimerEx) problem..

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
  • Moin Ich habe ein problem..


    Ich möchte eine Explosion nach 10 Sekunden erstellen, jedoch will das nicht -.-

    new c4object[3];



    if (strcmp("/setc4", cmdtext, true) == 0)
    {
    if(hatdynamit[playerid]==1)
    {
    new Float:Xc4,Float:Yc4,Float:Zc4;
    GetPlayerPos(playerid,Xc4,Yc4,Zc4);
    c4object[0]=CreateObject(2042, Xc4, Yc4, Zc4, 0, 0, 0);
    c4object[1]=CreateObject(2358, Xc4, Yc4, Zc4, 0, 0, 180);
    c4object[2]=CreateObject(1654, Xc4, Yc4, Zc4, 270, 90, 0);
    hatdynamit[playerid]=0;
    setdynamit=1;
    //CreateExplosion(Xc4,Yc4,Zc4,6,10);
    SetTimerEx("explosion",10000,0,"fff",Xc4,Yc4,Zc4);
    printf("%f %f %f",Xc4,Yc4,Zc4);
    }
    return 1;
    }


    //-----------------------------


    forward explosion(Xc4,Yc4,Zc4);


    public explosion(Xc4,Yc4,Zc4)
    {
    DestroyObject(c4object[0]);
    DestroyObject(c4object[1]);
    DestroyObject(c4object[2]);
    CreateExplosion(Zc4,Zc4,Zc4,6,10);
    printf("%f %f %f",Xc4,Yc4,Zc4);
    }



    An der Variable hatdynamit kann es nicht liegen..
    Wenn ich CreateExplosion vor dem Timer mache, klappt das ohne probleme..
    Wenn ich aber nun X und Y von der Plazierten Bombe übergebe und erst nach 10 Sekunden explodieren lassen möchte, will das Ding nicht..
    X Y und Z stimmen überein, also diese werden richtig übergeben!
    Jedoch erscheint keine Explosion..


    Ich bitte um hilfeeeeee!

  • schon mal die variablen bei der explosion angesehen?
    Hier berichtigt als Kommentar ist deine alte version
    public explosion(Xc4,Yc4,Zc4)
    {
    DestroyObject(c4object[0]);
    DestroyObject(c4object[1]);
    DestroyObject(c4object[2]);
    CreateExplosion(Xc4,Yc4,Zc4,6,10);//CreateExplosion(Zc4,Zc4,Zc4,6,10);
    printf("%f %f %f",Xc4,Yc4,Zc4);
    }

  • Sry xD
    Aber trotzdem funktioniert es nicht -.-


    nochmal xD



    if (strcmp("/setc4", cmdtext, true) == 0)
    {
    if(hatdynamit[playerid]==1)
    {
    new Float:Xc4,Float:Yc4,Float:Zc4;
    GetPlayerPos(playerid,Xc4,Yc4,Zc4);
    c4object[0]=CreateObject(2042, Xc4, Yc4, Zc4, 0, 0, 0);
    c4object[1]=CreateObject(2358, Xc4, Yc4, Zc4, 0, 0, 180);
    c4object[2]=CreateObject(1654, Xc4, Yc4, Zc4, 270, 90, 0);
    hatdynamit[playerid]=0;
    setdynamit=1;
    //CreateExplosion(Xc4,Yc4,Zc4,6,10);
    SetTimerEx("explosion",10000,0,"fff",Xc4,Yc4,Zc4);
    printf("%f %f %f",Xc4,Yc4,Zc4);
    }
    return 1;
    }



    //--------------------



    forward explosion(Xc4,Yc4,Zc4);


    public explosion(Xc4,Yc4,Zc4)
    {
    DestroyObject(c4object[0]);
    DestroyObject(c4object[1]);
    DestroyObject(c4object[2]);
    CreateExplosion(Xc4,Yc4,Zc4,6,10);
    printf("%f %f %f",Xc4,Yc4,Zc4);
    }



    Will einfach nicht...
    Es kann ja auch kein Unterschied machen das es ein Filterscript ist , oder?
    Ich meine CreateExplosion funktioniert ja nur nicht im Timer-.-
    Ich muss da irgendwas falsch gemacht haben-.-

    Einmal editiert, zuletzt von MiniKahn ()

  • kB Fehler zu suchen aber machs doch mit Variablen oder nem Enum anstatt son schrott dann biste sicher das es 100% funktioniert


    forward explosion();
    new Float:vXc4,Float:vYc4,Float:vZc4;
    if (strcmp("/setc4", cmdtext, true) == 0)
    {
    if(hatdynamit[playerid]==1)
    {
    new Float:Xc4,Float:Yc4,Float:Zc4;
    GetPlayerPos(playerid,Xc4,Yc4,Zc4);
    c4object[0]=CreateObject(2042, Xc4, Yc4, Zc4, 0, 0, 0);
    c4object[1]=CreateObject(2358, Xc4, Yc4, Zc4, 0, 0, 180);
    c4object[2]=CreateObject(1654, Xc4, Yc4, Zc4, 270, 90, 0);
    vXc4 = Xc4;
    vYc4 = Yc4;
    vZc4 = Zc4;
    hatdynamit[playerid]=0;
    setdynamit=1;
    SetTimer("explosion",10000,false);
    printf("%f %f %f",Xc4,Yc4,Zc4);
    }
    return 1;
    }


    public explosion()
    {
    DestroyObject(c4object[0]);
    DestroyObject(c4object[1]);
    DestroyObject(c4object[2]);
    CreateExplosion(vXc4,vYc4,vZc4,6,10);
    printf("%f %f %f",vXc4,vYc4,vZc4);
    }

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • Der Fehler ist ziemlich simpel^^
    new c4object[3];
    new Float:Xc4,Float:Yc4,Float:Zc4; //<- Jetzt ist die Variable global definiert und somit kann es auch das andere public lesen


    if (strcmp("/setc4", cmdtext, true) == 0)
    {
    if(hatdynamit[playerid]==1)
    {
    //new Float:Xc4,Float:Yc4,Float:Zc4; <- Die Variablen sind nur in dem Befehl aktiv, nirgendswo anders
    GetPlayerPos(playerid,Xc4,Yc4,Zc4);
    c4object[0]=CreateObject(2042, Xc4, Yc4, Zc4, 0, 0, 0);
    c4object[1]=CreateObject(2358, Xc4, Yc4, Zc4, 0, 0, 180);
    c4object[2]=CreateObject(1654, Xc4, Yc4, Zc4, 270, 90, 0);
    hatdynamit[playerid]=0;
    setdynamit=1;
    //CreateExplosion(Xc4,Yc4,Zc4,6,10);
    SetTimerEx("explosion",10000,0,"fff",Xc4,Yc4,Zc4);
    printf("%f %f %f",Xc4,Yc4,Zc4);
    }
    return 1;
    }