Beiträge von Haxler

    Zitat

    hi ich brauche für mein selfmade script paar befehle


    finde den Fehler in diesem Satz...
    Außerdem sollte man wissen, wie dein Fraktionsystem aufgebaut ist, sonst kann dir keiner helfen.

    Wie schaffen die es denn dein Script zu klauen? Ist mir noch nie passiert. Rassismus.. das hat damit doch garnichts zu tun. Denkste die klauen dir dein Script weil du schwarz, weiß , blau oder grün bist? ?(

    public OnPlayerCommandText(playerid, cmdtext[])
    {


    return 1;
    }

    fällt dir was auf? Dein Befehl ist außerhalb des Callbacks, kein wunder dass er nicht funktioniert.
    edit: deine Objekte erstellst du auch außerhalb eines Callbacks. -> Grundlagen lernen

    Du musst mein Beispiel nur erweitern. Zu erst solltest du beim Löschen rausfinden, was für ein Fahrzeug es ist, damit du die Variable wieder auf 0 setzten kannst. Wenn es z.b. ein Admincar war bringt es ja nichts PlayerCars[blabl] auf 0 zu setzten.

    stock p_DestroyVehicle(carid)
    {
    if(IsAnAdminCar(carid) != -1)
    {
    new id = IsAnAdminCar(carid);
    DestroyVehicle(Adminauto[id]);
    Adminauto[id] = 0;
    }
    return 1;
    }
    wenn du das jetzt noch mit allen anderen Fahrzeugen machst, die man löschen kann.. Versuchs einfach mal :D

    stock IsAnAdminCar(carid)
    {
    for(new i;i<sizeof(Adminauto);i++)if(carid == Adminauto[i])return i;
    return -1;
    }


    stock p_DestroyVehicle(carid)
    {
    if(IsAnAdminCar(carid) != -1)
    {
    DestroyVehicle(Adminauto[IsAnAdminCar(carid)]);
    }
    return 1;
    }
    so würde ich das versuchen. Nach deiner Methode wird zwar das Auto gelöscht, aber Adminauto[carid] wird immer auf 0 gesetzt auch wenn es kein Admincar war. Außerdem kann es passieren, dass carid größer als der Array Adminauto ist, dann hängt sich die Funktion auf.

    Ja hab mich damals vertan. gettime gibt den Abstand in Sekunden zurück also musst du mit Sekunden weiter rechnen. 60 * 1000 = 60000 Sekunden ~ 16 Stunden. Probiers einfach mal mit 60 (später dann mit 60*60 was 1 Stunde ist)

    Also so gehts bei mir:
    stock Test({Float,_}:...)
    {
    new count = numargs();
    for(new i;i<count;i++)printf("Arg%d: %f",count,getarg(i));
    return 1;
    }
    du musst halt oben als Parameter Float angeben
    edit: pwn tag fail
    edit2: bei Strings muss man dann den 2. Parameter von getarg benutzen (index). getarg(0,1); gibt also den 2. Buchstaben vom 1. Parameter zurück:



    stock Test(...)
    {
    new count = numargs();
    new t;
    for(new i;i<count;i++)
    {
    t = 0;
    new s[32];
    while(getarg(i,t) != 0)
    {
    s[t] = getarg(i,t);
    t++;
    }
    printf("Str%d: %s",count,s);
    }
    return 1;
    }

    Denke eher es liegt daran, dass es in Pawn keine dynamischen Arrays gibt. Nach seiner Idee würde sich der Array automatisch anpassen was aber nicht geht. (Verbessert mich wenn ich scheisse laber :D).

    Zitat

    Ich glaub die werden dann immernoch erstellt, aber nicht mehr vom Script bzw SA:MP richtig erkannt.
    Nimm einfach MAX_VEHICLES

    du weißt aber schon das MAX_VEHICLES genau das gleiche wie 2000 ist? Glaube kaum dass er 2000 Fahrzeuge braucht, deshalb würde ich den Array kleiner lassen..

    Du solltest deinen Code nochmal genau angucken. 1. Verwendest du die Variable Score für 2 Textdraws (Kills und Scores). 2. Musst du überlegen welche Textdraws du in die Schleife packst, Textdraws die nur 1 mal erstellt werden müssen gehören da nicht rein.

    @cRcKdwN: Halt dich doch bitte etwas zurück wenn du keine Ahnung hast...
    killer:
    unter welchem Callback hast du das denn? Callbacks wie z.b. OnGameModeInit haben keinen playerid-Parameter. Entweder du setzst das unter OnPlayerConnect oder lässt unter OnGameModeInit eine Schleife für alle Spieler durchlaufen, und erstellst es in dieser:
    for(new playerid;playerid<MAX_PLAYERS;playerid++)
    {
    //hier dein Code
    }
    das bringt aber nur was, wenn du das Textdraw wirklich für jeden erstellen willst.