Beiträge von Weed

    Wieso close? Ich meine das hier doch ne Sache vom Smalltalk. Ich denke da Zeugnisse und ferien wichtig sind wird das ja wohl ma offen bleiben danny macht das nicht dicht , aber BTT dein zeugnis wird sicher besser^^ 3.3 ist auch nicht allzu schwer zu verbessern nächste mal kommt der zweier schnitt

    Juhu wir haben endlich Sommerferien in NRW. Leute das wird mega geil. Ich war 4 Wochen weg und ihr?
    Und wie ist euer Zeugnis? Meins ist 2.0 und ich bin zufrieden damit, 2. bestes der klasse^^

    Joa aber wollte das mit include generell wissen und es ist besser als include weil es dann direkt im gm is ach kP^^ aber beim fs müsste ich glaub ich die abfrage neu rein machen
    aber das registersystem ist im gm

    Ich habe mal eine Frage, und zwar wie erstell ich ein Include?
    Ich habe ein Include gesehen, da war erst immer forward blabla und dann stock blabla
    Das versteh ich ja aber was wenn ich jetzt meine dcmd befehle in ein include packen will?
    was brauch ich da alles drin? die definitionen von dcmd und sscanf? sonst noch was?
    und könnte ich so ein include machen:
    forward kick
    stock kick
    {
    new pID;
    kick(pID);
    }
    also dass ich befehle kürze? also das ist jetzt nicht gekürzt aber so in etwa?

    fraps is iwie blöd komm damit nicht klar^^ ich empfehle xFire werden nur die videos so groß aber es klappt bestens

    Naja das ist etwas wenig^^ Lies dir paar tuts durch.
    [ SCRIPTING ] [UPDATED]Grundlagen:Spieler; Autos, Join & Leave message usw
    [ SCRIPTING ] Scriptgrundlagen+Anfänge
    [ SCRIPTING ] Grundwissen für Anfänger
    [ SCRIPTING ] SA-MP Scripting Tutorial 1 // das ist so das beste bisher für dich
    und es gibt noch so viele mehr. Lies dich einfach bisschen durch


    // edit boar war ich spät^^ aber BrighT das kann ich dir glaub ich nicht super mega klasse erklären^^ obwohl ich glaub so bissel würd ich das schaffen

    Jo danke an euch. Ich hab doch gehofft für den Normalverbraucher reichts.
    Ich muss hier an der Stelle mal sagen, mein Vorbild bei den Tuts sind Goldkillers Tuts. So versuch ich meine auch aufzubaun. Den Code posten und dann erklären. nur meine sind halt nicht halb so gut^^. Gold, respekt du hasts echt drauf.

    Joa ich finde diese Methode erlich gesagt am übersichtlichsten und einfachsten. Diese eine Zeile mehr zu schreiben wird kein Weltuntergang sein bright^^ außerdem bekommt das Script mehr Zeilen kommt besser :P
    Gold, naja warum sizeof(name/string) ??? Man hat doch vorher schon name drin GetPlayerName(playerid,name,sizeof(name));

    Moin Brotfisher,
    in diesem Tut möchte ich euch die Funktion Spielernamen bei Nachrichten zu verwenden näherbringen.
    Vorteile:
    -kommt immer besser
    -es kommen nicht immer die selben Nachrichten
    -man weiß wer was getan hat


    Also fangen wir an.
    Als erstes brauchen wir eine Variable, in der wir den Namen "speichern". Diese erstellen wir ganz einfach im CMD mit
    new Name[MAX_PLAYER_NAME];
    Name
    ist hierbei der Name der Variable
    MAX_PLAYER_NAME
    ist eine Zahl die angibt wie lang der Name maximal in SA:MP sein kann.


    Dannach brauchen wir einen String. In diesem Speichern wir die Nachricht. Den erstellen wir mit
    new string[32];
    string
    ist hierbei der Name des Strings.
    [32]
    steht für die Länge des Strings. Dieser String kann insgesamt 32 zeichen fassen. Das Fassungsvermögen bezieht sich dabei auf die gesamte Nachricht und nicht nur den Namen. 128 Zeichen ist die Maximale Anzahl pro Nachricht im SA-MP Chatfenster.
    Mehr als 32 Zeichen für einen String würde funktionieren, jedoch wäre es ab 40 unklug.
    Warum? Nun ja es ist einfach Ressourcen schonender. Hier mehr dazu
    Warum 40? Diese zahl habe ich nur gewählt da es über 32 ist und somit über der Maximalen Anzahl(manchmal nötig) aber trotzdem nicht zu viel ist.
    Mehr zu den Strings hier.



    Nun müssen wir noch irgendwie herausfinden wie den nun der Spieler heißt. Das machen wir mit
    GetPlayerName(playerid,Name,sizeof(Name));
    playerid
    steht für den ausführenden Spieler.
    Name
    steht für die Variable des Namens. Wir haben sie, wie ihr hoffentlich noch wisst, "Name" gennant.
    sizeof(Name)
    wird als "Len" im englischen Wiki angegeben. Was genau das nun heißt und was das bringt versteh ich leider nicht(Bright weiß es bestimmt). Doch Fakt ist, beim normalen gebraucht wird es so verwendet: sizeof([Name der Namensvariable]).
    Mehr dazu hier


    So nun kommen wir zur Nachricht. Diese geht so
    format(string,sizeof(string),"Moin %s",Name);
    string
    bezeichnet den verwendeten String. Bei uns heißt er wie oben erklärt String, bei mehreren Strings kann man ihn auch str nennen, dann würde dort eben format(str...) stehn.
    sizeof(string)
    ist wieder mit "Len" angegeben. Wie gesagt kann ich euch dies nicht genau erklären aber es funktoniert genauso wie bei GetPlayerName(und hier weiß sicher auch Gold oder DMA weiter)
    "Moin %d"
    ist der Text der gesendet werden soll.
    "%s",Name
    %s ist die Variable für den Namen. Dieser ist bei uns "Name". Das heißt nach der Nachricht muss die erklärung für die Variable kommen. Bei mehreren Variablen muss dies in der richtigen Reihenfolge gemach werden. Beispiel: "%s %s %s",Name,Name2,Name3. In der Nachricht wird nun nicht "%s" stehn sondern der, von uns ausgelesene, Name.
    Hier zu mehr


    So nun haben wir bereits den Namen ausgelesen und die Nachricht in einem String gespeichert. Nun muss nur noch der String "gesendet" werden, so das die Spieler ihn lesen können. Das machen wir einfach mit
    SendClientMessageToAll(ROT,string);
    ROT
    steht hier für eine Farbe die als ROT definiert sein muss
    string
    gibt an, dass der im String gespeicherte Text genommen wird. String muss ohne " da stehn.


    So und nun haben wir einen Text mit einer Namensvariable.
    Wozu kann man das verwenden?
    Die Namen kann man z.B. für Join und Leave Messages verwenden, aber auch für Kick bzw Ban(Du wurdest von %s gebannt)
    Eigentlich für alles wo man einen Namen erfahren sollte.
    Hier ein Beispiel
    dcmd_kick(playerid,paramas[])
    {
    new
    pID,
    sGrund[128];
    if(sscanf(paramas, "uz",pID,sGrund))
    {
    return SendClientMessage(playerid,ROT,"BENUTZUNG: /kick [playerid] [Grund]");
    }
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID online");
    }
    if(pInfo[playerid][Admin] >= 1)
    {
    new
    name[MAX_PLAYER_NAME],
    pname[MAX_PLAYER_NAME],
    string[128];
    GetPlayerName(pID,name,sizeof(name));
    GetPlayerName(playerid,pname,sizeof(pname));
    format(string,sizeof(string),"%s(ID: %d) wurde von %s gekickt.Grund %s",name,pID,pname,sGrund);
    SendClientMessageToAll(ROT,string);
    Kick(pID);
    LogOut(pID);
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du bist kein Admin");
    }
    return 1;
    }
    Hier haben wir sogar 3 Variablen, der Name des zu kickenden Spielers und seine ID(die muss man nicht auslesen) und den Namen des Kickers.

    dcmd_allowsavespawn(playerid,paramas[])
    {
    if(pInfo[playerid][Admin] >= 1)
    {
    new pID;
    if(sscanf(paramas, "u",pID))
    {
    return SendClientMessage(playerid,ROT,"Benutzung:/allowsavespawn [playerid]");
    }
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID online");
    }
    new
    name[MAX_PLAYER_NAME],
    pname[MAX_PLAYER_NAME],
    string[128],
    str[128];
    GetPlayerName(pID,name,sizeof(name));
    GetPlayerName(playerid,pname,sizeof(pname));
    format(string,sizeof(string),"Du hast %s(pID:%d) einen Savespawn erlaubt",name,pID);
    format(str,sizeof(str),"Dir wurde vom Admin %s einen Savespawn erlaubt bekommen, mache /savespawn ein der gewünschten Position",pname);
    SendClientMessage(playerid,GELB,string);
    SendClientMessage(pID,GELB,str);
    allowsavespawn[pID] = 1;
    }
    return 1;
    }
    Hier haben wir 2 Strings. Wie gesagt heißt der 2. String nur noch str. Das kann man endlos machen.


    Warum habe ich dieses Tut geschrieben?
    Ich möchte anderen helfen, da ich merke das viele Leute mit dieser "einfachen" Methode Probleme haben, ich hatte sie lange Zeit auch. Ich weiß, dieses Tut ist nicht perfekt. Ich weiß auch das Goldkiller,DMA und [NSG]Bright es hätten besser machen können und es schlecht finden werden und meckern werden, jedoch denke ich für den "Normal-Verbraucher"(=Leute wie ich) reicht es. Wir wissen nun WIE es geht, zwar nicht ganz genau warum aber ich denke zu wissen WIE reicht für den Normalverbraucher.


    MfG Weed