Beiträge von SoulMan

    Ich habe mir den PAWN Syntax angeeignet (hier).
    Anschließend nach Betrachtung der Funktionen und Callbacks programmiert.


    Allerdings habe ich schnell gemerkt, dass PAWN (ich formuliere es mal vorsichtig) gewisse Defizite aufweist, daher verwende ich nicht mehr PAWN für diese Server.


    Diese "Defizite" fallen mir auch vermehrt auf und hindern mich teilweise massiv an meiner "Arbeit".



    Zum Thema:
    Ich hab mir MrMonat Tutorials angeschaut, fand diese jedoch nicht so aufschlussreich, als ich bestimmte Sachen brauchte.
    Dann habe ich mir hier viele Tutorials angeschaut und alles selbst ausprobiert. Der Rest hat sich dann eben mit der wachsenden Erfahrung so entwickelt.

    Ich check nicht woran das liegen kann.
    1x funktioniert doch alles, dann wird nur noch HausID 0 geladen, aber die Namen wurden trotzdem alle gespeichert.


    //Edit:


    Das mit den Pickups funktioniert nun!
    Problem: Eingetragene Strings werden nicht richtig ausgelesen.


    Aktuelle Codes:


    enum p_HausDaten
    {
    h_ID,
    Float:h_x,
    Float:h_y,
    Float:h_z,
    h_interior,
    h_vworld,
    Float:h_px,
    Float:h_py,
    Float:h_pz,
    h_Preis,
    h_locked,
    h_Name[32],
    h_Besitzer[MAX_PLAYER_NAME]
    }
    new HausInfo[MAX_HAUS][p_HausDaten] = {
    {0,2527.654052,-1679.388305,1015.498596,1,300,2459.5750,-1690.8630,13.5434,1250},
    {1,2454.717041,-1700.871582,1013.515197,2,301,2523.7327,-1658.7029,15.4935,1230},
    {2,2807.619873,-1171.899902,1025.570312,8,302,2512.8721,-1651.3833,13.9735,1240}
    };
    new HausPickups[MAX_HAUS];
    new Text3D:HausLabels[MAX_HAUS];


    stock CheckHaus(id)
    {
    new Query[128];
    format(Query,128,"SELECT * FROM `Houses` WHERE `HausID` = '%d'",id);
    mysql_query(Query);
    mysql_store_result();
    new ergb = mysql_num_rows();
    return ergb;
    }


    stock SaveHouses()
    {
    new Query[128];
    for(new i;i<MAX_HAUS;i++)
    {
    if(!CheckHaus(i))
    {
    format(Query,128,"INSERT INTO Houses (HausID, Besitzer, Hausname) VALUES ('%d', '%s', '%s')",HausInfo[i][h_ID],HausInfo[i][h_Besitzer],HausInfo[i][h_Name]);
    mysql_query(Query);
    }
    else
    {
    mysql_SetString("Houses", "Besitzer", HausInfo[i][h_Besitzer], "HausID", HausInfo[i][h_ID]);
    mysql_SetString("Houses", "Hausname", HausInfo[i][h_Name], "HausID", HausInfo[i][h_ID]);
    }
    DestroyPickup(HausPickups[i]);
    Delete3DTextLabel(HausLabels[i]);
    }
    return 1;
    }


    stock LoadHouses()
    {
    new str[124];
    for(new i;i<MAX_HAUS;i++)
    {
    if(CheckHaus(i))
    {
    format(HausInfo[i][h_Besitzer],MAX_PLAYER_NAME,"%s",mysql_GetString2("Houses", "Besitzer", "HausID", HausInfo[i][h_ID]));
    format(HausInfo[i][h_Name],32,"%s",mysql_GetString2("Houses", "Hausname", "HausID", HausInfo[i][h_ID]));
    }
    HausPickups[i] = CreatePickup(1239,23,HausInfo[i][h_px],HausInfo[i][h_py],HausInfo[i][h_pz],0);
    format(str,sizeof(str),"%s\nHausID: %d\nBesitzer: %s\nPreis: $%d",HausInfo[i][h_Name],HausInfo[i][h_ID],HausInfo[i][h_Besitzer],HausInfo[i][h_Preis]);
    HausLabels[i] = Create3DTextLabel(str,0xFFFFFFFF,HausInfo[i][h_px],HausInfo[i][h_py],HausInfo[i][h_pz],10,0,0);
    }
    return 1;
    }


    Alle Labels haben die Werte von HausID 0.
    Entweder funktioniert der stock CheckHaus nicht oder es liegt am Laden.


    //Edit:
    Worttrennung.

    if(dialogid == Dialog_Tanken)
    {
    if(response == 1)
    {
    TogglePlayerControllable(playerid, 0);
    GameTextForPlayer(playerid,"~n~~n~~n~~n~~n~~n~~r~Betanke Fahrzeug!~n~~y~~h~Bitte warten...",4600,3);
    SetTimer("Fillup", RefuelWait, 0);
    Betanken[playerid] = 1;
    }
    else if(response == 0)
    {
    SendClientMessage(playerid,COLOR_RED,"Dann Betankst du dein Fahrzeug nicht.");
    }
    }


    //Edit:
    Code geändert.
    Füge genau das unter dem letzten Dialog ein ( vor dem letzten return 1; ).

    Könnte mir vorstellen, dass es daran liegt. Versuch es mal, denn der Rest des Befehls sieht
    richtig aus. Und ich würde dir empfehlen, nicht immer 2 neue Klammern zu öffnen um was zu returnen.
    Es reicht auch
    if(GetDistanceBetweenPlayers(playerid, userid) > 7)return SendClientMessage(playerid, COLOR_LIGHTGREY, "Dieser Spieler befindet sich nicht in deiner Nähe.");

    Woher weißt du denn, dass es definitiv ein mysql Fehler ist?


    //Edit:
    Also ich bin mir auch ziemlich sicher, dass es einer ist, da ich die Pickups mal "erzwungen" habe, indem
    ich ein extra enum für sie angelegt habe, aber man weiß ja nie. :D


    //Edit 2:
    Und als ich dann alle hatte, wurden sie alle mit den Infos von HausID 0 bestückt. ^^


    //Edit 3:
    Ok hab's mir gerade selbst erklärt xD


    Dann such ich jetzt jmd. mit MySQL Kentnissen, der mir helfen kann.

    Ich kann ja mal testen, ob sie weiterhin erstellt werden, glaube aber dass es nicht so war.
    Melde mich in einer Minuten mit dem Ergebnis.


    Ergebnis:

    Jetzt wurde auch wieder nur HausID 0 nach dem Restart erstellt.
    Aber es wurden 3 neue Zeilen in der Tabelle angelegt. Nur ohne Namen eben. ^^