Beiträge von Jeffry

    Das Tutorial wurde auf die aktuellste Version R41-4 aktualisiert.


    Folgende Fehler wurden im Plugin behoben (siehe hier:(

    • Mehrzeilige Queries wurden nicht korrekt aus Dateien ausgelesen
    • Die libmariadb.dll (Windows) war fehlerhaft, dies hat vereinzelt zu Verbindungsproblemen geführt



    Folgende Änderungen sind notwendig (Standard, keine speziellen Änderungen):

    • Alle Dateien aus dem Download-Paket müssen die alten Dateien ersetzen.
    • Der Code muss mit der aktuellen Include neu kompiliert werden.


    Änderungen am Code dieses Tutorials sind nicht notwendig.

    Im Gamemode

    Sind Filterscripts geladen? Falls ja, funktionieren die Befehle darin?



    nein ich nutzte irgendwo zcmd.

    Bitte nochmal klar, deine Antwort ist nämlich auf Grund der Vergangenheitsform und dem verneinten "irgendwo" dreideutig.
    Nutzt du ZCMD oder nicht? (Antwort: Ja / Nein).



    Funktioniert irgendein Befehl? Falls ja, poste diesen bitte und beschreibe, an welcher Stelle im Code der steht.

    Beim IsPlayerConnected hat das ! gefehlt.
    Und die Abfrage auf Fraktion 13 war falsch herum, die habe ich negiert:
    ocmd:open(playerid, params[])
    {
    if(!IsPlayerConnected(playerid)) return 1;
    if(IsPlayerInRangeOfPoint(playerid, 2.0, 2495.2378,-1690.5319,14.7656)) //Grove Street Eingang
    {
    if(PlayerInfo[playerid][pMember] != 13 && PlayerInfo[playerid][pLeader] != 13) return GameTextForPlayer(playerid, "~r~Du hast keinen~n~Schluessel.", 5000, 6);
    if(gGroveDoor == 0)
    {
    gGroveDoor = 1;
    GameTextForPlayer(playerid, "~r~Abgeschlossen", 3000, 6);
    }
    else if(gGroveDoor == 1)
    {
    gGroveDoor = 0;
    GameTextForPlayer(playerid, "~g~Aufgeschlossen", 3000, 6);
    }
    }
    else if(IsPlayerInRangeOfPoint(playerid, 2.0, 2807.619873,-1171.899902,1025.570312)) //Grove Street Ausgang
    {
    if(PlayerInfo[playerid][pMember] != 13 && PlayerInfo[playerid][pLeader] != 13) return GameTextForPlayer(playerid, "~r~Du hast keinen~n~Schluessel.", 5000, 6);
    if(gGroveDoor == 0)
    {
    gGroveDoor = 1;
    GameTextForPlayer(playerid, "~r~Abgeschlossen", 3000, 6);
    }
    else if(gGroveDoor == 1)
    {
    gGroveDoor = 0;
    GameTextForPlayer(playerid, "~g~Aufgeschlossen", 3000, 6);
    }
    }
    return 1;
    }

    Aber wenn ich z.B /veh [SPIELERID] [FahrzeugID] eingebe kommt Ungültige Model ID!

    Nutzt du das sscanf Plugin oder nur die Funktion im Code?
    Und was genau gibst du ein? Liegt die ModelID (!) zwischen 400 und 611?


    Versuche es eventuell mal testweise so:
    if(sscanf(params,"ii",pID,mID))return SendClientMessage(playerid,DUNKELROT,"[INFO] /veh [playerid] [modelid]");


    Falls das nicht hilft, poste bitte die createPlayerCar Funktion.

    gut, dann weiß ich wenigstens woran es liegt

    Ja, da habe ich auch wieder was gelernt, das war mir so nämlich zuvor noch nie aufgefallen, dass bei Funktionen mit Tag diese Info nicht angezeigt wird.


    Ich habe heute noch etwas rumprobiert, wie man das umgehen kann. Wirklich schön sind die Lösungen zwar nicht, aber ich zeige die dir trotzdem mal.


    Lösung 1:
    Man legt sich eine neue Include an und nennt diese z.B. "zDummies.inc". Diese bleibt dann im include Ordner, wird aber nie mittels #include in einen Code eingebunden.
    In diese Include schreibst du dann das native ohne den Tag rein, sprich so:
    native mysql_connect(const host[], const user[], const password[], const database[], MySQLOpt:option_id = MySQLOpt:0);
    Dann wird der Hinweis korrekt angezeigt.



    Lösung 2:
    Du schreibst folgendes unter die "native MySQL:mysql_connect..." Zeile in der a_mysql.inc:
    #define mysql_connect _dummy_mysql_connect
    native mysql_connect(const host[], const user[], const password[], const database[], MySQLOpt:option_id = MySQLOpt:0);
    #undef mysql_connect



    Beide Wege klappen und führen zum gewünschten Ergebnis.

    Bist du dir sicher das er die .inc datei aus der r41-4 geladen hat und nicht noch irgendwo ne alte gefunden hat, die du noch irgendwo rumfliegen hast?

    Darauf habe ich gar nicht geachtet, du hast Recht!
    Das was es mir da anzeigt kommt nicht von der R41-4, sondern von den alten natives der R39-3.


    Tatsächlich zeigt es mir die Info mit der R41-4 nicht an.
    Ich habe jetzt etwas rumprobiert und herausgefunden, dass es am "Tag" vor dem native liegt ("MySQL:"). Sobald das vor der Funktion in der Include steht, wird das nicht mehr angezeigt, auch nicht, wenn man im Code das MySQL: vorne hin schreibt.


    Das ist aber kein Fehler der Include, sondern ein Fehler von pawno, daran lässt sich wahrscheinlich nichts machen.
    Zum Beispiel bei "TextDrawCreate" tritt dieses Problem auch auf. Bei allen natives mit Tag.

    Die .dll wird erst zur Laufzeit des Servers ausgeführt, die hat mit der .inc während dem Scripten nichts zu tun.
    Ich habe mir die R41-4 grade mal heruntergeladen und die Include ausprobiert, ich erhalte die Vorschläge weiterhin:

    müsste mein Hoster da was an seinem Linux system ändern ?

    Wenn du keinen Zugriff auf die Konsole hast, dann ja. Setze dich am besten mit deinem Host dazu in Verbindung. Verweise am besten auch auf die beiden Links, die ich dir gegeben habe, damit sollte der Host dann etwas anfangen.
    Es wäre gut, wenn du uns dann hier Rückmeldung geben kannst, wenn das Problem durch den Host gelöst werden konnte.

    Was ich drinne habe ist nur: Register / Login System in MySQL von dir @Jeffry

    Das erklärt es.
    In der a_mysql.inc findet sich das hier:
    enum E_LOGLEVEL
    {
    NONE = 0,
    DEBUG = 1,
    INFO = 2,
    WARNING = 4,
    ERROR = 8,

    ALL = ERROR | WARNING | INFO | DEBUG
    };


    Somit sind beide bereits deklariert, daher der Fehler.


    Entweder du benennst deine Funktion etwas um, oder du benennst diese enum-Werte in der a_mysql.inc um, beides ist möglich.