Beiträge von Goldkiller

    Ich hab es auch so verstanden wie AdnaN,
    new
    bool:bClassRequestBlock;

    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    if(bClassRequestBlock == true) {
    // vllt SetSpawnInfo(...)
    SpawnPlayer(playerid);
    return 0;
    }
    return 1;
    }

    Müsstest dann nur ebend über einen Timer oder sonstiges bClassRequestBlock je nachdem auf true oder false setzten.

    Das wird doch wohl kaum einer einfach so herrunter scripten, da es nicht einfach in 5Minuten fertig ist.


    Außerdem ist es ein Scriptwunsch,deswegen verschiebe Ich mal ;)

    7 + MAX_PLAYER_NAME + 3 + 128 + 1


    Okay.
    format(string, sizeof(string), "[Chat][%s]: %s", pname, text); // String formatieren
    "[Chat][" - 7
    %s wird der SpielerName sein,das maximal die Länge von MAX_PLAYER_NAME hat. ist zzT 24
    "]: " - 3
    %s ist der Chattext, der kann maximal 128 Zeichen sein
    1 für '\0', Null - Terminator.
    Macht also Insgesamt eine String-Größe von 163 ausreichend ;).


    Dennoch ist fraglich ob es ein Tutorial im eigentlichem Sinne ist :/.

    new gebenkills;
    if(sscanf(params, "d", gebenkills))
    {
    return SendClientMessage(playerid,COLOR_RED,"Benutzung: /setmode [Kills]");
    }
    else
    {
    // gebenkills = Givenkills; // falsche Reihenfolge
    Givenkills = gebenkills ; // richtig
    }

    War doch ziemlich deutlich was du machen sollst.



    new
    object_array[2];


    // Wo du die Objecte erstellen willst
    object_array[0] = CreateObject(3666, 359.63891601563, -2014.3648681641, 8.6243009567261, 0, 0, 0);
    object_array[1] = CreateObject(3666, 359.63305664063, -2015.3781738281, 8.6240301132202, 0, 0, 0);



    // Funktion zum verschieben.Solltest du dann um Parameter für X, Y, Z, Array ( und vllt auch Speed ) erweitern.
    stock MoveBlabla() {
    for(new i ; i < sizeof(object_array) ; i++) {
    MoveObject(object_array[i],0.0,0.0,-10.0,1.0);
    }
    return 1;
    }

    new File:logfile=fopen("/logs.txt", io_append); // Datei öffnen und in der Variable "logfile" speichern
    new hour, minute, second, string[800]; // Zeit Variablen und die string-Variable

    Du nimmst an, dass die Datei schon existiert.Außerdem ist 800 Zellen ziemlich viel für ein String.
    Wäre besser du prüfst noch mit einer if() - Abfrage ob logfile wirklich etwas enthält.


    format(string, sizeof(string), "[%d:%d]%s\n", hour, minute, inputtext); // String formatieren

    Ich würde dir empfehlen \r\n zu benutzten.
    \r - Legt fest das auch wirklich der Writer am Anfang der Zeile ist.
    \n - Springt in eine neue Zeile.



    new string[500], pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, sizeof(pname)); // Spielername auslesen
    format(string, sizeof(string), "[Chat][%s]: %s", pname, text); // String formatieren
    log(string); // Log-Funktion aufrufen
    Da sind 500Zellen auch viel zu viel.Der Text wird niemals länger als 7 + MAX_PLAYER_NAME + 3 + 128 + 1.


    Fazit erspar Ich mir ;).

    public changename()
    {
    new
    string[64];
    server_name++;
    if(server_name >= MAX_SERVER_NAMES) {
    server_name = 0;
    }
    format(string,sizeof(string),"hostname %s",server_names[server_name]);
    SendRconCommand(string);
    return 1;
    }


    Find Ich ja persöhnlich sehr geil :D
    if(server_name >= MAX_SERVER_NAMES-1)
    server_name = -1;
    if(server_name < MAX_SERVER_NAMES-1)
    server_name++;

    Das wird aber so nicht funktionieren,denn
    Integer != String
    new type[5]; // Ist ein String
    if(sscanf(params, "d",type)) { // Hier sagst du aber Integer
    return SendClientMessage(playerid,COLOR_LIGHTRED,"USAGE: /linie [NUMMER] SF = 1 | LV = 2 | LS = 3");
    }
    if (!strcmp(type, "1", true, 1)) // Hier vergleichst du es aber wieder als String
    {
    // was soll dann kommen wenn type = 1 ist
    }
    else if (!strcmp(type, "1t", true, 1)) // Hier vergleichst du es auch als String
    {
    // was soll dann kommen wenn type =1t ist
    }
    else
    {
    // was soll dann kommen wenn type nichts von beiden ist
    }
    }

    Ist ja super, aber du nimmst an, dass jeder auch SII benutzt.Zumindenst verwendest du die einzelnen Funktionen dieses Includes in deinen Funktionen.
    Sehr gut gescriptet sind die auch nicht unbedingt, sorry 8|


    //edit: Ich erspar dir mal lieber, deine Funktionen auseinander zu nehmen :-X

    Error: C:\Users\KKM\Desktop\samp03asvr_R8_win32\gamemodes\bRL.pwn(2260) : warning 208: function with tag result used before definition, forcing reparse
    Das Problem heisst soviel wie, du benutzt dieses Funktion die ein Tag enthalt ( Float ) bevor du dafür die Definition angegebn hast.
    Bedeutet, du könntest um es zu fixen die Funktion im Kopf deines Scriptes einfügen, so dass die Definition vorhanden ist bevor du die Funktion irgendwo im Script benutzt.

    Kann ich doch nicht wissen was du schneller scripten kannst :p.
    Wenn du sowieso ein Racescript erstellen sollst ( für einen Kunden ) ,sieht es damit:
    Float:rCP1[3],
    Float:rCP2[3],
    Float:rCP3[3],
    Float:rCP4[3],
    Float:rCP5[3],
    Float:rCP6[3],
    Float:rCP7[3],
    Float:rCP8[3],
    Float:rCP9[3],
    Float:rCP10[3],
    Float:rCP11[3],
    Float:rCP12[3],
    Float:rCP13[3],
    Float:rCP14[3],
    Float:rCP15[3],
    Float:rCP16[3],
    Float:rCP17[3],
    Float:rCP18[3],
    Float:rCP19[3],
    Float:rCP20[3],
    aber nicht sonderlich dynamisch aus,um ganz einfach weitere Rennen einzufügen.Da solltest du lieber deinem Kunden ein gutes Produkt verkaufen, das leicht zu bedienen ist.

    Wenn die Datei weg ist,ist sie nun mal weg.Am besten man macht regelmäßig Backups.Mache Server-Hoster machen regelmäßig Backups, oder frag doch bei demjenigen nach,der die Checkpointsliste erstellt hat.
    Sonst kann man da nicht viel machen.


    Float:rCP1[3],
    Float:rCP2[3],
    Float:rCP3[3],
    Float:rCP4[3],
    Float:rCP5[3],
    Float:rCP6[3],
    Float:rCP7[3],
    Float:rCP8[3],
    Float:rCP9[3],
    Float:rCP10[3],
    Float:rCP11[3],
    Float:rCP12[3],
    Float:rCP13[3],
    Float:rCP14[3],
    Float:rCP15[3],
    Float:rCP16[3],
    Float:rCP17[3],
    Float:rCP18[3],
    Float:rCP19[3],
    Float:rCP20[3],
    Krass.

    Komisch.
    Vielleicht liegt es daran,dass du die Variable nicht als Globale Variable ( über main() bspw ) definiert hast sondern lediglich local und deswegen der Fehler auftritt.
    Ich bekomme nämlich keine Fehlermeldung wenn Ich mir ein Script mit deinem Code zusammenbaue 8| .


    >> Pastebin

    Deine DCMD_REGISTER Funktion ist eindeutig Fehlerhaft :p.


    dcmd_register(playerid,params[])
    { // <-- Fehlte
    //----------------Registrieren---------------------
    if(loggedin[playerid] != 0)
    {
    SendClientMessage(playerid,COLOR_GREY,"Du bist bereits registriert.");
    return 1;
    }
    new msg[200];
    new pname[MAX_PLAYER_NAME]; // MAX_PLAYER_NAME anstatt 40
    GetPlayerName(playerid,pname,sizeof(pname));
    format(msg,sizeof(msg),"Willkommen %s.\n\nDu kannst dich jetzt registrieren.\nGib bitte dein gewünschtes Passwort\nein.",pname);
    ShowPlayerDialog(playerid, 0,DIALOG_STYLE_INPUT, "Registrierung:", msg, "Bestätigen", "Abbrechen");
    return 1;
    }
    /* Wird nicht gebraucht,führt zu Fehlern
    return 1;
    }
    */


    if(loggedin(playerid) != 0)
    loggedin ist ein Array,keine Funktion.Daher kann es nicht mit ( ) sein ;)