Beiträge von Jeffry

    Du musst es für jedes Objekt machen:


    new mauer;
    mauer = CreateObject(19454, 2492.48340, -1514.41382, 22.36194, 0.00000, 0.00000, -90.00000);
    SetObjectMaterial(mauer, 0, 17036, "cuntwbt", "puttywall1", 0xFFFFFFFF);
    mauer = CreateObject(19454, 2482.85693, -1514.41382, 22.36190, 0.00000, 0.00000, -90.00000);
    SetObjectMaterial(mauer, 0, 17036, "cuntwbt", "puttywall1", 0xFFFFFFFF);
    //...usw


    Oder direkt:
    SetObjectMaterial(CreateObject(19454, 2492.48340, -1514.41382, 22.36194, 0.00000, 0.00000, -90.00000), 0, 17036, "cuntwbt", "puttywall1", 0xFFFFFFFF);
    SetObjectMaterial(CreateObject(19454, 2482.85693, -1514.41382, 22.36190, 0.00000, 0.00000, -90.00000), 0, 17036, "cuntwbt", "puttywall1", 0xFFFFFFFF);
    Das ist aber nicht so übersichtlich. Wie du willst.



    EDIT:
    Post unten: @J.L.Bourne: Genau.

    Na dann Gratulation an den Programmierer, einen Code zu schreiben der fünf Minuten braucht um zu starten. Nur mal als Vergleich: Mein Server startet in einer Sekunde und lädt etwas mehr als 50.000 Bans, 700 Häuser, 10.000 Objekte und noch alles mögliche Kleinzeug.


    Da diese Fehler zum Teil bei OnGameModeInit kommen, solltest du das posten, die callbacks werden ja in dem Backtrace angegeben.



    Generell liegt es daran, dass du mit Index -1 auf ein Array zugreifen willst.

    [09:52:07] [debug] Run time error 4: "Array index out of bounds"
    [09:52:07] [debug] Accessing element at negative index -1


    Das will es uns sagen.



    Poste bitte den Code dazu.

    GetPlayerName(playerid,name,sizeof(name)),GetPlayerName(pID,givename,sizeof(givename));


    Unter die Klammern der If Abfrage von gehalt.



    Warum?
    Du musst erst sscanf ausführen (setzt den Wert in pID) und dann musst du GetPlayerName nutzen.


    EDIT:
    Nebenbei, das ist die online Abfrage
    if(IsPlayerConnected(pID))

    Ja das liegt an sscanf. Entweder du benutzt eine veraltete Version oder du hast noch die Funktion deklariert, zu dem Plugin dazu.


    Lade dir die aktuelle Version des Plugins herunter und kompiliere den Code erneut (auch die Includes aktualisieren). Wenn das nicht geht suche ob du im Code die sscanf Funktion irgendwo deklariert hast. Die siehst so aus:
    http://wiki.sa-mp.com/wiki/Sscanf_code
    Diese musst du löschen.


    Wenn du mit keinem Weg zur Lösung kommst, dann poste den Befehl.

    Kompiliert der Code denn überhaupt, wenn du es ohne die Zeile kompilierst?
    Wenn ja, einfach
    mysql_debug(1);
    oder:
    mysql_log(LOG_ALL);
    (Je nach dem was das R7 mag)


    unter OnGameModeInit()


    Bsp:
    public OnGameModeInit()
    {
    //HIER EINFÜGEN
    //...anderes Zeugs


    einfügen.


    Das wirst du doch wohl hinbekommen. :S



    Außerdem kommt mir das schon relativ schleierhaft vor: :rolleyes:

    Zitat

    [23:01:06] Dieses Script [Version: Its Possible pRP 2.0b] steht unter Datenschutz und darf
    [23:01:06] nur von dem jenigen Besitzer benutzt/verwendet werden.
    [23:01:06] Falls diese Richtlinien nicht eingehalten werden,werden
    [23:01:06] Rechtlicheschritte gegen sie eingeleitet.
    [23:01:06] © Copyright & Gründer by Fernandez_Alvarez


    Aber gut, deine Sache.

    Wenn du die Datenbank Benutzerkonten nicht verändert hast, dann hat der root Benutzer kein Passwort.
    Nimm das Passwort raus und verbinde komplett ohne Passwort, oder setze in den Benutzerkonten ein Passwort ein.


    Falls es immer noch nicht geht, schalte den MySQL Debug an und poste was im Server Log steht wenn du den Server startest.

    Aber dies kann man doch noch viel besser schreiben!


    Was ist denn daran besser? Du hast alles in eine Zeile geschrieben, super! Jeder halbwegs kompetente Programmierer wird dir sagen, dass das absoluter Käse ist, da in der Programmierung eine ungeschriebene Regel gilt, nämlich nur eine Anweisung pro Zeile, in jeder Sprache.


    Warum macht man das?
    Liegt ganz einfach daran, dass man es besser lesen kann. Dein Code kann auf einem kleinen Bildschirm möglicherweise nicht komplett angezeigt werden.
    Außerdem kann es im geschäftlichen Bereich dazu kommen, dass du einen Code ausdrucken musst, und da ist es immens wichtig, dass es keine Umbrüche gibt.


    Was hast du noch verändert? Public und forward zu einem @ geändert. Das macht wirklich keinen Unterschied.


    Nein, der Code ist keineswegs besser, weder in Performance noch in Lesbarkeit.

    Du warst zu schnell beim Kopieren. :D Ich hatte eine Klammer vergessen und es gleich editiert.
    Muss so sein:


    if(strval(dini_Get("/gangwaffen/grove.ini", "Tec9")) > 0)
    (Nach der Tec9 hat eine Klammer gefehlt.)

    if(strval(dini_Get("/gangwaffen/grove.ini", "Tec9")) > 0)
    {
    //Tec9 vorhanden, eine weniger machen
    dini_IntSet("/gangwaffen/grove.ini", "Tec9",strval(dini_Get("/gangwaffen/grove.ini", "Tec9")) - 1);
    }
    else
    {
    //Keine Tec9 mehr.
    }

    Wofür die schleife?
    Kannst dort doch playerid verwenden.


    Naja, an sich ist es nicht falsch, die Schleife ist notwendig, wenn auch an der Stelle vielleicht etwas ungeschickt gesetzt.


    So wäre es geschickter:
    {
    if(vehicleid == Slashauto[playerid])
    {
    //nix
    }
    else if(ispassenger)
    {
    //nix
    }
    else
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(vehicleid == Slashauto[i])
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    SetPlayerPos(playerid, X, Y, Z);
    SendClientMessage(playerid, Rot, "Dieses Auto gehört nicht dir!");
    }
    }
    }
    TextDrawShowForPlayer(playerid, carhealth[playerid]);
    return 1;
    }


    Aber gut, das sind Kleinigkeiten.

    Wie gesagt, es ist nur ein Vorschlag. Wenn es nicht machbar ist oder zu aufwändig ist, dann ist das kein Problem.


    Ich habe einfach einen meiner Posts gemeldet und mich für die vorherige Meldung entschuldigt (maddin hat dann die Meldung abgewiesen und die Sache war geregelt).
    Es geht ja auch nicht darum ob es jetzt ein Problem für die Moderatoren ist oder nicht, sondern einfach nur um den Komfort. Wenn nicht machbar, dann nicht machbar. Eine Tragödie ist es sicherlich nicht, wie Kones sagte, das habe ich ja auch nie gesagt. :thumbup:

    Die Reihenfolge spielt hier auch eine Rolle. Mach es so:
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(vehicleid == Slashauto[playerid])
    {
    }
    else if(ispassenger)
    {
    }
    else if(vehicleid == Slashauto[i])
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    SetPlayerPos(playerid, X, Y, Z);
    SendClientMessage(playerid, Rot, "Dieses Auto gehört nicht dir!");
    }
    }
    TextDrawShowForPlayer(playerid, carhealth[playerid]);
    return 1;
    }

    Mein eigenes, da weiß ich was ich habe. Ich kann es dir nur raten, schreibe dir selbst eins und passe es an deinen Code an. Ich habe viele probiert, keines hat auch nur ansatzweise gescheit bei mir funktioniert, außer mein selbst geschriebenes.