Beiträge von varrez

    Ich bin nun soweit, dass die Speicherung und das Laden der Gangcars über MySQL ohne Probleme funktioniert, darunter fällt auch das Tuning. Einziger Haken ist, dass die Tuningteile, aus irgendeinem Grund nicht am Fahrzeug angebracht werden. HIer dazu mein Code vom Laden der Gangcars und dem Teil, wo die Komponenten angebracht werden sollten.


    public LoadGangAutos()
    {
    new string[128];
    mysql_free_result();
    for(new i = 0; i < sizeof(GangAutoInfo); i++)
    {
    format(string, sizeof(string),"SELECT * FROM `gangautos` WHERE `SlotID` = '%d'", i);
    mysql_query(string);
    mysql_store_result();
    if(mysql_num_rows() != 0)
    {
    new val[ 512 ];
    mysql_fetch_field("CarID", val); GangAutoInfo[i][cID] = strval( val );
    mysql_fetch_field("OwnerID", val); GangAutoInfo[i][cOwner] = strval( val );
    mysql_fetch_field("TypID", val); GangAutoInfo[i][cTyp] = strval( val );
    mysql_fetch_field("PosX", val); GangAutoInfo[i][cPosX] = floatstr( val );
    mysql_fetch_field("PosY", val); GangAutoInfo[i][cPosY] = floatstr( val );
    mysql_fetch_field("PosZ", val); GangAutoInfo[i][cPosZ] = floatstr( val );
    mysql_fetch_field("Rotation", val); GangAutoInfo[i][cRot] = floatstr( val );
    mysql_fetch_field("Farbe1", val); GangAutoInfo[i][cColor1] = strval( val );
    mysql_fetch_field("Farbe2", val); GangAutoInfo[i][cColor2] = strval( val );
    mysql_fetch_field("Status", val); GangAutoInfo[i][cStatus] = strval( val );
    mysql_fetch_field("Tank", val); GangAutoInfo[i][cTank] = strval( val );
    mysql_fetch_field("ReSpawnTime", val); GangAutoInfo[i][cReSpawnTime] = strval( val );
    mysql_fetch_field("Tuning0", val); GangAutoInfo[i][cTuning][0] = strval ( val );
    mysql_fetch_field("Tuning1", val); GangAutoInfo[i][cTuning][1] = strval ( val );
    mysql_fetch_field("Tuning2", val); GangAutoInfo[i][cTuning][2] = strval ( val );
    mysql_fetch_field("Tuning3", val); GangAutoInfo[i][cTuning][3] = strval ( val );
    mysql_fetch_field("Tuning4", val); GangAutoInfo[i][cTuning][4] = strval ( val );
    mysql_fetch_field("Tuning5", val); GangAutoInfo[i][cTuning][5] = strval ( val );
    mysql_fetch_field("Tuning6", val); GangAutoInfo[i][cTuning][6] = strval ( val );
    mysql_fetch_field("Tuning7", val); GangAutoInfo[i][cTuning][7] = strval ( val );
    mysql_fetch_field("Tuning8", val); GangAutoInfo[i][cTuning][8] = strval ( val );
    mysql_fetch_field("Tuning9", val); GangAutoInfo[i][cTuning][9] = strval ( val );
    mysql_fetch_field("Tuning10", val); GangAutoInfo[i][cTuning][10] = strval ( val );
    mysql_fetch_field("Tuning11", val); GangAutoInfo[i][cTuning][11] = strval ( val );
    mysql_fetch_field("Tuning12", val); GangAutoInfo[i][cTuning][12] = strval ( val );
    mysql_fetch_field("Tuning13", val); GangAutoInfo[i][cTuning][13] = strval ( val );
    }
    else
    {
    GangAutoInfo[i][cID] = -1;
    GangAutoInfo[i][cOwner] = -1;
    GangAutoInfo[i][cTyp] = -1;
    GangAutoInfo[i][cPosX] = 0;
    GangAutoInfo[i][cPosY] = 0;
    GangAutoInfo[i][cPosZ] = 0;
    GangAutoInfo[i][cRot] = 0;
    GangAutoInfo[i][cColor1] = -1;
    GangAutoInfo[i][cColor2] = -1;
    GangAutoInfo[i][cStatus] = -1;
    GangAutoInfo[i][cTank] = 50;
    GangAutoInfo[i][cReSpawnTime] = 1800;
    GangAutoInfo[i][cStandTime] = 0;
    GangAutoInfo[i][cTuning][0] = 0;
    GangAutoInfo[i][cTuning][1] = 0;
    GangAutoInfo[i][cTuning][2] = 0;
    GangAutoInfo[i][cTuning][3] = 0;
    GangAutoInfo[i][cTuning][4] = 0;
    GangAutoInfo[i][cTuning][5] = 0;
    GangAutoInfo[i][cTuning][6] = 0;
    GangAutoInfo[i][cTuning][7] = 0;
    GangAutoInfo[i][cTuning][8] = 0;
    GangAutoInfo[i][cTuning][9] = 0;
    GangAutoInfo[i][cTuning][10] = 0;
    GangAutoInfo[i][cTuning][11] = 0;
    GangAutoInfo[i][cTuning][12] = 0;
    GangAutoInfo[i][cTuning][13] = 0;
    }
    mysql_free_result();
    }
    return 1;
    }


    forward GangCarTune();
    public GangCarTune()
    {
    for(new h = 0; h < sizeof(GangAutoInfo); h++)
    {
    if(GangAutoInfo[h][cTuning][0] != 0) { AddVehicleComponent(GangAutoInfo[h][cID],GangAutoInfo[h][cTuning][0]); }
    if(GangAutoInfo[h][cTuning][1] != 0) { AddVehicleComponent(GangAutoInfo[h][cID],GangAutoInfo[h][cTuning][1]); }
    if(GangAutoInfo[h][cTuning][2] != 0) { AddVehicleComponent(GangAutoInfo[h][cID],GangAutoInfo[h][cTuning][2]); }
    if(GangAutoInfo[h][cTuning][3] != 0) { AddVehicleComponent(GangAutoInfo[h][cID],GangAutoInfo[h][cTuning][3]); }
    if(GangAutoInfo[h][cTuning][4] != 0) { AddVehicleComponent(GangAutoInfo[h][cID],GangAutoInfo[h][cTuning][4]); }
    if(GangAutoInfo[h][cTuning][5] != 0) { AddVehicleComponent(GangAutoInfo[h][cID],GangAutoInfo[h][cTuning][5]); }
    if(GangAutoInfo[h][cTuning][6] != 0) { AddVehicleComponent(GangAutoInfo[h][cID],GangAutoInfo[h][cTuning][6]); }
    if(GangAutoInfo[h][cTuning][7] != 0) { AddVehicleComponent(GangAutoInfo[h][cID],GangAutoInfo[h][cTuning][7]); }
    if(GangAutoInfo[h][cTuning][8] != 0) { AddVehicleComponent(GangAutoInfo[h][cID],GangAutoInfo[h][cTuning][8]); }
    if(GangAutoInfo[h][cTuning][9] != 0) { AddVehicleComponent(GangAutoInfo[h][cID],GangAutoInfo[h][cTuning][9]); }
    if(GangAutoInfo[h][cTuning][10] != 0) { AddVehicleComponent(GangAutoInfo[h][cID],GangAutoInfo[h][cTuning][10]); }
    if(GangAutoInfo[h][cTuning][11] != 0) { AddVehicleComponent(GangAutoInfo[h][cID],GangAutoInfo[h][cTuning][11]); }
    if(GangAutoInfo[h][cTuning][12] != 0) { AddVehicleComponent(GangAutoInfo[h][cID],GangAutoInfo[h][cTuning][12]); }
    if(GangAutoInfo[h][cTuning][13] != 0) { AddVehicleComponent(GangAutoInfo[h][cID],GangAutoInfo[h][cTuning][13]); }
    printf("Gangcar Tune ausgeführt.");
    }
    return 1;
    }


    public CreateGangAutos()
    {
    for(new h = 0; h < sizeof(GangAutoInfo); h++){
    if(GangAutoInfo[h][cTyp] != -1){
    if(GangAutoInfo[h][cStatus] == 0){
    GangAutoInfo[h][cID] = CreateVehicle(GangAutoInfo[h][cTyp],GangAutoInfo[h][cPosX],GangAutoInfo[h][cPosY],GangAutoInfo[h][cPosZ],GangAutoInfo[h][cRot],GangAutoInfo[h][cColor1],GangAutoInfo[h][cColor2],GangAutoInfo[h][cReSpawnTime]);
    Gas[GangAutoInfo[h][cID]] = GangAutoInfo[h][cTank];
    SetTimer("GangCarTune", 3000, false);
    new string[255];
    format(string, sizeof(string), "{FFFF00}GLS-{21DD00}%d", GangAutoInfo[h][cID]);
    SetVehicleNumberPlate(GangAutoInfo[h][cID],string);
    }
    }
    }
    return 1;
    }



    Bitte um Hilfe, da ich langsam verzweifel :/


    Edit: @Jeffry: :love:


    Gruß
    Crowley :)

    [02:13:00] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`Tuning1' at line 1.


    for(new z; z<14; z++) {GangAutoInfo[i][cTuning][z] = GetVehicleComponentInSlot(GangAutoInfo[i][cID], z);}format(var, sizeof(var), "UPDATE `gangautos` SET `Tuning0`='%d', `Tuning1`='%d', `Tuning2` ='%d',`Tuning3`='%d',`Tuning4`='%d', `Tuning5`='%d', `Tuning6`='%d', `Tuning7`='%d', `Tuning8`='%d', `Tuning9`='%d', `Tuning10`='%d', `Tuning11`='%d', `Tuning12`='%d', `Tuning13`='%d' WHERE `SlotID`='%d'",GangAutoInfo[i][cTuning][0],GangAutoInfo[i][cTuning][1],GangAutoInfo[i][cTuning][2],GangAutoInfo[i][cTuning][3],GangAutoInfo[i][cTuning][4],GangAutoInfo[i][cTuning][5],GangAutoInfo[i][cTuning][6],GangAutoInfo[i][cTuning][7],GangAutoInfo[i][cTuning][8],GangAutoInfo[i][cTuning][9],GangAutoInfo[i][cTuning][10],GangAutoInfo[i][cTuning][11],GangAutoInfo[i][cTuning][12],GangAutoInfo[i][cTuning][13],i);mysql_query(var);


    Kann mir jemand sagen, was mein Fehler/Problem ist?


    Fehler selbst entdeckt, var war zu kurz.


    Vielen Dank! :)


    Gruß
    Crowley

    Was steht im Log in den ersten Zeilen, wenn du den Befehl ausführst?
    Das Fahrzeug wird aber erstellt, und die Nachrichten siehst du auch?

    SQL: server_log.txt
    SELECT: SELECT * FROM `gangautos` WHERE `SlotID` = '0'
    [20:07:56] UPDATE: UPDATE `gangautos` SET `CarID`='-1', `OwnerID`='25', `TypID`='522', `PosX`='-237.7', `PosY`='2600.1', `PosZ`='62.2', `Rotation`='273.5', `Farbe1`='1', `Farbe2`='1', `Status`='0', `Tank`='100', `ReSpawnTime`='1800' WHERE `SlotID`='0'

    Wird geupdatet, kann nicht gehen weil in der Tabelle ja nichts eingetragen ist.


    Gruß

    Das passt.
    Da keine Daten in den Variablen stehen, können auch keine Daten in der Datenbank stehen.


    Wie erstellst du denn so ein Fahrzeug, welches dann gespeichert werden soll?

    Befehl:
    if(strcmp("/creategangcar", cmd, true) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] == 2000)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /creategangcar [GangID] [Farbe1] [Farbe2]");
    return 1;
    }
    new GangID = strval(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /creategangcar [GangID] [Farbe1] [Farbe2]");
    return 1;
    }
    new FFarbe1 = strval(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /creategangcar [GangID] [Farbe1] [Farbe2]");
    return 1;
    }
    new FFarbe2 = strval(tmp);
    for(new h = 0; h < sizeof(GangAutoInfo); h++){
    if(GangAutoInfo[h][cOwner] == -1 && GangAutoInfo[h][cTyp] == -1 && GangAutoInfo[h][cColor1] == -1 && GangAutoInfo[h][cColor2] == -1){
    for(new i = 0; i < sizeof(AdminCar); i++){
    if(AdminCar[i][ATOCarID] == GetPlayerVehicleID(playerid)){
    AdminCar[i][ATOOwnerID] = -1;
    AdminCar[i][ATOCarID] = -1;
    }}
    GangAutoInfo[h][cID] = -1;
    GangAutoInfo[h][cOwner] = GangID;
    GangAutoInfo[h][cTyp] = GetVehicleModel(GetPlayerVehicleID(playerid));
    GetVehiclePos(GetPlayerVehicleID(playerid),GangAutoInfo[h][cPosX],GangAutoInfo[h][cPosY],GangAutoInfo[h][cPosZ]);
    GetVehicleZAngle(GetPlayerVehicleID(playerid),GangAutoInfo[h][cRot]);
    GangAutoInfo[h][cColor1] = FFarbe1;
    GangAutoInfo[h][cColor2] = FFarbe2;
    GangAutoInfo[h][cStatus] = 0;
    GangAutoInfo[h][cTank] = 100;
    GangAutoInfo[h][cMeter] = 0;
    DestroyVehicleSelfmade(GetPlayerVehicleID(playerid));
    SetTimerEx("CreateNewlyGangAutos",20000,0,"i",h);
    SendClientMessage(playerid, COLOR_YELLOW, "Du hast erfolgreich ein Auto erstellt, es spawnt in 20 Sekunden.");
    format(string,sizeof(string),"%s hat ein auto erstellt ",sendername);
    EnterToLog("creategangcar",string);
    break;
    }
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist in keinem Fahrzeug !");
    return 1;
    }
    }
    }


    Public:
    public CreateNewlyGangAutos(GCarID)
    {
    if(GangAutoInfo[GCarID][cTyp] != -1)
    {
    if(GangAutoInfo[GCarID][cID] == -1)
    {
    if(GangAutoInfo[GCarID][cStatus] == 0)
    {
    GangAutoInfo[GCarID][cID] = CreateVehicle(GangAutoInfo[GCarID][cTyp],GangAutoInfo[GCarID][cPosX],GangAutoInfo[GCarID][cPosY],GangAutoInfo[GCarID][cPosZ],GangAutoInfo[GCarID][cRot],GangAutoInfo[GCarID][cColor1],GangAutoInfo[GCarID][cColor2],GangAutoInfo[GCarID][cReSpawnTime]);
    Gas[GangAutoInfo[GCarID][cID]] = GangAutoInfo[GCarID][cTank];
    new string[50];
    format(string, sizeof(string), "{FFFF00}GLS-{21DD00}%d", GangAutoInfo[GCarID][cID]);
    SetVehicleNumberPlate(GangAutoInfo[GCarID][cID],string);
    SetVehicleToRespawn(GangAutoInfo[GCarID][cID]);
    OnVehicleDamageStatus(GCarID);
    }
    }
    }
    return 1;
    }

    Setze mal einen print in dein SaveGangAutos am Anfang hin. Wird das überhaupt aufgerufen?


    geht weiter bis SlotID 599


    Geprintet werdn aus SaveGangAutos();
    format(string, sizeof(string), "SELECT * FROM `gangautos` WHERE `SlotID` = '%d'", i);
    und
    format(string, sizeof(string), "INSERT INTO `gangautos` (`SlotID`) VALUES ('%d')", i);


    Edit: Muss mich korrigieren, nicht INSERT INTO wird geprintet, sondern:
    format(var, sizeof(var), "UPDATE `gangautos` SET `CarID`='%d', `OwnerID`='%d', `TypID`='%d', `PosX`='%.1f', `PosY`='%.1f', `PosZ`='%.1f', `Rotation`='%.1f', `Farbe1`='%d', `Farbe2`='%d', `Status`='%d', `Tank`='%d', `ReSpawnTime`='%d' WHERE `SlotID`='%d'",
    GangAutoInfo[i][cID],
    GangAutoInfo[i][cOwner],
    GangAutoInfo[i][cTyp],
    GangAutoInfo[i][cPosX],
    GangAutoInfo[i][cPosY],
    GangAutoInfo[i][cPosZ],
    GangAutoInfo[i][cRot],
    GangAutoInfo[i][cColor1],
    GangAutoInfo[i][cColor2],
    GangAutoInfo[i][cStatus],
    GangAutoInfo[i][cTank],
    GangAutoInfo[i][cReSpawnTime],
    i);

    Ich bin jetzt den Code nur überflogen, aber solltest du nicht beim Laden der Fahrzeuge die Fahrzeuge anschließend auch erstellen? ;) (Sehe ich nämlich nirgends)


    Weiters printest du beim Speichern der Autos "GangAutos Geladen" ist jetzt nicht weiter schlimm aber das macht man nicht wenn man im Callback Speichern ist :D

    Der Code stammt aus dem IR/RGR Script :wacko: Erstellt werden Fahrzeuge ja, nur das Speichern funktioniert nicht. Wenn ich Ingame ein Gangcar kaufe oder erstelle, werden Sie nicht gespeichert.


    Erstellt werden diese so:
    public CreateNewlyGangAutos(GCarID){if(GangAutoInfo[GCarID][cTyp] != -1){if(GangAutoInfo[GCarID][cID] == -1){if(GangAutoInfo[GCarID][cStatus] == 0){GangAutoInfo[GCarID][cID] = CreateVehicle(GangAutoInfo[GCarID][cTyp],GangAutoInfo[GCarID][cPosX],GangAutoInfo[GCarID][cPosY],GangAutoInfo[GCarID][cPosZ],GangAutoInfo[GCarID][cRot],GangAutoInfo[GCarID][cColor1],GangAutoInfo[GCarID][cColor2],GangAutoInfo[GCarID][cReSpawnTime]);Gas[GangAutoInfo[GCarID][cID]] = GangAutoInfo[GCarID][cTank];new string[50];format(string, sizeof(string), "{FFFF00}GLS-{21DD00}%d", GangAutoInfo[GCarID][cID]);SetVehicleNumberPlate(GangAutoInfo[GCarID][cID],string);SetVehicleToRespawn(GangAutoInfo[GCarID][cID]);OnVehicleDamageStatus(GCarID);}}}return 1;}


    Edit: @Jeffry: Keine Idee o.Ä.? :/


    Gruß

    Sonst wurden die Gang Fahrzeuge per File geladen und gespeichert, jetzt wo ich MySQL verwenden möchte, werden Sie nicht gespeichert. Ausgeführt wird SaveGangAutos(); bei /gmx und bei /saveserver. Code:



    public LoadGangAutos()
    {
    new string[128];
    mysql_free_result();
    for(new i = 0; i < sizeof(GangAutoInfo); i++)
    {
    format(string, sizeof(string),"SELECT * FROM `gangautos` WHERE `SlotID` = '%d'", i);
    mysql_query(string);
    mysql_store_result();
    if(mysql_num_rows() != 0)
    {
    new val[ 256 ];
    mysql_fetch_field("CarID", val); GangAutoInfo[i][cID] = strval( val );
    mysql_fetch_field("OwnerID", val); GangAutoInfo[i][cOwner] = strval( val );
    mysql_fetch_field("TypID", val); GangAutoInfo[i][cTyp] = strval( val );
    mysql_fetch_field("PosX", val); GangAutoInfo[i][cPosX] = floatstr( val );
    mysql_fetch_field("PosY", val); GangAutoInfo[i][cPosY] = floatstr( val );
    mysql_fetch_field("PosZ", val); GangAutoInfo[i][cPosZ] = floatstr( val );
    mysql_fetch_field("Rotation", val); GangAutoInfo[i][cRot] = floatstr( val );
    mysql_fetch_field("Farbe1", val); GangAutoInfo[i][cColor1] = strval( val );
    mysql_fetch_field("Farbe2", val); GangAutoInfo[i][cColor2] = strval( val );
    mysql_fetch_field("Status", val); GangAutoInfo[i][cStatus] = strval( val );
    mysql_fetch_field("Tank", val); GangAutoInfo[i][cTank] = strval( val );
    mysql_fetch_field("ReSpawnTime", val); GangAutoInfo[i][cReSpawnTime] = strval( val );
    //self_mysql_get_field("StandTime", val); GangAutoInfo[i][cStandTime] = strval( val );
    }
    else
    {
    GangAutoInfo[i][cID] = -1;
    GangAutoInfo[i][cOwner] = -1;
    GangAutoInfo[i][cTyp] = -1;
    GangAutoInfo[i][cPosX] = 0;
    GangAutoInfo[i][cPosY] = 0;
    GangAutoInfo[i][cPosZ] = 0;
    GangAutoInfo[i][cRot] = 0;
    GangAutoInfo[i][cColor1] = -1;
    GangAutoInfo[i][cColor2] = -1;
    GangAutoInfo[i][cStatus] = -1;
    GangAutoInfo[i][cTank] = 50;
    GangAutoInfo[i][cReSpawnTime] = 1800;
    GangAutoInfo[i][cStandTime] = 0;
    }
    mysql_free_result();
    }
    return 1;
    }


    public SaveGangAutos()
    {
    new string[128];
    for(new i = 0; i < sizeof(GangAutoInfo); i++)
    {
    format(string, sizeof(string), "SELECT * FROM `gangautos` WHERE `SlotID` = '%d'", i);
    mysql_query(string);
    mysql_store_result();
    if(mysql_num_rows() != 0)
    {
    format(string, sizeof(string), "INSERT INTO `gangautos` (`SlotID`) VALUES ('%d')", i);
    mysql_query(string);
    }
    mysql_free_result();
    new var[256];
    format(var, sizeof(var), "UPDATE `gangautos` SET `CarID`='%d', `OwnerID`='%d', `TypID`='%d', `PosX`='%.1f', `PosY`='%.1f', `PosZ`='%.1f', `Rotation`='%.1f', `Farbe1`='%d', `Farbe2`='%d', `Status`='%d', `Tank`='%d', `ReSpawnTime`='%d' WHERE `SlotID`='%d'",
    GangAutoInfo[i][cID],
    GangAutoInfo[i][cOwner],
    GangAutoInfo[i][cTyp],
    GangAutoInfo[i][cPosX],
    GangAutoInfo[i][cPosY],
    GangAutoInfo[i][cPosZ],
    GangAutoInfo[i][cRot],
    GangAutoInfo[i][cColor1],
    GangAutoInfo[i][cColor2],
    GangAutoInfo[i][cStatus],
    GangAutoInfo[i][cTank],
    GangAutoInfo[i][cReSpawnTime],
    //GangAutoInfo[i][cStandTime],
    i);
    mysql_query(var);
    }
    print("GangAutos Geladen");
    return 1;
    }


    Freue mich über jede hilfe! @Jeffry:


    Gruß
    Crowley :)

    Das habe ich mir eben beim überfliegen auch gedacht und zu DIALOG_STYLE_LIST geändert, klappt. Die Zeilenumbrüche werden angezeigt.


    Vielen Dank, mein Held :saint:


    Gruß
    varrez :)

    Habe zum Test folgendes in die Tabelle eingetragen:
    id 1 - tags Drogendeagler Waffendealer - header Artikel 1: Drogendealer & Waffendealer
    id 2 - tags Drogendealer - header Artikel 2: Drogendealer
    id 3 - tags Waffendealer - header Artikel 3: Waffendealer


    bei allen 3 als helptext: Dies ist ein Beispiel!~~Damit man gucken kann ob auch alles läuft, machen wir mal~einen Zeilenumbruch!


    Bei /help Drogendealer passiert dann folgendes: Klick


    Gruß

    Zitat von Pawno

    C:\Users\Varrez\Desktop\gtals\gamemodes\IR.pwn(21300) : error 017: undefined symbol "mysql_retrieve_row"
    C:\Users\Varrez\Desktop\gtals\gamemodes\IR.pwn(21302) : error 017: undefined symbol "mysql_fetch_field_row"

    Edit: Sorry, habe gerade gesehen das ich dir eine falsche Version genannt habe..


    SA:MP MySQL v2.1 Functions
    * (c) Copyright 2011, StrickenKid


    //Edit: Habe mysql_retrieve_row() mit mysql_fetch_row(str) und mysql_fetch_field_row(str,"header"); mit mysql_fetch_field("header", str); ersetzt. Der bisherige Code funktioniert.

    Gut, dann würde ich Folgendes vorschlagen:


    • Der Spieler gibt /help [Tag] ein.
    • Es wird dann in der Datenbank nach Artikeln mit diesem Tag gesucht.
    • In einem Dialog bekommt er alle Überschriften der Artikel ausgegeben, die diesen Tag enthalten.
    • Er wählt den Artikel den er lesen will
    • Dann wird in einem Dialog der Artikeltext angezeigt.


    Ist das so deinen Wünschen entsprechend?

    Genau das wäre mein Wunsch, richtig :)


    Gruß

    Das wäre gut zu wissen.Starte den Server und schaue im Server Log nach, ganz oben, dort wo die Plugins geladen werden, dort siehst du die Version.
    Falls nicht, dann steht sie auch in der beigefügten Include.


    Erstelle zudem bitte schonmal folgende Tabelle:


    Bezeichnung id tags header helptext
    Typ INT VARCHAR VARCHAR VARCHAR


    Die Länge der VARCHAR's musst du nach deinen Vorstellungen angeben.

    Vielen Dank für deine Antwort! :)

    Zitat von a_mysql

    SA-MP MySQL plugin R5


    Copyright (c) 2008-2010, G-sTyLeZzZ

    Tabelle habe ich erstellt

    /help [Suchbegriff/Tag] bspw. (Drogendealer)


    Tabellen werden nach Suchbegriff/Tag (Drogendealer) durchsucht und der Help-Artikel (Text) wird dementsprechend in einem Dialog angezeigt. Sollte es mehrere Treffer zu diesem Suchbegriff/Tag geben, wird ein Dialog angezeigt, mit allen Artikel ID's die diesen Suchbegriff/Tag beinhalten.



    Bisher sieht es so aus (soll aber mit MySQL Datenbank verbunden sein)


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new cmd[256],
    idx;
    cmd = strtok(cmdtext, idx);
    if(strcmp("/help", cmd, true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new x_nr[256];
    x_nr = strtok(cmdtext, idx);
    if(!strlen(x_nr))
    {
    ShowHelp(playerid);
    return 1;
    }
    new string[90];
    format(string, sizeof(string), "xyz.de/help/%s.txt", x_nr);
    HTTP(playerid, HTTP_GET, string, "", "HelpInfo");
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "*** Hilfe *** Suche Artikel... (Es sollte gleich ein Infotext angezeigt werden. Wenn nicht, probiere es zu einem späteren Ueitpunkt nochmal.)");
    return 1;
    }
    return 1;
    }
    return 0;
    }


    forward HelpInfo(playerid, response_code, data[]);
    public HelpInfo(playerid, response_code, data[])
    {
    if(response_code == 200)
    {
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "*** Hilfe *** Antwort aus der Hilfedatenbank erhalten.");
    ShowPlayerDialog(playerid, HelpDialog ,DIALOG_STYLE_MSGBOX,"Help System",data,"OK","");
    }
    else if(response_code == 404)
    {
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "*** Hilfe *** Leider gibt es dazu keinen passenden Treffer.");
    }
    else
    {
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "*** Hilfe *** Es konnte keine verbindung aufgebaut werden.");
    }
    }

    Guten Tag, ich möchte gerne Hilfeartikel aus der Datenbank laden und anzeigen lassen, jedoch bin ich nicht so der MySQL-Typ. Eine Datenbank ist bereits vorhanden. Die genaue MySQL Version kenne ich leider nicht (wenn jemand die MySQL Version des releasten RGR/IR Scripts kennt, bitte einen Post hinterlassen).


    Wichtige Tabellen aus der Datenbank:
    ID, Tags, Text


    Könnte mir jemand eine Hilfestellung geben? Evtl. ein Beispiel?


    Grüße