Beiträge von BlackFoX

    public SetMapIconForAll(Float:xc,Float:yc,Float:zc,type,color)
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    SetPVarInt(i,"map_count",GetPVarInt(i,"map_count")+1);
    SetPlayerMapIcon(i,GetPVarInt(i,"map_count"),Float:xc,Float:yc,Float:zc,type,color);
    }
    return GetPVarInt(i,"map_count");
    }



    Schlechte Idee @Meep


    for(new i = 0; i<MAX_PLAYERS; i++)
    SetPVarInt(i,"map_count",-1);
    {


    Da so nur SetPvarInt als Kommando erkannt wird, der Bereich danach gehört danach zu keiner Anweisung , das ergibt wiederum Fehler

    Bin mir nicht sicher ob das Skript auf den endgültigen oder den Variablen Pfad zugreift sprich wo die Adressen unter einer Maske gespeichert werden,
    aber ich meine es ist der endgültige Pfad das heißt du schmeißt das Skript in einen Ordner & greifst halt auf den endgültigen zu wie

    Code
    home\\ordnerbla\\inidateien

    public SetMapIconForAll(Float:xc,Float:yc,Float:zc,type,color)
    {
    SetPVarInt(i,"map_count",-1);
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    SetPVarInt(i,"map_count",GetPVarInt(i,"map_count")+1);
    SetPlayerMapIcon(i,tempid,Float:xc,Float:yc,Float:zc,type,color);
    }
    return GetPVarInt(i,"map_count");
    }

    new ps = strfind(inputtext," "); // Trenner finden
    if(ps!=-1)
    {
    new betrag = strval(inputtext[ps+1]); // Text vom Trenner aus +1 also leer überspringen & Betrag rausfischen
    inputtext[ps] = '\0'; // stelle hinter ps löschen
    new spielerid = strval(inputtext); // Rest = spieler
    }

    SetTimer ist generell und SetTimerEx kann auf einzelne Personen bezogen werden

    Nicht das Falsch verstanden wird, via SetTimerEx können Parameter an die jeweilige Funktion übergeben werden , je nach Datentyp der Variable die sich im Kopf der Funktion befinden,
    so müssen die Datentypen mit i,f,x,c Integer ,Float, Hex, Char übergeben werden je nach dem welchen Datentyp sie entsprechen.



    public funktest(Float:bb,integerbla)
    {
    ...
    }



    SetTimerEx("funktest","fi",3.14,5); // Übergeben von Pi und 5 an bb und integerbla in funktest

    Array Handling


    Eine genauere Erklärung von Reihenfolgen bestimmter Daten wie Zeichenfolgen ,
    Logisch aufeinander folgende Zeichen ( Wörter , Sätze ... ) , eine Verkettung von Daten,
    jede Eingabe hat ihren Platz.



    Beispiel


    new Beispiel[] = "Hallo Welt"; // Initialisierte Array


    new Beispiel[10]; // Initialisiert mit 0x00 in jedem Bereich was Leer heißt


    Beispiel = "Hallo Welt";


    Wie ihr seht haben beide Teile einen Unterschied aber bei genauerem hinsehen ist der Unterschied gar nicht
    so groß, im ersten Beispiel wurde der Wert Direkt zugewiesen, sprich die Größe wurde
    Automatisch angenommen & die Variable wurde gleich Initialisiert, was heißt,
    sie wurde einem Wert verwiesen, das zweite Beispiel hingegen muss eine feste Größe haben,
    da die Sprache nicht wissen kann wie Groß euer Inhalt werden wird & den Speicher
    der dafür gebraucht wird muss vorher Initialisiert werden.


    So kommen wir nun zum Zugriff auf die Plätze, ihr seht wir benutzen den Typ Array [] ,
    die Kombination der Operatoren steht für ein Paket mit mehreren Plätzen sprich ,
    zeigt der Variable wie ihr sicher lesen konntet das sie über mehrere Zugriffe verfügt,
    der Zugriff auf die Plätze erfolgt gleich, aber wie weiß die Sprache das ihr nicht den Speicher
    reserviert sondern zugreift ? Ganz einfach die Schlüsselwörter wie static,const,new
    geben Bescheid das der Speicher reserviert wird & nicht auf ihn Zugegriffen werden soll,
    sprich das ganze braucht immer einen Zeiger der nicht im Sinne von auf Speicher Zeigen arbeitet sondern
    der dem Code z.b. zeigt was passieren soll.


    Beispiel des Zugriffs ( Mit Variable Beispiel ) :


    Beispiel[0] = 'a'; // Enthält statt H den Buchstaben a sprich der Wert wurde verändert


    Es lassen sich ebenso Zahlen setzen


    Beispiel[0] = 1;


    oder Hex Werte , auch Binäre Werte 0b0001 z.b.


    Beispiel[0] = 0x21;


    Aber Float ließe sich nicht setzen , warum ? da die Variable erst die Struktur ,,Floating Point Value´´ haben müsste also
    auf Deutsch Komma Zahl. Aber das wisst ihr sicher schon da es bereits erklärt wurde ;)
    In jedem Zugriff lassen sich auf Spezielle Werte setzen , die kennt ihr auch schon vom Hauptthema.



    Ihr kennt bestimmt auch Mehrdimensionale Array Typen , in der Sprache Pawn begrenzt sich dies auf 3 Dimensionen,
    entweder werden alle 3 Dimensionen auf eine Struktur verwiesen oder man legt diese per Enum fest,
    die Struktur gibt auch die Maximalen Werte an die in diesem Raum enthalten werden sein dürfen.



    enum struktur
    {
    Float:kzahl,
    integerbla,
    string[32]
    }


    new multidim[][struktur] = {
    {3.14,50,"Hallo Welt"},
    {2.55,987,"Test Text"}};



    Wie ihr seht beinhaltet der Raum Nummer 1 mehrere Inhalte die sich Raum 2 nennen, jeder Raum in Raum 1 beinhaltet Werte
    nach Struktur , als erstes Float dann Zahl und dann Text, würdet ihr statt struktur nichts oder eine bestimmte Anzahl von Inhalten nehmen
    enthielten diese keinen festen Typ, sie übernehmen somit die Struktur der Variable , die auch Zahl ist,
    also können nun nur Zahlen verwendet werden, würdet ihr multidim nun auf Float setzen so würden
    nur noch Komma zahlen angenommen werden ABER kombiniert ihr Struktur mit Float würde dies einen Fehler ergeben,
    da in einer festen Struktur die ja nur Komma zahlen beinhalten darf keine weitere Übernommen werden kann
    die 3 verschiedene Strukturen enthält, da dies Sinnlos wäre, ist es unnötig das nochmal zu erwähnen,
    wer kombiniert schon was ,was komplett Falsch ist wenn es keinen Sinn ergibt, da in der Struktur eine weitere Übernommen werden
    kann , sprich sogar mehrere, in Exel würde man dies auch eine formatierte Tabelle nennen, auf dem gleichen Prinzip
    arbeitet dieses Array System, da der Speicher so weißt wie viel reserviert werden muss & der Speicher
    somit richtig & ohne bedenken zusammengesetzt werden kann.

    Beinahe so lustig wie die Leute die sich l33t's nennen.
    Aber hier das mit dem Ego Shooter geht, es gibt da ein Programm das sich FPS Maker nennt, so kann man
    mit wenigen Klicks Level & Storys dazu erstellen genau das gleiche wie diese ClickExe womit sich per
    Klick kleine Werkzeuge / Programme erstellen lassen die kaum was können xD.

    i = Integer
    j = sieht ähnlich aus


    daher sehe ich das immer als Zahlenbezeichner ;)
    Ist so eine Angewohnheit, als Programmierer oder auch Scripter sollte man alles Möglichst knapp halten ^^ , hängt aber auch mit dem Style desjenigen ab , wie
    er seinen Code Strukturiert.


    Aso und um das wiederfinden mache ich mir keine Sorgen, versteht man die Logik des Codes & der Sprache, kann man das locker zurückverfolgen ^^