Beiträge von LaT3St

    ehm das sind die eckpunkte von der SA Map die habe ich ausm Wiki
    wegen der Funktion WorldBounds, wenn man die zurücksetzen will muss man die ja an rand setzen(is iwie logisch)


    //edit: ich habe das mal mit anderen Farben und kleiner probiert das klappt trotzdem net...

    Ich habe da mal ein Problem mit GangZonen, undzwar wird des nich angezeigt, habe es jz schon 1000mal neugemacht aber laufen tuts net...


    new nonezone;


    nonezone = GangZoneCreate(20000.0000, -20000.0000, 20000.0000, -20000.0000);


    public SetPlayerMap(playerid)
    {


    if(pMaps[playerid][Player[playerid][pShowMap]] == MAP_DO_NOT_HAVE)
    {
    GangZoneShowForPlayer(playerid, nonezone, COLOR_BLACK);
    }
    return 1;
    }

    Wir haben nun also 2 Textvariablen und eines ist der Name des Spielers der verbunden hat...
    Eigentlich ganz simpel, nun wird es aber etwas schwerer:


    format(string, sizeof string, "%s.ini", pname);


    Hier gilt wieder: Wer (vorallem Englisch) lesen kann ist klar im Vorteil, denn format heißt soviel wie
    "formulieren", in jedem Fall gilt: Alles was in Klammern geschrieben ist sind Parameter, Parameter sind wie
    Variablen sie übergeben Bestimmte Daten und Werte an eine Funktion die dann diese Werte verarbeitet und im Normalfall etwas zurückgibt,
    in diesem Fall den formulierten String(Textvariable)...
    "format" braucht mindestens 3 Parameter, die zu beschreibende Variable, die Größe der zu beschreibenden Variable und ein Text,
    zusätzlich kann man noch Parameter wie in unserem Fall den Spielernamen angeben,
    diese muss man dann in der richtigen Reihenfolge mit z.B. %s und %d im Text angeben(bei uns "%s.ini")!


    if(fexist(string))
    Endlich, unsere erste Abfrage! Mit if lässt sich sogut wie alles abfragen von gleichen Zahlen oder verschieden große Zahlen und sogar Texte!
    Was wir nun Abfragen ist ob wir den Spieler kennen, wir erinnern uns an unseren Schreibtisch! Nun gibt es ein Problem welches die logischen Denker unter euch schon entdeckt haben werden,
    wo ist der 2.te Wert? Wenn ich nur eine Funktion angebe wird als Vergleichswert 0 genommen. Das hat Vorteile und auch Nachteile, Vorteilhaft währen weniger schreibarbeit und weniger Code,
    Nachteile gibt es auch genug, z.B. unübersichtlichkeit...
    Wenn wir nun einen Wahr oder Falsch-Wert zurückbekommen haben, was sollen wir dann damit anfangen, und wie?
    Da wir ja abgefragt haben ob der Account schon vorhanden ist(wir also eine Akte in unserer Schreibtischschublade über diesen Spieler haben) brauchen wir in ja nur nach einem vorgegeben Text(einem Passwort) zu fragen...
    Dazu machen wir eine geschwungene Klammer( { } ) auf und schließen diese in der nächsten Zeile auch gleich wieder!
    Nun können wir anfangen einzutragen, zuerst soll eine Meldung ausgegeben werden:


    -Meldung
    SendClientMessage(playerid, 0xFFFFFFFF, "Hallo du bist bereits bei uns Registriert, bitte gib dein Passwort nun im Chat ein!");
    Als erstes sehen wir "playerid", diese Variable kennen wir ja bereits,
    dann wäre da dieses "0xFFFFFFFF", das ist die Farbe in der der Text angezeigt werden soll.
    In diesem Fall habe ich die Farbe Weiß gewählt,diese können wir naher wieder ändern(das wird später behandelt).


    -Kamera ändern
    Natürlich soll der Spieler ein schönes Panoramabild sehen, dafür suchen wir die Funktion "OnPlayerRequestClass".
    hier löscht ihr nun alles was in den geschwungenen Klammern steht, damit die Kamera nichtmehr versetzt wird.
    Das "return 1;" muss natürlich bleiben!


    Nun können wir das ganze schonmal testen!


    Was haben wir nun alles?
    Da wäre ein erklärendes Kommentar und ein Panorama...
    Nun benötigen wir eine Funktion die die Passworteingabe abgfragt...
    Dazu scrollen wir wieder ganz nach oben zum Spielerarray,
    da drunter tragen wir nun folgendes ein:


    new bool:pWaitForPW[MAX_PLAYERS];


    Wie ihr meinem ersten Teil entnehmen könnt, wird hier eine Tabelle(Array) erstellt welche Platz für einen Ja/Nein-Wert pro Spieler hat,
    heißt wir könnten das nun mit true oder false belegen, es ist standartmäßig auf false, was für uns so auch ok wäre.
    Nun begeben wir uns wieder zum OnPlayerConnect, dort tragen wir nun in der If-Abfrage ein das die grade eben erstellte Variable beim verbinden auf "true" gesetzt wird,
    das machen wir so:
    pWaitForPW[playerid] = true;
    Diese Zeile erklärt sich wahrscheinlich von selbst.
    Was brauchen wir dann?
    Nun jetzt brauchen wir einen Code der eine Datei ausliest und diese mit der Eingabe vergleicht,
    dazu Kopieren wir uns das geschriebene von "new string[68];" bis "format(string, sizeof string, "%s.ini", pname);", wir errinnern uns, das gibt uns den Dateinamen und die Endung der Datei.
    Das kopieren wir nun in das "OnPlayerText", das hat den Sinn das wir nun auch da Dateien abfragen können...
    Nun was soll passieren?
    Zuerst soll abgefragt werden ob der Spieler überhaupt ein PW eingeben soll, dazu wenden wir die kürzlich gelernte If-Abfrage an.
    if(pWaitForPW[playerid] == true)
    Wie voher schon, die geschwungenen Klammern nicht vergessen!


    NICHT KOMMENTIEREN, da kommt noch was!

    Hier gehts nun mit dem 2.Teil weiter,


    also wenn alles Glatt gelaufen ist müsstet ihr irgendwo in LV(eher südlich) Spawnen...
    Am besten ihr minimiert das Spiel und wendet euch wieder Pawno zu.
    Da wir ja ein RL machen ist ein Login Register unverzichtbar, daher wenden wir uns dem nun!



    Zurerst brauchen wir ein paar Daten für die Account´s, die wir ja später speichern wollen, diese schreiben wir ganz oben hin
    (unter #include :(


    enum spieler_info{ Passwort, Level, Geld, bool:Logged }



    Nun braucht das Ganze noch ein Array, welche wir unter das "enum" schreiben(Erklärung unten):


    new Spieler[MAX_PLAYERS][spieler_info];



    Was haben wir eigentlich gerade gemacht?
    Ganz einfach, ihr müsst euch Array´s wie Tabellen vorstellen, die Tabelle ist so Breit wie die maximal gleichzeitig verbundenen
    Spieler und so Hoch wie die Anzahl der Daten die wir im Enum angegeben haben,
    d.h. Jeder Spieler hat unabhängig von den anderen Spielern Zahlen, denen wir oben Bezeichnungen hinzugefügt haben, diese Zahlen sind beim Serverstart 0. Diese werden erst beim Login oder während des Spiels geändert(z.B. wenn jemand sich ein neues Level kauft).


    Wir könnten nun jede dieser Nullen auf einen beliebigen Wert ändern,
    zB.: das Level von Spieler 3 könnten wir so auf 8 ändern:


    Spieler[3][Level] = 8;


    Gut, damit haben wir die Grundlagen gelegt!
    Nun kommt ein schwerer Teil, wer das bisher nich verstanden hat wird es sehr schwer haben!


    Was wenn ein Spieler nun einmal unseren Server besucht?
    Er wird nur ein kleines Menü zur Skinwahl vorfinden, wenn er Spawn drückt landet er in LV und das jedes mal...
    Das muss sich ändern!


    Sucht nun einmal "public OnPlayerConnect(playerid)", die die in Englisch aufgepasst haben werden nun recht schnell merken was das heißen soll,
    für die anderen: "Wenn Spieler verbindet".
    Was müsste man nun als Mensch an einem Schreibtisch nachsehen?
    Natürlich, ob man den Spieler bereits kennt, und das geht so:


    Das muss über das return 1; und unter die geschwungene Klammer({).
    new string[68];


    Hier erstellen wir eine neue Variable(string = Textvariable), diese Variable können wir nun beschreiben,


    bevor wir sie beschreiben können muss aber noch eine andere Information her, der Spielername!
    Dazu müssen wir eine weitere Textvariable erstellen, diese nennen wir "pname".
    new pname[MAX_PLAYER_NAME];


    Warum eigentlich jetzt MAX_PLAYER_NAME und nicht 64?
    Weil diese Zahl gibt die Länge des Strings an, da uns hier Kye(er hat SAMP entwickelt) geholfen hat indem er die maximale Länge des Spielernamens gegeben hat,
    brauchen wir das nichtmehr anzugeben!


    Nun müssen wir die Textvariable(pname) noch beschreiben, das heißt wir brauchen eine zusätzliche Funktion(GetPlayerName).
    GetPlayerName(playerid,pname, sizeof pname);
    Hier steht 1. die SpielerID die grade eben verbunden hat, 2. die zu beschreibende Variable und 3. die Größe der Variable.

    Danke an alle, aber es geht nich ganz:




    C:\Users\User\Desktop\Reallife\gamemodes\Reallife.pwn(205) : warning 202: number of arguments does not match definition
    C:\Users\User\Desktop\Reallife\gamemodes\Reallife.pwn(205) : warning 202: number of arguments does not match definition
    C:\Users\User\Desktop\Reallife\gamemodes\Reallife.pwn(205) : warning 202: number of arguments does not match definition
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Warnings.


    Alle drei in der Attach Zeile...
    Außerdem is die Hand iwo im Koffer und der Griff is vorne dran, also falsche X,Y,Z Coords aber die werden ja als Warning erkannt...

    Also ich spiele ja mit 650kbs, geht auch hab auch nur Ping 40, kenne aber solche Laggs nicht.
    Könnte auch daran liegen das ich ne Quadcore und nhaufen anderer Performancesachen in meinem PC hab, kein Plan...


    Zu deinem vorhaben mit dem Lüfter:
    Wenn du ein Laptop hast kann ich dir das nicht empfehlen, weil daas aufmachen ist schon schwer genug aber wieder zusammenflicken is noch schwerer!
    Also wenn du kein Experte in sowas bist würde ich dir es nur empfehlen es vin jmden machen zu lassen.


    PS: Sogar mit meiner Internetverbindung kann ich ein SampServer laufen lassen, und Nova sollte nich laggen!

    Hallo Leute,


    da ich des öfteren mitbekomme wie ratlos manche Anfänger vor den GFs sitzen und kein Plan
    haben was es mit pPlayerInfo aufsich hat poste ich hier mal ein Tutorial.


    Die Vorausetzungen
    -Ihr braucht Samp Client(Samp 0.3b wird als Beispiel verwendet)
    -Durchhaltevermögen
    -nhaufen Zeit
    -Spaß am Scripten
    -allerdings KEINE Pawno Grundlagen



    Die Vorbereitungen


    Downloade von sa-mp.com erstmal den Windows Server und enpack ihn in einen Ordner deiner Wahl(am besten nicht irgendwo im Xten Unterornder sondern was schnell ereichbares). Wie du sehen kannst stellt das Serverpack ein paar Dateien und Ordner zur Verfügung, eine Datei davon ist "server.cfg", sie ist die Konfiguration des Servers, hier können Server Name, Server Port, Server Passwort, usw eingestellt werden.
    Wer ein bisschen Englisch kann wird sich schnell zurechtfinden ;), für alle anderen gibts unter der Ansicht eine Erklärung.


    1 Zeile: Das "echo Executing Server Config..." braucht euch nicht weiter zu stören, es ist mehr nur ein Kommentar als alles andere
    2 Zeile: Vorrausgesetzt du spielst im Internet kann das null bleiben(Wenn es eine Netzwerkpartie ist setz 1 statt 0)
    3 Zeile: Das Rcon Passwort, sichert das intergrierte AdminPanel darum sollte es nur den ranghösten Administratoren mitgeteilt werden!
    4 Zeile: Das ServerPasswort...
    5 Zeile: Maximal auf einmal auf den Server verbundene Spieler, bei Homeserver so wie deiner ist eine niedrige Zahl ratsam
    6 Zeile: Der Port muss bei Spielen übers Internet unbendingt in Router und Firewall freigegeben werden
    7 Zeile: Server Name(erste Spalte im Samp Client)
    8 Zeile: euer GameMode, das "GM" ist der Name eures Gamemodes, gebe einfach "RL" oder "Reallife" oder sowas an
    9 Zeile: filterscripts werden wir nach und nach ersetzen da die hier angegeben Filterscripts mit Reallife wenig zutun haben
    10 Zeile: 1 wenn der Server in der "Internet" liste angezeigt werden soll
    11 Zeile: Name, GameMode Name usw wird nur bei 1 übertragen! Also am besten lassen
    12 Zeile: Falls du ein Forum etc. hast kannst du es hier eintragen
    13 Zeile: erstmal uninterresant, es werden nur Maximalen NPCs festgelegt, das Filterscript "gl_npcs" lässt 7 verbinden weshalb du es auf 7 lassen solltest


    Du restlichen Daten brauchst du sowieso nie zu verändern.



    Scripting
    Geh nun mal auf den Ordner "pawno", Pawno ist die Entwicklungsumgebung für Samp und wird für das Scripten gebraucht,
    pawno.exe sollte bei Win Vista/7 als Administrator ausgeführt werden, beim guten alten XP ist das egal
    Nun musst du auf das DateiIcon klicken und schon erstellt Pawno ein neuen GameMode,
    dieser sollte erstmal abgespeichert werden(DiskettenIcon oben links), den Namen hast du ja bereits in der Server.cfg festgelegt, speicher das ganze dann im Ordner "gamemodes" ab. Ab jetzt nehme bitte immer F5 zum abspeichern!
    Teste jetzt bitte erstmal dein Server, dazu gehst du wie folgt vor:



    Da hast nun dein Server konfiguriert, nun kannst du das testen(einfach samp-server.exe starten und IP von wieistmeineip.de holen)


    Weiter im nächsten Teil!