Beiträge von Jeffry

    Danke für die ausführliche Erklärung!
    Das geht dann ganz einfach.


    Nach der Registrierung zeigst du dem Spieler den Dialog an, um den Werber einzutragen:
    ShowPlayerDialog(playerid, DIALOG_WERBER, DIALOG_STYLE_INPUT, "Werber eintragen", "Trage nun bitte deinen Werber ein:", "Ok", "Niemand");


    Bei OnDialogResponse:


    if(dialogid == DIALOG_WERBER)
    {
    new path[64];
    if(response)
    {
    format(path, sizeof(path), "/accounts/%s.ini", inputtext);
    if(!fexist(path))
    {
    SendClientMessage(playerid, 0xFF0000FF, "Error: User existiert nicht.");
    return ShowPlayerDialog(playerid, DIALOG_WERBER, DIALOG_STYLE_INPUT, "Werber eintragen", "Trage nun bitte deinen Werber ein:", "Ok", "Niemand");
    }
    dini_Set(path, "Werberstatus", "1");
    format(path, sizeof(path), "/accounts/%s.ini", SpielerName(playerid));
    dini_Set(path, "Werber", inputtext);
    new pID = GetIDFromName(inputtext);
    if(pID != INVALID_PLAYER_ID) SpielerInfo[pID][pWerberstatus] = 1;
    }
    else
    {
    format(path, sizeof(path), "/accounts/%s.ini", SpielerName(playerid));
    dini_Set(path, "Werber", "-Niemand-");
    }
    return 1;
    }


    Den Werberstatus lässt du beim Login ganz normal laden:
    SpielerInfo[playerid][pWerberstatus] = dini_Int(path, "Werberstatus");


    Und beim PayDay:
    if(SpielerInfo[playerid][pWerberstatus] == 1)
    {
    //Er ist Werber
    }
    else
    {
    //Er ist kein Werber
    }

    In dem Code waren noch weitaus mehr Fehler als der Syntaxfehler drin.
    1) rpstring formatiert und altgstring ausgegeben
    2) strlen Abfrage ob zwischen 8 und 32 falsch herum
    3) Eine Möglichkeit, dass gar nichts mehr passiert
    4) Unnötige if-Abfrage (doppelter Code) und zu viele Variablen


    So muss es aussehen:
    case DIALOG_REGSTEP4:
    {
    new altgstring[350];
    if(strlen(inputtext) >= 8 && strlen(inputtext) <= 32)
    {
    if(strfind(inputtext, "_", true) != -1)
    {
    format(SpielerInfo[playerid][sRPName], MAX_PLAYER_NAME, inputtext);
    mysql_SetString("accounts", "RpName", SpielerInfo[playerid][sRPName], "Name", GetName(playerid));
    format(altgstring,sizeof(altgstring),"{FFFFFF}Dein Roleplay Name ist also {007DFF}%s{FFFFFF}.\nDamit dein Account weiter vervollständigt ist, brauchen wir noch dein Geschlecht.",SpielerInfo[playerid][sRPName]);
    ShowPlayerDialog(playerid,DIALOG_REGSTEP5,DIALOG_STYLE_INPUT,"{007DFF}"SERV_NAME" | Account erstellen 5/5",altgstring,"Männlich","Weiblich");
    return 1;
    }
    }
    format(altgstring,sizeof(altgstring),"Damit dein Account weiter vervollständigt ist, brauchen wir noch dein RolePlay Namen.");
    ShowPlayerDialog(playerid,DIALOG_REGSTEP4,DIALOG_STYLE_INPUT,"{007DFF}"SERV_NAME" | Account erstellen 4/5",altgstring,"Weiter","");
    return 1;
    }

    1.)
    Poste bitte den Code vom Laden.


    2.)
    Das Fahrzeug muss neu gestreamt werden. Du kannst es dazu zum Respawn zurück setzen, oder neu erstellen. Möglicherweise klappt es auch, wenn du es kurz in eine andere virtuelle Welt linkst.

    new HausMieter[MaxHaus][30][MAX_PLAYER_NAME];
    Das muss aus dem Befehl raus, das musst du global unter den Includes deklarieren, sonst bringt es nichts.



    "Bei seinem Haus" = Nicht Mieter sondern Besitzer?
    Wenn ja, poste bitte den Befehl wie der Spieler ein Haus kauft.

    Den Name kannst du einfach mit dini_Set speichern und mit dini_Get auslesen.


    Wenn du nicht weißt wie, mache bitte ein konkretes Beispiel mit Namen und Zahlen und was wann wie passieren soll.

    @[LnD]JustMe.77: Könnte ein Fehler beim Hook sein, kann man schwer sagen ohne Code.


    @xMichael: Du musst i mit i++; hoch zählen lassen.
    Eine for Schleife ist da geschickter.
    stock getFreeFishID(playerid)
    {
    for(new i; i < 5; i++) if(pFish[playerid][Fischart][i] == 0)return i;
    return -1;
    }

    if(clickedid == News[playerid])
    {
    new string[356];
    mysql_query("SELECT `Server` FROM `news`");
    mysql_store_result();
    mysql_retrieve_row();
    mysql_fetch_field_row(string,"Server");
    format(string,sizeof(string),"{FFFFFF}%s",str);
    for(new i=0; i<strlen(string); i++) if(string[i] == '~') string[i] = '\n';
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_MSGBOX,"Neuigkeiten von SERVERNAME",string,"O.K.","");
    return 1;
    }


    In der Datenbank:

    Zitat

    Das Projekt wurde erfolgreich gestartet.~~Damit man gucken kann ob auch alles läuft, machen wir mal~einen Zeilenumbruch!

    ocmd:read(playerid, params[])
    {
    new bID;
    if(sscanf(params,"i",bID))return scm(playerid, COLOR_RED, "Benutze: /read [Brief-ID]");
    for(new x=0; x<sizeof(letterInfo); x++)
    {
    if(letterInfo[x][bempfangID] != pInfo[playerid][db_id])continue;
    if(letterInfo[x][bdb_id] != bID)continue;
    new string[512];
    format(string, sizeof(string), "Brief #%d \nInhalt:\n%s", bID, letterInfo[x][bInhalt]);
    for(new i=0; i<strlen(string); i++) if(string[i] == '~') string[i] = '\n';
    ShowPlayerDialog(playerid, 1424, DIALOG_STYLE_MSGBOX, "Brief", string, "Ok", "Abbrechen");
    return 1;
    }
    return 1;
    }

    In SendClientMessage geht ein Zeilenumbruch gar nicht.
    Außerdem kann SendClientMessage nur 145 Zeichen ausgeben, keine 999, das kannst du verkleinern.


    Du musst es in einem Dialog machen.
    Und da nutzt du nach dem format:
    for(new i=0; i<strlen(string); i++) if(string[i] == '~') string[i] = '\n';
    Dann den Dialog anzeigen.

    Du kannst die Include bearbeiten, darfst aber nur Speichern drücken, nicht kompilieren.
    Dann musst du den Gamemode kompilieren, da du dessen AMX Datei ja auch dem Server zum starten gibst.


    Include ändern => Speichern => Gamemode in dem die Include inkludiert ist kompilieren => AMX nutzen.