erledigt

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Habe mal versucht auf einen Befehl die Mieter aufzulisten, dass sie untereinander aufgelistet werden.. Doch wie schaffe ich diese auf einen textdraw zu listen?


    ocmd:mieter(playerid,params[])
    {
    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
    ReturnPropertyData(playerid);
    new string[128],query[256],haus = Spieler[playerid][pReturnPropertyDataHaus],count = Spieler[playerid][pReturnPropertyDataHausCount];
    if(count == 0)return SendClientMessage(playerid,GRAU,"Du besitzt kein Haus.");
    if(haus == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht in/an deinem Haus.");
    format(string,sizeof(string),"[_Mieter der Hausnummer %i_]",haus);
    SendClientMessage(playerid,HELLBLAU,string);
    mysql_format(MySqlConnection,query,sizeof(query),"SELECT Name FROM "#SQLTAG"_account_main WHERE HausMieter='%d'",haus);
    mysql_function_query(MySqlConnection,query,true,"OnQueryFinish","siii",query,_SQL_MIETER_ROW,playerid,MySqlConnection);
    return 1;
    }


    Also mit TextDrawSetString(HaussystemTextdraw[7],Haus_String); will ich sie auflisten

    Einmal editiert, zuletzt von tayson87 ()

  • Beispielsweise:
    Beispiel = TextDrawCreate(2.342657, 425.250091, "00:00:00 Uhr 21.05.2015");
    TextDrawLetterSize(Beispiel, 0.277583, 1.185832);
    TextDrawAlignment(Beispiel, 1);
    TextDrawColor(Beispiel, 65535);
    TextDrawSetShadow(Beispiel, 0);
    TextDrawSetOutline(Beispiel, 1);
    TextDrawBackgroundColor(Beispiel, 51);
    TextDrawFont(Beispiel, 1);
    TextDrawSetProportional(Beispiel, 1);
    public Beispiel()
    {
    new Stunde, Minute, Sekunde, Jahr, Monat, Tag, string[30];
    gettime(Stunde, Minute, Sekunde); getdate(Jahr, Monat, Tag);
    format(string, sizeof(string), "%02d:%02d:%02d Uhr - %02d.%02d.%04d", Stunde, Minute, Sekunde, Tag, Monat, Jahr);
    TextDrawSetString(Beispiel, string);
    return 1;
    }
    Voraussetzungen dafür ist natürlich ein existierendes Textdraw.


    :thumbup:

  • Na damit
    mysql_format(MySqlConnection,query,sizeof(query),"SELECT Name FROM "#SQLTAG"_account_main WHERE HausMieter='%d'",haus);

    :huh: ?

  • Du kannst beispielsweise so die Mieter in ein Textdraw eintragen, du musst allerdings die Mieter auslesen und in einem enum eintragen um das so zu machen:
    for(new i = 0; i < MAX_MIETER; i++)
    {
    format(string, sizeof(string), "%s%s~n~", string, MieterInfo[i][mieterName]);
    }
    TextDrawSetString(DeinTextdraw, string);

  • Habs mal so gemacht, würde das gehen? :huh:


    new MAX_MIETER = HausInfo[haus][haus_eingemitetenzaehler];
    for(new i = 0; i < MAX_MIETER; i++)
    {
    mysql_format(MySqlConnection,query,sizeof(query),"SELECT * FROM "#SQLTAG"_account_main WHERE HausMieter='%d'",haus);
    mysql_function_query(MySqlConnection,query,true,"OnQueryFinish2","ssiii",query,namestring,haus,playerid,MySqlConnection);
    format(Haus_String, sizeof(Haus_String), "%s", namestring);
    }
    TextDrawSetString(HaussystemTextdraw[4],namestring);

  • new MAX_MIETER = HausInfo[haus][haus_eingemitetenzaehler];


    kannst auch direkt HausInfo[haus][haus_eingemitetenzaehler]; reinschreiben :)


    for(new i = 0; i < MAX_MIETER; i++)
    zu
    for(new i = 0; i < HausInfo[haus][haus_eingemitetenzaehler]; i++)


    Bei dem Query bin ich mir zwar nicht sicher (keine Ahnung von function query's) aber ich wette das wird nicht gehen. :)
    Am besten du denkst mal nach was ud gemacht hast, jedenfalls weiß er nicht aus welcher Spalte er den Namen bekommen soll.

  • trotzdem danke m4a_X :love:


    Kein Problem :)
    Nicht nur Jeffry hat die Fähigkeiten dir zu Helfen. :)


    Teste es :)
    // GEDÖNSTE FÜR GANZ OBEN


    #define _SQL_HOUSEMIETER_LOAD 999 // Wusste nicht welche ID du bereits nutzt dafür


    // FÜR DEIN TEXTDRAW


    new string[256];
    format(string, sizeof(string), "SELECT * FROM "#SQLTAG"_account_main WHERE `HausMieter` = '%d'", haus);
    mysql_function_query(sqlHandle, string, true, "LoadHouseRentFinish", "siii", string, _SQL_HOUSEMIETER_LOAD, 0, MySqlConnection);


    // PUBLIC FÜR DAS LADEN


    forward LoadHouseRentFinish(index[],sqlresultid,extraid,SconnectionHandle);
    public LoadHouseRentFinish(index[], sqlresultid, extraid, SconnectionHandle)
    {
    new lResult[128], rows, fields, string[256];
    switch(sqlresultid)
    {
    case _SQL_HOUSEMIETER_LOAD:
    {
    print("Hausmieter werden geladen...");
    cache_get_data(rows, fields);
    new lCount, lStart = GetTickCount();
    if(rows)
    {
    while(lCount < rows)
    {
    cache_get_field_content(lCount, "SPALTE MIT DEM NAMEN", lResult), format(string, sizeof(string), "%s~n~%s", string,lResult);
    lCount++;
    }
    }
    TextDrawSetString(HaussystemTextdraw[4], string);
    printf("Hausmieter wurden in %d Millisekunden geladen!", GetTickCount()-lStart);
    }
    }
    return 1;
    }

  • Beitrag von tayson87 ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Beitrag von tayson87 ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Hab mal die Mieter so als textdraw gelistet das sie untereinander stehen und dass wenn keine Mieter aufgelistet werden das da 'Niemand' stehen sollte. Doch ingame wird leider nicht 'Niemand' angezeigt..
    Was mach ich falsch ? Es soll so viele "Niemand" untereinander stehen wie Mieterslots es gibt


    Mieterslots %i/%i",HausInfo[haus][haus_eingemitetenzaehler],HausInfo[haus][haus_slots]


    public LoadHouseRentFinish(index[],sqlresultid,extraid,SconnectionHandle)
    {
    new lResult[128], rows, fields, string[256];
    switch(sqlresultid)
    {
    case _SQL_HOUSEMIETER_LOAD:
    {
    cache_get_data(rows, fields);
    new lCount;
    if(rows)
    {
    while(lCount < rows)
    {
    cache_get_field_content(lCount, "SPALTE MIT DEM NAMEN", lResult), format(string, sizeof(string), "~w~%s~n~%s", string,lResult);
    lCount++;
    }
    }
    else
    {
    for(new i; i < 10; ++i)
    {
    if(i < lCount)
    {
    format(string, sizeof(string), "~w~%s~n~%s. Niemand", string,lResult);
    }
    }
    }
    TextDrawSetString(HausLabelTD[7], string);
    }
    }
    return 1;
    }

    Einmal editiert, zuletzt von tayson87 ()

  • public LoadHouseRentFinish(index[],sqlresultid,extraid,SconnectionHandle)
    {
    new lResult[128], rows, fields, string[256];
    switch(sqlresultid)
    {
    case _SQL_HOUSEMIETER_LOAD:
    {
    cache_get_data(rows, fields);
    new lCount;
    format(string, sizeof(string), "~w~");
    while(lCount < rows)
    {
    cache_get_field_content(lCount, "SPALTE MIT DEM NAMEN", lResult);
    format(string, sizeof(string), "%s%s~n~", string,lResult);
    lCount++;
    }
    for(new i = lCount; i < 10; i++)
    {
    format(string, sizeof(string), "%sNiemand~n~", string);
    }
    TextDrawSetString(HausLabelTD[7], string);
    }
    }
    return 1;
    }


    Versuche es so.

  • Funktioniert jedoch nicht ganz ^^ da steht zwar nun 10x Niemand doch ich wollte es so anpassen je nach Miterslots das haus hat. das heißt zB wenn das Haus 5 Slots hat und keiner diese SLots besetzt das dann 5 Mal stehen ^^ Je nach Slotzahl soll dort "Niemand" angezeigt werden..
    VLL. Hilft das hier : Mieterslots %i/%i",HausInfo[haus][haus_eingemitetenzaehler],HausInfo[haus][haus_slots]

  • Beitrag von tayson87 ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Untereinander halt ich mein es so


    Momentan sieht es so aus:
    http://www.pic-upload.de/view-27803017/sa-mp-148.png.html


    Aber da nunmal die Slotanzahl für das Haus auf 4 gesetzt worden sind sollte es so aussehen (Das weiße angemalte einfach weg denken):
    http://www.pic-upload.de/view-27803052/sa-mp-148s.png.html


    Bzw. Ich kann inGame einstellen wie viele Mieterslots ein haus haben kann. und da jedes Haus unterschiedlich ist, sollte auch auf dem textdraw dann die Mieterzahl entsprechend zu sehen sein mit "Niemand" Oder eben enstprechend den Mieterslots die Mieter aufgelistet.


    Ich habe die Mieterslots immer so definiert:
    HausInfo[haus][haus_slots]


    Konnte ich es einigermaßen erklären ?


    PS: Weist du warum die Textdrawbox über die Schrift so ist obwohl die Schrift über der Box stehen sollte ? Und wenn ich mit ~w~ den Text weiß haben will wird er Grau gesetzt fällt mir jetzt auf.. :wacko:

  • Dann so:
    public LoadHouseRentFinish(index[],sqlresultid,extraid,SconnectionHandle)
    {
    new lResult[128], rows, fields, string[256];
    switch(sqlresultid)
    {
    case _SQL_HOUSEMIETER_LOAD:
    {
    cache_get_data(rows, fields);
    new lCount;
    format(string, sizeof(string), "~w~");
    while(lCount < rows)
    {
    cache_get_field_content(lCount, "SPALTE MIT DEM NAMEN", lResult);
    format(string, sizeof(string), "%s%s~n~", string,lResult);
    lCount++;
    }
    for(new i = lCount; i < HausInfo[extraid][haus_slots] ; i++)
    {
    format(string, sizeof(string), "%sNiemand~n~", string);
    }
    TextDrawSetString(HausLabelTD[7], string);
    }
    }
    return 1;
    }


    Und als extraid musst du die HausID mitgeben.


    Zwecks dem Text:
    Du musst das Textdraw der Box vor dem Textdraw des Textes erstellen.

  • hab nun ein problem Ich hab mal meine Funktion ( Also die Funktion wo ich die Textdraws zu sehen bekomme) in einen Timer eingebaut jedoch, wenn ich mich einlogge dann zeigt der mir sofort den Textdraw an und ich kann nicht connecten wo könnte ich des am besten hin klatschen ?

  • Frage in dem Timer ab, ob der Spieler gespawnt ist. Setze dazu eine Variable auf 1, nachdem der Spieler gespawnt wurde (wenn er sich eingeloggt hat).
    Generell kannst du da auch abfragen, ob er eingeloggt ist, das würde ja aufs gleiche raus kommen.