Beiträge von Jeffry

    Naja vielleicht kommt ja in der 0.4 Version dann 4096 TextDraws?
    Wäre nicht schlecht


    Oh ja, das stimmt. Aber mach dir da mal keine falschen Hoffnungen. Ich persönlich verstehe sowieso nicht, warum man überhaupt so ein mickriges Limit macht.


    Eine wirkliche Verbesserung wäre, wenn man selbst das Limit bestimmen kann, eben auf Kosten von mehr Arbeitsspeicher, aber das sollte kein Problem sein, denn so ein SAMP Server verbraucht zwischen 100 und 500 MB, da ist noch viel Luft nach oben, mein Server hat 24 GB Arbeitsspeicher, da kommt es auf ein paar MB nicht an.
    Aber das wird wohl ein Wunsch bleiben...


    Heißt eben: Sparsam mit Textdraws umgehen.

    Du kannst ja die Textdraws auch nur dann erstellen wenn ein Spieler den Server betritt. Außerdem musst du nicht 500 Slots am Server haben, 100 werden ewig reichen.


    Generell ist das mit den Textdraws so eine Sache, die sind einfach viel zu limitiert. Da muss man einfach schauen, dass man so sparsam wie möglich damit umgeht.

    Na also, das ist doch was.
    Wenn du jetzt ein Item aus der Liste auswählst, was passiert dann? Bekommst du die Nachricht oder den Dialog angezeigt der kommen soll? Was passiert?


    Wenn nein:
    Ändere den print hier:
    printf("response = 1, listitem = %d", listitem);


    zu:
    printf("response = 1, listitem = %d, House: %d", listitem, PlayerInfo[playerid][pHouseKey]);


    Was wird dann geprintet?


    Außerdem könntest du die prints weitermachen, also zwischen jede Zeile die folgt einen print, am besten mit einer fortfolgenden Zahl. Dann den Code nochmal posten, in dem die prints sind, und den Log dazu. Vielleicht findest du das Problem so ja auch selbst.


    Nach diesem Prinzip:

    Spoiler anzeigen
    if(dialogid == Hausdialog)
    {
    printf("Hausdialog aufgerufen");
    if(response==0)
    {
    return 1;
    }
    if(response==1)
    {
    printf("response = 1, listitem = %d, House: %d", listitem, PlayerInfo[playerid][pHouseKey]);
    new i = PlayerInfo[playerid][pHouseKey];
    if(listitem==0)// Mietstatus
    {
    print("Step 1");
    if(!HouseInfo[i][hRentable])
    {
    print("Step 2");
    HouseInfo[i][hRentable] = 1;
    print("Step 3");
    UpdateHouseLabel(i);
    print("Step 4");
    //Und so weiter mit den prints.
    SendClientMessage(playerid, SPIELERROT,"Andere Spieler können sich nun dein Haus mieten!");
    SaveHouse(i);
    format(string,sizeof(string),"Mietstatus\nMiete erhöhen/ verringern\nNahrungsmittel verstauen\nAuf- & abschließen\nHaus verkaufen");
    ShowPlayerDialog(playerid,Hausdialog,DIALOG_STYLE_LIST,"Hausverwaltung",string,"Auswählen","Abbruch");
    return 1;
    }//mehr Code folgt... auch mit prints bestücken.

    Ich habe etwas weiter untern so ein Feld wo steht "Passwort: " Wie kann man das machen sodass wenn man drauf drückt dass man da etwas eintragen kann ?


    In TextDraws kannst du nichts eintragen.
    Du kannst es höchstens über ein selektierbares (TextDrawSetSelectable) TextDraw machen, und dann einen Dialog öffnen lassen.

    Am besten du suchst nach dem Preis den du ändern willst (z.B. nach 20000, wenn das Auto 20000 kostet).
    Wenn du nichts findest, steht es vielleicht in einer Datei in den Scriptfiles.


    Ansonsten kannst du auch nach "preis" oder "price" suchen.

    In pastebin war es gut, mach es von nun an in pastebin. Zum Glück war ich schnell genug um es zu kopieren.


    Ändere den Hausdialog zu:
    printf("dialogid = %d", dialogid);
    if(dialogid == Hausdialog)
    {
    printf("Hausdialog aufgerufen");
    if(response==0)
    {
    return 1;
    }
    if(response==1)
    {
    printf("response = 1, listitem = %d", listitem);
    new i = PlayerInfo[playerid][pHouseKey];
    if(listitem==0)// Mietstatus
    {
    if(!HouseInfo[i][hRentable])
    {
    HouseInfo[i][hRentable] = 1;
    UpdateHouseLabel(i);
    SendClientMessage(playerid, SPIELERROT,"Andere Spieler können sich nun dein Haus mieten!");
    SaveHouse(i);
    format(string,sizeof(string),"Mietstatus\nMiete erhöhen/ verringern\nNahrungsmittel verstauen\nAuf- & abschließen\nHaus verkaufen");
    ShowPlayerDialog(playerid,Hausdialog,DIALOG_STYLE_LIST,"Hausverwaltung",string,"Auswählen","Abbruch");
    return 1;
    }
    if(HouseInfo[i][hRentable])
    {
    HouseInfo[i][hRentable] = 0;
    UpdateHouseLabel(i);
    format(string,sizeof(string),"Mietstatus\nMiete erhöhen/ verringern\nNahrungsmittel verstauen\nAuf- & abschließen\nHaus verkaufen");
    ShowPlayerDialog(playerid,Hausdialog,DIALOG_STYLE_LIST,"Hausverwaltung",string,"Auswählen","Abbruch");
    SendClientMessage(playerid, SPIELERROT,"Andere Spieler können sich dein Haus nun nicht mehr mieten!");
    SaveHouse(i);
    return 1;
    }
    }
    if(listitem==1)// Miete erhöhen
    {
    format(string,256,"{FFFFFF}Miete ändern\nGeben Sie bitte an hoch die Miete für Ihr Haus sein soll!");
    ShowPlayerDialog(playerid,Hausdialog1,DIALOG_STYLE_INPUT,"Miete erhöhen/ verringern",string,"Auswählen","Schließen");
    return 1;
    }
    if(listitem==2)//Nahrungsmittel einlagern
    {
    if(Nahrungsmittel[playerid] == 0)
    {
    SendClientMessage(playerid,SPIELERROT,"Du hast keine Nahrungsmittel bei dir!");
    return 1;
    }
    format(str, sizeof str, "Du hast %d Nahrungsmittel im Kühlschrank verstaut!",Nahrungsmittel[playerid]);
    SendClientMessage(playerid, HELLBLAU, str);
    HouseInfo[i][hEssen]+=Nahrungsmittel[playerid];
    Nahrungsmittel[playerid]=0;
    SaveHouse(i);
    return 1;
    }
    if(listitem==3)// ab oder auf schließen
    {
    if(HouseInfo[i][hLocked])
    {
    format(string,sizeof(string),"Mietstatus\nMiete erhöhen/ verringern\nNahrungsmittel verstauen\nAuf- & abschließenn\nHaus verkaufen");
    ShowPlayerDialog(playerid,Hausdialog,DIALOG_STYLE_LIST,"Hausverwaltung",string,"Auswählen","Abbruch");
    HouseInfo[i][hLocked] = 0;
    SendClientMessage(playerid, WEIß, "{FFFFFF}Haus {51FF0D}aufgeschlossen{FFFFFF}!");
    SaveHouses();
    return 1;
    }
    else if(!HouseInfo[i][hLocked])
    {
    format(string,sizeof(string),"Mietstatus\nMiete erhöhen/ verringern\nNahrungsmittel verstauen\nAuf- & abschließen\nHaus verkaufen");
    ShowPlayerDialog(playerid,Hausdialog,DIALOG_STYLE_LIST,"Hausverwaltung",string,"Auswählen","Abbruch");
    HouseInfo[i][hLocked] = 1;
    SendClientMessage(playerid, WEIß, "{FFFFFF}Haus {FF0D0D}abgeschlossen{FFFFFF}!");
    SaveHouses();
    return 1;
    }
    }
    if(listitem==4)// ab oder auf schließen
    {
    ShowPlayerDialog(playerid, HauskasseDiag, 2, "Hauskasse", "Inhalt\nEntnehmen\nHerein legen", "Auswählen", "Beenden");
    SetPVarInt(playerid, "Hauskassehid", i);
    }
    if(listitem==5)// ab oder auf schließen
    {
    ShowPlayerDialog(playerid, HausUpgrades, 2, "Haus Upgrade", "{4EF538}4000€{FFFFFF} - Kühlschrank\n{4EF538}15000€{FFFFFF} Sicherheitstür\n{4EF538}8000€{FFFFFF} Alarmanlage", "Kaufen", "Zurück");
    }
    if(listitem==6)// Haus verkaufen
    {
    new Preis=HouseInfo[i][hPrice]*2/3;
    PlayerGiveMoney(playerid, Preis);
    HouseInfo[i][hOwned] = 0;
    HouseInfo[i][hEssen]=0;
    HouseInfo[i][hMietSlot]=0;
    format(HouseInfo[i][hOwner], MAX_PLAYER_NAME, "-");
    DestroyDynamicPickup(HouseInfo[i][hPick]);
    HouseInfo[i][hPick] = CreateDynamicPickup(1273, 1, HouseInfo[i][hEntrx], HouseInfo[i][hEntry], HouseInfo[i][hEntrz]);
    format(string,sizeof(string),"Du hast dein Haus verkauft und erhälst {0DBF19}%d€{00EBFF} wieder zurück.",Preis);
    SendClientMessage(playerid,HELLBLAU,string);
    UpdateHouseLabel(i);
    PlayerInfo[playerid][pHouseKey] = -1;
    SaveHouse(i);
    }
    }
    }


    Dann poste was im Log steht, wenn du den Dialog andrückst.

    Jetzt hast du mich sogar zitiert wie ich gesagt habe du sollst es in die PWN Tags setzen und machst es nicht?
    So kann man deinen Code nicht lesen, da Indexe mit [ i ] kursiv werden.


    Code
    [pwn]CODE HIER DAZWISCHEN[/pwn]


    Versuche es nochmal.


    Und falls alles in einer Zeile steht danach, füge deinen Code erst in Word ein, und poste ihn dann hier.

    if(strcmp(cmdtext, "/lizenzen", true) == 0 || strcmp(cmdtext, "/liz", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new Playerdatei[128];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
    new str1[500];
    new text1[20];
    new text3[20];
    new text4[20];
    new text5[20];
    new text6[20];
    new text7[20];
    new text8[20];
    if(Spieler[playerid][Autoschein]) { text1 = "bestanden"; } else { text1 = "nicht vorhanden"; }
    if(Spieler[playerid][Flugschein]) { text3 = "bestanden"; } else { text3 = "nicht vorhanden"; }
    if(Spieler[playerid][Bootschein]) { text4 = "bestanden"; } else { text4 = "nicht vorhanden"; }
    if(Spieler[playerid][Angelschein]) { text5 = "bestanden"; } else { text5 = "nicht vorhanden"; }
    if(Spieler[playerid][Waffenschein]) { text6 = "bestanden"; } else { text6 = "nicht vorhanden"; }
    if(Spieler[playerid][Bikeschein]) { text7 = "bestanden"; } else { text7 = "nicht vorhanden"; }
    if(Spieler[playerid][LKWSchein]) { text8 = "bestanden"; } else { text8 = "nicht vorhanden"; }
    format(str1, sizeof(str1), "{66FFFF}Auto-Führerschein: {FFFFFF}%s.\n{66FFFF}Fluglizenz: {FFFFFF}%s.\n{66FFFF}Segelschein: {FFFFFF}%s.\n{66FFFF}Angelschein: {FFFFFF}%s.\n{66FFFF}Waffenschein: {FFFFFF}%s.\n{66FFFF}Motorrad-Führerschein: {FFFFFF}%s.\n{66FFFF}LKW-Führerschein: {FFFFFF}%s",,text1,text3,text4,text5,text6,text7,text8);
    format(str1, sizeof(str1), "%s\n\nPunkte\n{66FFFF}Auto: {FFFFFF}%d\n{66FFFF}Motorrad: {FFFFFF}%d\n{66FFFF}LKW: {FFFFFF}%d",str1,Spieler[playerid][AutoPunkte],Spieler[playerid][BikePunkte],Spieler[playerid][LKWPunkte]);
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Deine Lizenzen",str1,"OK","");
    return 1;
    }
    return 1;
    }


    strcat musst du dar gar nicht verwenden. Du schreibst einfach str1 wieder an den Anfang der neuen format-Zeile.