Beiträge von Goldkiller

    Streaker22,

    Zitat

    X <= 0 ; X <= 00 ; X <= 000 ; X <= 000


    ist totaler Blödsinn.


    Um die länge Abzufragen ( Achtung,nur bei Strings! ) nimmst du strlen.
    strlen( inputtext )
    Für deine Abfrage:
    if( strlen( inputtext ) == 4 ) { }
    Zusätzlich nur noch prüfen ob es zwischen 0 und 10000 liegt, und du hast was du möchtest ;).
    new value = strval( inputtext );
    if( 0 <= value <= 9999) { }


    Bin mir allerdings nicht sicher,ob strval bei der Eingabe von Text nicht 0 zurückgibt. Beispiel strval("DasIstEinTest");

    Ich geb dir einen Tipp,denn der Fehler ist auch jetzt noch nicht zu sehen.
    Entfern mal die Zeile
    new pID,geld;
    und kompilier neu.Abgesehen davon,dass jetzt pID und geld nicht deklariert sind, wird dir irgendwo ein Anderer Fehler angezeigt.Denn es hat nichts mit der Zeile zu tun.

    Es ist schon mal nicht Random,sondern random.
    Der Compiler stürzt sicherlich bei dir ab,weil du die Zeile in keiner Funktion hast. Du kannst keine Funktionen ( in diesem Fall random ) aufrufen, außerhalb von andere Funktionen. Bischen blöd zu erklären, ... :/
    Du musst also spawn = random( sizeof(RandomSpawns) ); in einer anderen Funktion aufrufen.
    Mach es einfach unter OnGameModeInit / Filterscript.


    Wenn du ein neuen Spawn auswählst für das Pickup,solltest du auch sicher stellen,dass es nicht wieder am gleichen Ort erstellt wird. Kann man über eine do-while Schleife regeln.


    Bist du dir auch sicher,dass FRACTION_CARS_LOCKABLE definiert ist?

    Je nachdem ob fLock ein Tag hat,solltest du true/ false oder 0/1 benutzen.
    Ist fLock vom Typ bool: , dann solltest du true/false benutzen
    bool:fLock
    fLock = true;
    fLock = false


    Ist fLock ohne Tag, dann benutze 0 / 1.
    fLock = 1;
    fLock = 0;
    fLock = 242;

    Keine ahnung wieso normal sollte er das richtig auslesen aber man kennt ja pawno macht was er will.


    Diese Aussage ist sowas von dämlich. PAWNO macht schon mal gar nichts, es ist wenn überhaupt PAWN. Dazu kommt,dass PAWN nur das macht,was du möchtest.


    Was mir auffällt, du hast alle Einträge mit dem Prefix AH_* in der Tabelle.Bei den ganzen mod* Einträgen,ist aber kein AH_* davor. Liegt es vielleicht daran?

    Wieso hast du nicht mal die Koordinaten überprüft?


    MoveObject(TerTor, 2776.0532226563 , 913.03552246094 , 15.647570610046 - 10 , 3);
    MoveObject(TerTor, 2776.0532226563, 913.03552246094, 15.647570610046 ,3); // Ausgangspos setzen
    TerTor = CreateObject(980, 2777.2141113281, 913.04956054688, 12.531188964844, 0, 0, 90.5);


    X stimmt nicht immer überein. Beim erstellen ist es 2777, beim bewegen 2776.
    Y stimmt auch nicht immer überein. Kleiner Unterschied zwischen erstellen und bewegen ( 913.049 ; 913.035 )
    Z stimmt nie überein. Beim erstellen ~12,5 , beim schließen auf ~15.6 und beim öffnen wird es auf ~15.6 - 10 , also ~5.6 gestellt.

    Hast du auch mehr erwähnt als "habn kleines Problem mit dem Tor...." zum eigentlichem Problem ?
    Was ist denn dein Problem ? Übrigens kannst auch den ganzen Code per PAWN-Tag erkennbar machen.


    Da du dein Problem so gut beschrieben hast,hier mal eine Idee woran es liegen könnte.
    Damit das auch funktioniert mit dem Tor,hast du überhaupt sowas in der Art:
    TerTor = CreateObject( ... );
    Du musst natürlich auch der Variable TerTor einen Wert zuweisen, genau genommen die ID des Objektes.Sonst kannst du TerTor auch als Variable vergessen, wenn die etwas zugewiesen wird.

    Mit debuggen hättest den Fehler sicherlich schon gefunden.
    new fs,Query[1024];
    while(fs<sizeof(FightSystem))
    {
    format(Query,1024,"SELECT * FROM `gangzones` WHERE `id`='%d'",fs);
    mysql_query(Query);
    mysql_store_result();
    if(mysql_num_rows() > 0)
    {
    mysql_fetch_field("Besitzer",Query); FightSystem[fs][OwnerFaction] = strval(Query);

    FightSystem[fs][ZoneID] = GangZoneCreate(FightSystem[fs][gfMinX],FightSystem[fs][gfMinY],FightSystem[fs][gfMaxX],FightSystem[fs][gfMaxY]);
    }
    break;
    }

    Der Fehler liegt in diesem Abschnitt.
    fs wird immer kleiner als sizeof(FightSystem) sein,wenn du den Wert von fs nie änderst.


    //Edit:
    mysql_free_result(); muss auch in die Schleife, wenn ich es recht in Erinnerung habe.

    Der Server sollte nicht crashen,er sollte nur die Funktion nicht vollständig ausführen.
    psName kann nur 23 Zeichen fassen, "asdashdgasdgasjdgasdgasdgashdgasdgasda" ist definitiv länger.


    Hast das Tutorial wohl nicht ganz durchgearbeitet.Es gibt einen extra Platzhalter für Spieler,egal ob dort Name oder ID eingegeben wird.Das ist u. Je nachdem ob du das Plugin benutzt,wäre auch r möglich.


    Kleine Anmerkungen.

    • if(IsPlayerConnected(playerid)) - Wieso ? Einer macht es vor,zu viele machen es falsch nach. Die Abfrage bringt 0. Wer soll der Befehl sonst gesendet haben unter,wenn nicht ein Spieler der auf dem Server ist?
    • for(new i = 0; i < sizeof(//Zensiert); i++) - Schön "Zensiert",aber durch was geht denn die Schleife? Sollte doch eigentlich durch alle Spieler laufen.
    • if(pZeit < -1 || pZeit <= 0 || pZeit > 2000) - "pZeit < -1" ist unnötig. "pZeit <= 0" deckt diesen Fall ebenfalls ab

    Ihr habt aber schon gemerkt,dass er im Dialog "24" ( DIALOG_KICK ) nie die SpielerID abspeichert für die spätere Verwendung in Dialog "26" DIALOG_KICKGRUND ? Das müsste er Global in irgendeiner Variable speichern.
    Nur "new pID" zu schreiben und diese dann zu kicken,ohne jemals einen Wert zuzuweisen bringt nichts.Es wird immer der Spieler mit der ID 0 gekickt.


    Noch was nebenbei.Wieso hast du die Dialoge definiert als DIALOG_KICKGRUND und DIALOG_KICK,verwendest diese aber nicht bei OnDialogResponse ?


    Tipp:
    new KickPlayer[MAX_PLAYERS];