Beiträge von Jeffry

    Wie hast du "fkaufmodel" deklariert?


    Füge mal vor:
    format(string,sizeof(string),"Möchtest du das Auto kaufen?\n\nModel: %i\nFahrzeug: %s\nPreis: %i$\n",fkaufmodel[vehicleid],cname,fkosten[playerid]);
    das ein:
    printf("Kaufe vehicleid %d (Model: %d)", vehicleid, fkaufmodel[vehicleid]);
    Wir das geprintet, wenn du ein Auto kaufen willst, und wenn ja, was?

    for(new i=1;i<5;i++)
    {
    new str[16];
    format(str, 16, "%d", i);


    HausInfo[i][hID] = mysql_GetInt("haeuser", "hID", "hID", str);
    if(HausInfo[i][hID] == -1) break;
    HausInfo[i][hLevel] = mysql_GetInt("haeuser", "hLevel", "hID", str);

    Kommt auf deine Schleife drauf an.
    Generell mit "break;".


    Du kannst abfragen, ob z.B. der Name des Hauses der zurückgegeben wird leer ist (strlen(name) == 0), falls ja: break;


    Wenn du nicht weißt wie, poste deine Schleife.

    Also irgendwo vermacht er dir den gespeicherten String, da musst du schauen, wo du überall GetPlayerIP nutzt.


    Oder du umgehst es so:
    if(SpielerInfo[playerid][pIP][0] < '0' || SpielerInfo[playerid][pIP][0] > '9') GetPlayerIp(playerid, SpielerInfo[playerid][pIP], 20);
    vor
    new mainQuery[2046]; in SavePlayer einfügen. Dann dürfte es auch gehen, besser wäre es natürlich den Fehler zu finden, der irgendwo im Code ist.

    Du könntest es auch direkt so machen:
    GetPlayerIp(playerid, SpielerInfo[playerid][pIP], 20);


    Aber das ist wohl nicht der Grund.
    Ich schätze eher, dass du es irgendwo nicht richtig speicherst. Poste doch mal den MySQL Log von einem solchen falschen Durchgang (einloggen => ausloggen => einloggen), dann müsste man den Fehler sehen, sofern er falsch übergeben wird.

    Testen kann ich es nicht, da das nur der halbe Code ist, aber es sollte so passen:


    Oben unter die Includes:
    #define STATS_DIALOG1 13337
    #define STATS_DIALOG2 13338
    new p_StatsTarget[MAX_PLAYERS];


    Dein /stats Befehl:
    new whostats[48];
    if (targetid == playerid) whostats = "Deine";
    else if(targetid != playerid) format(whostats, sizeof(whostats), "%s's", PlayerName(targetid));



    format(whostats, sizeof(whostats), "%s Statistiken", whostats);



    format(string, sizeof(string), "Level: %d ~ Geschlecht: %s ~ Alter: %d ~ Geld: $%d ~ Konto: $%d ~ Bank PIN: %d ~ Nummer: %d ~ Job: %s (%d)\n", plevel, gender, age, wallet, bank, bankpin, number, job, joblevel);



    format(string, sizeof(string), "%sSpielstunden: %d ~ Warnings: %d ~ Upgrade Points: %d ~ Spawn Armor: %d ~ Respekt: %d/%d ~ Straftaten: %d ~ Times Arrested: %d\n", string, hours, warns, upgradepoints, spawnhealth, exp, expamount, crimes, arrests);


    new smallstr[64];
    format(string, sizeof(string), "%sOrganization: %s ~ Rank: %s (%d) ~ Products: %d ~ Wanted Level: %d ~ \n", string, GetPlayerFactionName(targetid), GetPlayerRank(targetid), rank, prods, wantedlevel);
    #if defined COOKIE_SYSTEM
    format(smallstr, sizeof(smallstr), "Cookies: %d ~ ", cookies);
    strcat(string, smallstr);
    #endif
    #if defined GIFT_SYSTEM
    format(smallstr, sizeof(smallstr), "Gifts: %d ~ ", gifts);
    strcat(string, smallstr);
    #endif
    #if defined REWARD_SYSTEM
    format(smallstr, sizeof(smallstr), "Reward Tokens: %d ~ ", PlayerInfo[targetid][pRewardTokens]);
    strcat(string, smallstr);
    #endif
    format(smallstr, sizeof(smallstr), "Channel: %d khz\n", wtc);
    strcat(string, smallstr);


    p_StatsTarget[playerid] = targetid;
    ShowPlayerDialog(playerid, STATS_DIALOG1, DIALOG_STYLE_MSGBOX, whostats, string, "Abbr.", "Seite 2");
    }
    return 1;
    }


    Bei OnDialogResponse:
    if(dialogid == STATS_DIALOG1)
    {
    if(!response)
    {
    new targetid = p_StatsTarget[playerid];

    new whostats[48];
    if (targetid == playerid) whostats = "Deine";
    else if(targetid != playerid) format(whostats, sizeof(whostats), "%s's", PlayerName(targetid));
    format(whostats, sizeof(whostats), "%s Statistiken", whostats);


    new string[1024];
    format(string, sizeof(string), "Health: %.0f ~ Armor: %.0f ~ %s: %s ~ Cocaine: %dg ~ Weed: %dg ~ Material Packages: %d ~ Drug Packages: %d ~ Materials: %d\n", health, armor, marriage, PlayerInfo[targetid][pMarriedTo], cocaine, weed, packages, drugpackages, materials);



    format(string, sizeof(string), "%sVIP Rank: %s (%d) ~ Bills: $%d ~ Ropes: %d ~ Cigars: %d ~ Cans of Sprunk: %d ~ Spraycans: %d ~ Heroin: %dg ~ Meth: %dg\n", string, viprank, PlayerInfo[targetid][pDonateRank], bills, ropes, cigars, sprunk, spraycans, heroin, meth);



    new divisiontext[32], divisiontag[12];
    if (PlayerInfo[targetid][pDivision] == 0) divisiontext = "None", divisiontag = "N/A";
    if (PlayerInfo[targetid][pDivision] >= 1) format(divisiontext, 32, DivisionInfo[PlayerInfo[targetid][pMember]][PlayerInfo[targetid][pDivision]][divisionName]), format(divisiontag, 12, DivisionInfo[PlayerInfo[targetid][pMember]][PlayerInfo[targetid][pDivision]][divisionTag]);


    new vehicles;
    for (new i = 1; i <= MAX_OWNED_CARS; i++)
    {
    if (VehicleKeys[targetid] != 0) vehicles++;
    }


    new yesno[10];
    if (iPod[targetid] == 0) yesno = "No";
    if (iPod[targetid] == 1) yesno = "Yes";


    format(string, sizeof(string), "%sDivision: %s (%s) ~ Vehicles: %d/%d ~ iPod: %s ~ Total Wealth: $%d ~ Date Registered: %s %d, %d @ %d:%d:%d\n", string, divisiontext, divisiontag, vehicles, MAX_OWNED_CARS, yesno, wallet + bank, GetMonth(PlayerInfo[targetid][pRegisterDate][2]), PlayerInfo[targetid][pRegisterDate][1], PlayerInfo[targetid][pRegisterDate][3], PlayerInfo[targetid][pRegisterDate][4], PlayerInfo[targetid][pRegisterDate][5], PlayerInfo[targetid][pRegisterDate][6]);



    if (PlayerInfo[playerid][pAdmin] > 0) // How come this wasn't added?
    {
    format(string, sizeof(string), "%sAdmin Level: %d ~ House Keys: %d/%d ~ Garage Keys: %d/%d ~ Business Keys: %d/%d ~ Interior: %d ~ World: %d ~ Jail: %s (%d sec)", string, admin, housekey, HouseKey2[targetid], garagekey, GarageKey2[targetid], bizkey, BizKey2[targetid], interior, virtualworld, jailtype, jailtime);
    }
    ShowPlayerDialog(playerid, STATS_DIALOG2, DIALOG_STYLE_MSGBOX, whostats, string, "Seite 1", "Abbr.");
    return 1;
    }
    }


    if(dialogid == STATS_DIALOG2)
    {
    if(response)
    {
    new targetid = p_StatsTarget[playerid];

    new whostats[48];
    if (targetid == playerid) whostats = "Deine";
    else if(targetid != playerid) format(whostats, sizeof(whostats), "%s's", PlayerName(targetid));



    format(whostats, sizeof(whostats), "%s Statistiken", whostats);

    new string[1024];
    format(string, sizeof(string), "Level: %d ~ Geschlecht: %s ~ Alter: %d ~ Geld: $%d ~ Konto: $%d ~ Bank PIN: %d ~ Nummer: %d ~ Job: %s (%d)\n", plevel, gender, age, wallet, bank, bankpin, number, job, joblevel);



    format(string, sizeof(string), "%sSpielstunden: %d ~ Warnings: %d ~ Upgrade Points: %d ~ Spawn Armor: %d ~ Respekt: %d/%d ~ Straftaten: %d ~ Times Arrested: %d\n", string, hours, warns, upgradepoints, spawnhealth, exp, expamount, crimes, arrests);


    new smallstr[64];
    format(string, sizeof(string), "%sOrganization: %s ~ Rank: %s (%d) ~ Products: %d ~ Wanted Level: %d ~ \n", string, GetPlayerFactionName(targetid), GetPlayerRank(targetid), rank, prods, wantedlevel);
    #if defined COOKIE_SYSTEM
    format(smallstr, sizeof(smallstr), "Cookies: %d ~ ", cookies);
    strcat(string, smallstr);
    #endif
    #if defined GIFT_SYSTEM
    format(smallstr, sizeof(smallstr), "Gifts: %d ~ ", gifts);
    strcat(string, smallstr);
    #endif
    #if defined REWARD_SYSTEM
    format(smallstr, sizeof(smallstr), "Reward Tokens: %d ~ ", PlayerInfo[targetid][pRewardTokens]);
    strcat(string, smallstr);
    #endif
    format(smallstr, sizeof(smallstr), "Channel: %d khz\n", wtc);
    strcat(string, smallstr);


    ShowPlayerDialog(playerid, STATS_DIALOG1, DIALOG_STYLE_MSGBOX, whostats, string, "Abbr.", "Seite 2");
    }
    }

    Tutorial hab ich dir keins, aber hier:
    forward SaveLog(filename[],text[]);
    public SaveLog(filename[],text[])
    {
    new File:wFile,path[32],string[256],year,month,day,hour,minute,second;
    getdate(year,month,day);
    gettime(hour,minute,second);
    format(path,sizeof(path),"logs/%s.txt",filename);
    wFile = fopen(path,io_append);
    format(string,sizeof(string),"[%02d.%02d.%02d %02d:%02d:%02d] %s\r\n",day,month,year,hour,minute,second,text);
    fwrite(wFile,string);
    fclose(wFile);
    return 1;
    }


    Nutzung:
    format(string,sizeof(string),"%s wurde von %s gekickt. Grund: %s",Name(pID), Name(playerid), reason);
    SaveLog("KickLog", string);


    Nicht vergessen im "scriptfiles" Ordner einen "logs" Ordner zu erstellen.

    Der Code macht auch keinen Sinn. Du rufst mit FRAC_OnDialogResponse das selbe callback wieder auf. Das kann man machen, aber in dem Fall gibt es keinen Sinn, da es jedes mal sofort als erstes wieder aufgerufen wird.


    Das kannst du dir so vorstellen, wie wenn du ein Blatt Papier nimmst und auf beide Seiten "Bitte umdrehen." schreibst, das endet in einer Endlosschleife.


    forward FRAC_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
    public FRAC_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    FRAC_OnDialogResponse(playerid, dialogid, response, listitem, inputtext);

    Ruft sich sofort wieder selbst auf.


    Zeig uns doch mal dein OnDialogResponse callback, dann sehen wir vielleicht den Sinn dahinter und können es dir beheben.