Beiträge von fd849fa292a5

    Ich zeig euch, wie ihr in euren Server ein Tutorial einbauen könnt.
    Ihr braucht erst mal pTut , pSex , pOrigin
    enum pInfo
    {
    ...
    pTut,
    pOrigin,
    pSex,
    ....
    };


    Da ich leider ein MySQL Server habe, müsst ihr bei euren Server noch bei /register und OnPlayerUpdate, dies einführen.
    Man muss erst abfragen, ob der Tutorial gemacht wurde oder nicht.


    Also macht jetzt unter public OnPlayerSpawn(playerid) folgendes:
    SetPlayerSpawn(playerid);


    Diese Funktion braucht aber ein Forward, hier ist er:
    forward SetPlayerSpawn(playerid); - dieser kommt zu den anderen Forwards.


    Das fügt ihr noch oben im Script ein:
    new RegistrationStep[MAX_PLAYERS];
    new TutTime[MAX_PLAYERS];


    Jetzt ganz unten im Script fügt ihr folgendes ein:
    public SetPlayerSpawn(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pTut] == 0)
    {
    TogglePlayerControllable(playerid, 0);
    RegistrationStep[playerid] = 1;
    SendClientMessage(playerid, COLOR_YELLOW, "Willkommen auf Servername! Wir brauchen noch von dir paar Daten:");
    SendClientMessage(playerid, COLOR_LIGHTRED, "Bist du ein <Mann> oder eine <Frau> ?");
    }
    }
    }


    TogglePlayerControllable(playerid, 0); // Der Spieler wird gefreezed
    RegistrationStep[playerid] = 1; // Die Variable RegistrationStep wird auf 1 gesetzt.
    SetPlayerSpawn(playerid) // Die Funktion
    if(IsPlayerConnected(playerid)) // Prüft ob der Spieler überhaupt Online ist
    if(PlayerInfo[playerid][pTut] == 0) // Prüft ob der Spieler schon das Tutorial gemacht hat
    Wenn alles stimmt, dann sendet er die zwei Nachrichten.


    Ja, aber jetzt kommt doch das Tutorial oder? - Nein
    Erst kommt die Bestimmung, ob es ein Mann oder eine Frau ist und woher diese Person ist.


    Jetzt kommt unter public OnPlayerText(playerid, text[]) folgendes:
    {
    new tmp[256];
    if(RegistrationStep[playerid] > 0)
    {
    if(RegistrationStep[playerid] == 1)
    {
    new idx;
    tmp = strtok(text, idx);
    if((strcmp("Mann", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("Mann")))
    {
    PlayerInfo[playerid][pSex] = 1;
    SendClientMessage(playerid, COLOR_YELLOW2, "Wie ich sehe bist du ein Mann. Kannst du noch diese Frage beantworten:");
    SendClientMessage(playerid, COLOR_LIGHTRED, "Woher kommst du? ( USA / Europe / Asia )");
    RegistrationStep[playerid] = 3;
    return 0;
    }
    else if((strcmp("Frau", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("Frau")))
    {
    PlayerInfo[playerid][pSex] = 2;
    SendClientMessage(playerid, COLOR_YELLOW2, "Wie ich sehe bist du eine Frau. Kannst du noch diese Frage beantworten:");
    SendClientMessage(playerid, COLOR_LIGHTRED, "Woher kommst du? ( USA / Europe / Asia )");
    RegistrationStep[playerid] = 3;
    return 0;
    }
    else
    {
    SendClientMessage(playerid, COLOR_LIGHTRED, "Bist du ein Mann oder eine Frau ?");
    }
    return 0;
    }
    else if(RegistrationStep[playerid] == 3)
    {
    new idx;
    tmp = strtok(text, idx);
    if((strcmp("USA", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("USA")))
    {
    PlayerInfo[playerid][pOrigin] = 1;
    SendClientMessage(playerid, COLOR_YELLOW2, "Ok, du bist aus den USA.");
    SendClientMessage(playerid, COLOR_LIGHTRED, "Danke fürs Ausfüllen! Nun Startet ein Kurzes Tutorial");
    RegistrationStep[playerid] = 0;
    TutTime[playerid] = 1;
    return 0;
    }
    else if((strcmp("Europe", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("Europe")))
    {
    PlayerInfo[playerid][pOrigin] = 2;
    SendClientMessage(playerid, COLOR_YELLOW2, "Ok, du bist aus Europa.");
    SendClientMessage(playerid, COLOR_LIGHTRED, "Danke fürs Ausfüllen! Nun Startet ein Kurzes Tutorial");
    RegistrationStep[playerid] = 0;
    TutTime[playerid] = 1;
    return 0;
    }
    else if((strcmp("Asia", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("Asia")))
    {
    PlayerInfo[playerid][pOrigin] = 3;
    SendClientMessage(playerid, COLOR_YELLOW2, "Ok, du bist aus Asien.");
    SendClientMessage(playerid, COLOR_LIGHTRED, "Danke fürs Ausfüllen! Nun Startet ein Kurzes Tutorial");
    RegistrationStep[playerid] = 0;
    TutTime[playerid] = 1;
    return 0;
    }
    else
    {
    SendClientMessage(playerid, COLOR_LIGHTRED, "Woher kommst du? ( USA / Europe / Asia )");
    }
    return 0;
    }
    return 0;
    }
    return 1;
    }
    Hier wird abgefragt ob RegistrationsStep auf über 0 ist und dann prüft es ob die Variable den Wert 1 hat.
    Wenn man Mann oder Frau eingegeben hat, wird die Var auf 3 gestellt. ( Dabei wird pSex eingestellt. )
    Dannach wird abgefragt, ob die Var den Wert 3 hat, wenn ja muss das Herstammungsort gennant werden.
    Wenn alles stimmt so wird RegistrationsStep auf 0 gesetzt und TutTime auf den Wert 1 gesetzt. ( Dabei wird pOrigin eingestellt )


    Für die nächste Funktion muss sich das ganze wiederholen, also brauchen wir ein Timer:
    SetTimer("Tutorial",1000,1); // Die 1000 entsprechen 1 Sekunde
    Und noch ein Forward für den Timer:
    forward Tutorial();


    Jetzt kommt man zur der Funktion, so sieht sie aus:


    Das war Teil 1, der nächste Teil ist im nächsten Post.

    Google spuckt das aus:


    Sie ist sorry.


    Es ist ein Pudding.


    Sie ziehen.


    Es ist ein schnell zu reden.


    Es war mein Jean.


    Wir haben eine Lektion erteilen.


    "Meine Freunde" ist keine teen.


    Ich finde mein Notebook.


    Das komische Josah.


    Ich finde meine Brieftasche.

    1. GTA San Andreas Deinstallieren
    2. Eigene Dateien/GTA San Andreas User Files löschen
    3. SAMP -> Favouritenliste Exportieren
    4. SAMp deinstallieren
    5. Nochmal GTA installieren
    6. http://www.sa-mp.com -> Aktuelle SAMP Version runterladen
    7. SAMP installieren
    8. Favouriten importieren
    9. Spielen

    if (strcmp(cmd, "/ahelp", true) == 0)
    {
    if(IsPlayerAdmin(playerid))
    {
    SendClientMessage(playerid, COLOR_RED, "|_____Admin Hilfe_____|");
    Sendclientmessage(playerid, COLOR_GREEN, "/kick /ban /akill /goto");
    SendClientMessage(playerid, COLOR_GREEN, "/gethere /setskin /noon");
    SendClientMessage(playerid, COLOR_GRREN, "/healall /setlevel ");
    SendClientMessage(playerid, COLOR_RED, "__________________________");
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du Bist kein admin 0o");
    return 1;
    }
    }

    Ich habe bei meinen Selfscript diesen Fehler beim /register und /login im Spiel: (ServerCommandBox)


    Error in mysql_query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'lkwliz`) VALUES ('Bullet', Password'', '0', '0', '0', '5000', '50000', '101', '1'' at line 1


    AddPlayer:
    stock addPlayerSQL(playerid, sPassword[])
    {
    if(!ExistPlayer(playerid))
    {
    new sql[2048], sql2[1024];
    new sPlayerName[32];
    new StartKills = 0;
    new StartDeaths = 0;
    new StartAdminLevel = 0;
    new StartMoney = 5000;
    new StartBank = 50000;
    new StartSkin = 101;
    new StartLevel = 1;
    new StartTeam = 0;
    new StartLeader = 0;
    new StartMember = 0;
    new StartTut = 0;
    new StartSex = 0;
    new StartNummer = 1000000 + random(800000);
    new StartOrigin = 0;
    new StartLizenz = 0;
    GetPlayerName(playerid,sPlayerName,sizeof(sPlayerName));


    sql = "`name` , `passwort`, `kills`, `deaths` , `adminlevel` , `money`, `bank` , `skin` , `level` , `team` , `leader` , `member`, `tut`, `sex`, `nummer`, `origin`, `autoliz`, `bikeliz`, `flugliz`, `waffenliz`, `bootliz`, `angelliz, `lkwliz`";
    format(sql2, sizeof(sql2),"'%s', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d'"
    ,sPlayerName, sPassword, StartKills, StartDeaths, StartAdminLevel, StartMoney, StartBank, StartSkin, StartLevel
    ,StartTeam, StartLeader, StartMember, StartTut, StartSex, StartNummer, StartOrigin, StartLizenz, StartLizenz, StartLizenz, StartLizenz, StartLizenz, StartLizenz, StartLizenz);


    format(sql, sizeof(sql),"INSERT INTO `user` (%s) VALUES (%s);",sql, sql2);
    samp_mysql_query(sql);
    SendClientMessage(playerid, COLOR_GREEN, "** Dein Account wurde erfolgreich angelegt.**");
    SendClientMessage(playerid, COLOR_GREEN, "** Du kannst jetzt /login [Password] nutzen!**");
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Der Account ist bereits registriert");
    }
    }


    Register:
    if(strcmp(cmd, "/register", true) == 0)
    {
    tmp = strtok(cmdtext, idx);
    if(strlen(tmp) > 3)
    {
    addPlayerSQL(playerid, tmp);
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Das Passwort muss länger als 3 Zeichen sein");
    }
    return 1;
    }

    Erst soll gecheckt werden, ob das Tutorial bereits gemacht wurde:
    new Tutorial = 0;
    if(PlayerInfo[playerid][pTut] == 0) { Tutorial = 1; return PlayerTutorialTime(); }


    Jetzt sollte das Tutorial hier starten:
    public PlayerTutorialTime()

    Dabei sollte das gecheckt werden:
    if(Tutorial == 1)
    if(IsPlayerConnected)
    if(PlayerInfo[playerid][pTut] == 0)


    Dann zum Beispiel kommt erst Ein Text: SCM(playerid, COLOR_FSBLUE, "Text1")
    Aber nach einer Zeit.
    Dann ein zweiter: SCM(playerid, COLOR_FLBLUE, "Text2")
    PlayerInfo[playerid][pTut] = 1;



    Ich hoffe, dass ich nicht zu viel Kleinigkeiten haben will.

    Wenn das Tutorial starten soll, dann kommt einfach nichts, als ob i nicht immer +1 kriegt.
    Code:


    public SetPlayerUnJail()
    {
    for(new i = 0; i < 30; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(TutTime[i] >= 1)
    {
    switch (TutTime[i])
    {
    case 5:
    {
    SetPlayerCameraPos(i, 1630.4636,-1117.8540,23.9063);
    SetPlayerCameraLookAt(i, 1646.8671,-1096.3329,23.9063);
    SetPlayerPos(i, 1620.4636,-1127.8540,23.9063);
    SetPlayerInterior(i, 0);
    SendClientMessage(i, COLOR_RED, "|_____GRG-Tutorial: Erste Schritte_____|");
    SendClientMessage(i, COLOR_LIGHTBLUE, "Willkommen auf den German Roleplay Gaming Server.");
    SendClientMessage(i, COLOR_LIGHTBLUE, "Ich werde dich hier im Tutorial einweisen.");
    SendClientMessage(i, COLOR_LIGHTBLUE, "Du wirst nach dem Tutorial wissen was richtig und falsch ist.");
    SendClientMessage(i, COLOR_LIGHTBLUE, "Es folgt das Tutorial...");
    SendClientMessage(i, COLOR_LIGHTBLUE, " ");
    SetPlayerUnJail();

    }
    case 10:
    {


    SendClientMessage(i, COLOR_RED, "|_____GRG-Tutorial: Serverart_____|");
    SendClientMessage(i, COLOR_LIGHTBLUE, " ");
    SendClientMessage(i, COLOR_LIGHTBLUE, "GRG ist ein deutscher Rollenspiel Server.");
    SendClientMessage(i, COLOR_LIGHTBLUE, "Die Spielwelt ist für das Rollenspiel passend gescriptet.");
    SendClientMessage(i, COLOR_LIGHTBLUE, "In den weißen Zonen wird nicht getötet und DriveBy ist nicht erlaubt.");
    SendClientMessage(i, COLOR_LIGHTBLUE, "Wenn du dich beschweren willst, dann geh ins Forum!");
    SendClientMessage(i, COLOR_LIGHTBLUE, "(Forum Adresse: http://grg-roleplay.bplaced.de/)");
    SetPlayerUnJail();
    }
    case 20:
    {
    SetPlayerCameraPos(i, 1151.7799,-1457.1151,15.7969);
    SetPlayerCameraLookAt(i, 1121.0542,-1470.8037,15.7812);
    SetPlayerPos(i, 1620.4636,-1127.8540,23.9063);
    SetPlayerInterior(i, 0);
    ClearChatbox(i, 6);
    SendClientMessage(i, COLOR_RED, "|_____GRG-Tutorial: Anfang_____|");
    SendClientMessage(i, COLOR_LIGHTBLUE, " ");
    SendClientMessage(i, COLOR_LIGHTBLUE, "Du wirst hier anfangen, solange du kein Haus oder in einer Fraktion bist.");
    SendClientMessage(i, COLOR_LIGHTBLUE, "Du kannst dein Geld bei der Bank abheben und einzahlen.");
    SendClientMessage(i, COLOR_LIGHTBLUE, "Mit /stats kannst du deine Statistik aufrufen.");
    SendClientMessage(i, COLOR_LIGHTBLUE, "Mit /hilfe bekommst du einige Befehle vom Server eingeblendet.");
    SendClientMessage(i, COLOR_LIGHTBLUE, "Den Führerschein kannst du bei einen Fahrlehrer machen.");
    SendClientMessage(i, COLOR_LIGHTBLUE, "Du solltest dir am Anfang ein Job in der Stadthalle besorgen.");
    SetPlayerUnJail();



    }
    case 30:
    {
    ClearChatbox(i, 6);
    SendClientMessage(i, COLOR_GRAD1, "|_____GRG-Tutorial: Ende_____|");
    SendClientMessage(i, COLOR_GRAD1, "Info: Ein Auto kannst du dir im Autohaus kaufen.");
    SendClientMessage(i, COLOR_GRAD1, "Info: Du kannst dir eine Menge Sachen im 24-7 Geschäft kaufen.");
    SendClientMessage(i, COLOR_GRAD1, "Info: Eine Information über den Script kannst du mit /script abrufen.");
    SendClientMessage(i, COLOR_GRAD1, "Info: Viel Spaß in der Welt von GRG!");
    SendClientMessage(i, COLOR_GRAD1, " ");
    TutTime[i] = 0; PlayerInfo[i][pTut] = 1;
    TogglePlayerControllable(i, 1);
    SetPlayerVirtualWorld(i,0);
    SetPlayerPos(i, 1481.1937,-1764.2517,18.7958);
    SetCameraBehindPlayer(1);
    }
    }
    }
    }
    }
    }

    Ich wollte mein Spieler zu einer Fraktion schicken, aber ständig bekomme ich Fehler beim /makeleader.
    Ich habe /makeleader [ID] [FaktionsName]
    Fraktionen mit FraktionID:
    ZIVILIST = 0
    SFPD = 1
    LSPD = 2
    FBI = 3
    ARMY = 5
    FARHSCHULE = 4


    Aber immer kommt bei mir, nachm richtigen eintippen: "[GRG] Fraktionen: SFPD / LSPD / FBI / ARMY / FAHRSCHULE"
    Ich hab alles versucht.


    Code:

    if(strcmp(cmd, "/makeleader", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GREY, "[GRG:] /makeleader [SpielerID/TeilvomNamen] [FraktionsName]");
    return 1;
    }
    new level;
    level = NUMFRACTIONS;
    for(new x = 0; x < sizeof(FractionNames) && level == NUMFRACTIONS; x++)
    {
    if(strcmp(tmp, FractionNames[x], true) == 0)
    level = x;
    }


    new para1;
    para1 = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    if(level > 5 || level < 0)
    {
    SendClientMessage(playerid, COLOR_GREY, "[GRG] Fraktionen: SFPD / LSPD / FAHRSCHULE / FBI / ARMY");
    return 1;
    }
    if(PlayerInfo[playerid][pAdmin] >= 1337)
    {
    if(IsPlayerConnected(para1))
    {
    if(para1 != INVALID_PLAYER_ID)
    {
    if(PlayerInfo[para1][pTeam] > 0 || PlayerInfo[para1][pTeam] < 6)
    {
    SendClientMessage(playerid, COLOR_GREY, "[GRG] Dieser Spieler ist bereits in einer Fraktion!");
    return 1;
    }
    new giveplayer[128];
    new sendername[128];
    new string[128];
    GetPlayerName(para1, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    PlayerInfo[para1][pLeader] = level;
    format(string, sizeof(string), "[GRG] Admin %s, hat dich zu einer Fraktion geschickt.", sendername);
    SendClientMessage(para1, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "[GRG] Du hast %s Leader von einer Fraktion gemacht. (FraktionID: %d).", giveplayer,level);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    if(level == 0) { PlayerInfo[para1][pSkin] = 0; } // ZIVI
    else if(level == 1) { PlayerInfo[para1][pSkin] = 281; } // SFPD
    else if(level == 2) { PlayerInfo[para1][pSkin] = 280; } // LSPD
    else if(level == 3) { PlayerInfo[para1][pSkin] = 286; } // FBI
    else if(level == 4) { PlayerInfo[para1][pSkin] = 287; } // Army
    else if(level == 5) { PlayerInfo[para1][pSkin] = 240; } // Fahrschule
    SetPlayerSkin(para1, PlayerInfo[para1][pSkin]);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "[GRG] Du bist kein Admin");
    }
    }
    return 1;
    }



    Sonstiges:
    #define ZIVILIST 0
    #define SFPD 1
    #define LSPD 2
    #define FBI 3
    #define ARMY 4
    #define FAHRSCHULE 5


    #define NUMFRACTIONS 6
    forward IsACop(playerid);
    forward IsAFahrlehrer(playerid);


    new FractionNames[NUMFRACTIONS][30] = {
    {"ZIVILIST"}, // 0


    {"SFPD"}, // 1
    {"LSPD"}, // 2
    {"FBI"}, // 3
    {"ARMY"}, // 4
    {"FAHRSCHULE"} // 5
    };