Beiträge von Red_Romeo

    Ich bin mir nicht sicher, ob der GameText über dem Textdraw liegt. Allerdings könnte man notfalls einen zweiten Textdraw erstellen.


    Ich werde ebent testen ob der GameText übers Textdraw liegt.


    //edit
    Leider verschwindet das Textdraw solange ein GameText angezeigt wird. Wie aber bereits erwähnt kannst du ein zweiten Textdraw erstellen und dort deinen Text reinschreiben.

    Textdraw2

    new PlayerText:Textdraw1;

    Textdraw2
    Textdraw1 = CreatePlayerTextDraw(playerid,320.000000, 220.000000, "Text");
    PlayerTextDrawAlignment(playerid,Textdraw1, 2);
    PlayerTextDrawBackgroundColor(playerid,Textdraw1, 255);
    PlayerTextDrawFont(playerid,Textdraw1, 1);
    PlayerTextDrawLetterSize(playerid,Textdraw1, 0.500000, 1.000000);
    PlayerTextDrawColor(playerid,Textdraw1, -1);
    PlayerTextDrawSetOutline(playerid,Textdraw1, 0);
    PlayerTextDrawSetProportional(playerid,Textdraw1, 1);
    PlayerTextDrawSetShadow(playerid,Textdraw1, 1);
    PlayerTextDrawSetSelectable(playerid,Textdraw1, 0);

    Ist mit einem Textdraw machbar, allerdings sieht derjenige dann noch den Chat. Wenn du willst das man den Chat auch nicht sieht müsste man 'leere' Narichten verschicken.


    //e

    Textdraw
    new PlayerText:Textdraw0;

    Textdraw
    Textdraw0 = CreatePlayerTextDraw(playerid,642.000000, 1.000000, "_");
    PlayerTextDrawBackgroundColor(playerid,Textdraw0, 255);
    PlayerTextDrawFont(playerid,Textdraw0, 1);
    PlayerTextDrawLetterSize(playerid,Textdraw0, 0.500000, 49.599990);
    PlayerTextDrawColor(playerid,Textdraw0, -1);
    PlayerTextDrawSetOutline(playerid,Textdraw0, 0);
    PlayerTextDrawSetProportional(playerid,Textdraw0, 1);
    PlayerTextDrawSetShadow(playerid,Textdraw0, 1);
    PlayerTextDrawUseBox(playerid,Textdraw0, 1);
    PlayerTextDrawBoxColor(playerid,Textdraw0, 255);
    PlayerTextDrawTextSize(playerid,Textdraw0, -2.000000, 0.000000);
    PlayerTextDrawSetSelectable(playerid,Textdraw0, 0);

    Nutz nicht strfind sondern strcmp:


    if (strcmp("Ja", text, true) == 0)
    if (strcmp("Nein", text, true) == 0)


    //e cmdtext in text geändert :)

    1. Ich hatte diese Schleife und diese Abfrage nicht beachtet.
    for(new x = 0; x < num_rows; x++)
    if(!Dtc_PlayerHaveCar[playerid][x])


    2. "SELECT * FROM autos"
    Das wird nicht gut gehen.. das funktioniert nur solange es nur ein Besitzer in der Datenbank gibt,
    also musst du zumindest den Besitz abfragen.


    3. Wenn du die CarId nicht brauchst kannst du es auch noch ein wenig kürzer schreiben.
    Function OnPlayerBuyCar(playerid,Model,Preis,Autohaus)
    {
    if(IsPlayerConnected(playerid) && !Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]])
    {
    CallRemoteFunction("M_GivePlayerMoney","id",playerid,-Preis);
    if(Autohaus == 2) //Billig Autohaus
    {
    SBizzInfo[1][sbTill] += Preis/4; //Billig Autohaus
    }
    if(Autohaus == 3) // luxus
    {
    SBizzInfo[0][sbTill] += Preis/4; // luxus
    }
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Du hast dir ein Auto gekauft.");

    SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Gehe zu der KFZ Stelle und hole dir ein Kennzeichen.");
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Fahre vorsichtig..Und denk an die StraßenVerkehrsOrdnung!");
    SetPlayerCheckpoint(playerid, 3.0, 618.7498, -1458.5891, 14.0340);
    CreateBox(playerid,"","Route ~r~gesetzt~w~...");
    SetParkPlatz(playerid,Autohaus);
    new name[MAX_PLAYER_NAME],query[500];
    GetPlayerName(playerid, name, sizeof name);

    format(query,sizeof(query),"INSERT INTO autos (Name,CarOwner,CarModel,CarPos_x,CarPos_y,CarPos_z,CarRotate,CarPreis) VALUES ('%s','%s','%d','%f','%f','%f','%f','%d')",
    name,name,Model,PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_x],PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_y],PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_z],PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarRotate],Preis);
    mysql_function_query(dbhandle, query, false, "", "");
    format(query, sizeof(query), "SELECT * FROM autos WHERE CarOwner = '%s'",name);
    mysql_function_query(dbhandle,query,true,"OnPlayerCarLogin","i",playerid);
    }
    }

    Ich hätte da evtl. eine Lösung bin mir aber nicht sicher ob sie funktioniert.


    Function OnPlayerBuyCar(playerid,Model,Preis,Autohaus)
    {
    if(IsPlayerConnected(playerid) && !Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]])
    {
    CallRemoteFunction("M_GivePlayerMoney","id",playerid,-Preis);
    if(Autohaus == 2) //Billig Autohaus
    {
    SBizzInfo[1][sbTill] += Preis/4; //Billig Autohaus
    }
    if(Autohaus == 3) // luxus
    {
    SBizzInfo[0][sbTill] += Preis/4; // luxus
    }
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Du hast dir ein Auto gekauft.");

    SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Gehe zu der KFZ Stelle und hole dir ein Kennzeichen.");
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Fahre vorsichtig..Und denk an die StraßenVerkehrsOrdnung!");
    SetPlayerCheckpoint(playerid, 3.0, 618.7498, -1458.5891, 14.0340);
    CreateBox(playerid,"","Route ~r~gesetzt~w~...");
    SetParkPlatz(playerid,Autohaus);
    new name[MAX_PLAYER_NAME],query[500];
    GetPlayerName(playerid, name, sizeof name);

    format(query,sizeof(query),"INSERT INTO autos (Name,CarOwner,CarModel,CarPos_x,CarPos_y,CarPos_z,CarRotate,CarPreis) VALUES ('%s','%s','%d','%f','%f','%f','%f','%d')",
    name,name,Model,PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_x],PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_y],PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_z],PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarRotate],Preis);
    mysql_function_query(dbhandle, query, true, "LoadSavedCar", "i", playerid);
    }
    }
    forward LoadSavedCar(playerid);
    public LoadSavedCar(playerid){
    new query[128];
    format(query, sizeof(query), "SELECT * FROM autos WHERE CarId = '%i'", cache_insert_id(dbhandle));
    mysql_function_query(dbhandle,query,false,"OnPlayerCarLogin","i",playerid);
    return 1;
    }


    //e1 Ich habe grade gesehen das du bei PlayerCarSpawn einen Slot übergibst, dies müsstest du dann hier auch noch anpassen.
    //e2 Habe grade etwas vertauscht :/

    Da fehlt noch eine Klammer ')' zu, falls dann noch ein Fehler bekommst versuchs mal ohne sizeof.


    //e Grade gelesen das du den Klammer fehler nicht findest.. da hilft meine Antwort auch nicht x:
    Du hast die sizeof Klammer vergessen zu schließen.


    Ansonsten versuchs wie bereits erwäht ohne sizeof
    cache_get_field_content(x, "Plate", PlayerCar[playerid][x][Plate], dbhandle);

    Habe es vorhin schon oben editiert, versuch das mal, du vergasst dein Level zu laden.
    stock loadprofil(playerid)
    {
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"%s.kaffee",pname);
    SetPlayerSkin(playerid, dini_Int(accFormat,"skin"));
    GivePlayerMoney(playerid, dini_Int(accFormat,"money"));
    Spieler[playerid][exp] = dini_Int(accFormat,"exp");
    Spieler[playerid][age] = dini_Int(accFormat,"age");
    Spieler[playerid][sex] = dini_Int(accFormat,"sex");
    Spieler[playerid][fraktion] = dini_Int(accFormat,"fraktion");
    Spieler[playerid][rang] = dini_Int(accFormat,"rang");
    Spieler[playerid][alevel] = dini_Int(accFormat,"alevel");
    Spieler[playerid][lastx] = dini_Float(accFormat,"lastx");
    Spieler[playerid][lasty] = dini_Float(accFormat,"lasty");
    Spieler[playerid][lastz] = dini_Float(accFormat,"lastz");
    Spieler[playerid][level] = dini_Int(accFormat,"level");//hinzugefügt
    SetPlayerScore(playerid,Spieler[playerid][level] );//abgeändert
    Spieler[playerid][eingeloggt] = 1;//hinzugefügt
    return 1;
    }

    Könntest du dein Problem bitte nochmal erklären ? Ich fürchte ich habe es nicht ganz verstanden, denn geladen und gespeichert wird ja alles richtig.


    PS: Du könntest in die Variable 'Spieler[playerid][level]' beim laden noch ein Wert übergeben.


    //edit Wo setzt du die Variable Spieler[playerid][eingeloggt] auf 1 ? (anscheind ja nicht beim laden)

    stock loadprofil (mit Level + eingeloggt)
    stock loadprofil(playerid)
    {
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"%s.kaffee",pname);
    SetPlayerSkin(playerid, dini_Int(accFormat,"skin"));
    GivePlayerMoney(playerid, dini_Int(accFormat,"money"));
    Spieler[playerid][exp] = dini_Int(accFormat,"exp");
    Spieler[playerid][age] = dini_Int(accFormat,"age");
    Spieler[playerid][sex] = dini_Int(accFormat,"sex");
    Spieler[playerid][fraktion] = dini_Int(accFormat,"fraktion");
    Spieler[playerid][rang] = dini_Int(accFormat,"rang");
    Spieler[playerid][alevel] = dini_Int(accFormat,"alevel");
    Spieler[playerid][lastx] = dini_Float(accFormat,"lastx");
    Spieler[playerid][lasty] = dini_Float(accFormat,"lasty");
    Spieler[playerid][lastz] = dini_Float(accFormat,"lastz");
    Spieler[playerid][level] = dini_Int(accFormat,"level");//hinzugefügt
    SetPlayerScore(playerid,Spieler[playerid][level] );//abgeändert
    Spieler[playerid][eingeloggt] = 1;//hinzugefügt
    return 1;
    }

    Ehrlich gesagt finde ich da jetzt nicht direkt einen Fehler.


    Nutz mal die Stocks und poste was er Printed:


    stock loadprofil(playerid)
    {
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"%s.kaffee",pname);
    SetPlayerSkin(playerid, dini_Int(accFormat,"skin"));
    GivePlayerMoney(playerid, dini_Int(accFormat,"money"));
    Spieler[playerid][exp] = dini_Int(accFormat,"exp");
    Spieler[playerid][age] = dini_Int(accFormat,"age");
    Spieler[playerid][sex] = dini_Int(accFormat,"sex");
    Spieler[playerid][fraktion] = dini_Int(accFormat,"fraktion");
    Spieler[playerid][rang] = dini_Int(accFormat,"rang");
    Spieler[playerid][alevel] = dini_Int(accFormat,"alevel");
    Spieler[playerid][lastx] = dini_Float(accFormat,"lastx");
    Spieler[playerid][lasty] = dini_Float(accFormat,"lasty");
    Spieler[playerid][lastz] = dini_Float(accFormat,"lastz");
    SetPlayerScore(playerid,dini_Int(accFormat,"level"));
    printf("loadprofil(exp: %d, level: %d)", dini_Int(accFormat,"exp"), dini_Int(accFormat,"level"));
    return 1;
    }


    stock saveuser(playerid)
    {
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat, "%s.kaffee",pname);
    if(fexist(accFormat) && Spieler[playerid][eingeloggt])
    {
    dini_IntSet(accFormat,"level",GetPlayerScore(playerid));
    dini_IntSet(accFormat,"exp",Spieler[playerid][exp]);
    dini_IntSet(accFormat,"skin",GetPlayerSkin(playerid));
    dini_IntSet(accFormat,"money",GetPlayerMoney(playerid));
    dini_IntSet(accFormat,"age",Spieler[playerid][age]);
    dini_IntSet(accFormat,"sex",Spieler[playerid][sex]);
    dini_IntSet(accFormat,"fraktion",Spieler[playerid][fraktion]);
    dini_IntSet(accFormat,"rang",Spieler[playerid][rang]);
    dini_IntSet(accFormat,"alevel",Spieler[playerid][alevel]);
    dini_FloatSet(accFormat,"lastx",Spieler[playerid][lastx]);
    dini_FloatSet(accFormat,"lasty",Spieler[playerid][lasty]);
    dini_FloatSet(accFormat,"lastz",Spieler[playerid][lastz]);
    printf("saveuser(exp: %d, level: %d)", Spieler[playerid][exp], GetPlayerScore(playerid));
    }
    return 1;
    }

    Hier, ich habe dir einen kleinen Ansatz geschrieben.


    if (strcmp("/showreports", cmdtext, true, 12) == 0)
    {
    //Adminabfrage
    new string[128];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(playerid))continue;
    if(IsPlayerNPC(playerid))continue;
    //Spieler eingelogt abfrage
    //Abfrage ob spieler einen Report offen hat
    format(str, sizeof(str), "%s%s | %s\n", string, /*Report von*/, /*Reporttext*/);
    }
    ShowPlayerDialog(playerid, /*dialogid*/, DIALOG_STYLE_LIST, /*Überschrift*/, string, /*button1*/, /*button2*/);
    }

    Ich weiß leider nicht ganz genau was du bereits hast aber ich habe einen kleinen Denkanstoß für dich.


    new str[256];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(TutorialRace[i] != 1) continue;
    format(str, sizeof(str), "%s%s Level: %d\n", str, SpielerName(i), GetPlayerScore(i));
    }


    //e Fehler behoben, der String muss natürlich auch wieder davor geschrieben werden.