Beiträge von d30af26d

    Pastebin Link / File Download Link


    Vorschau:

    // Alles muss ins 'OnPlayerCommandText'-Callback
    if(!strcmp(cmdtext, "/admins"))
    {
    new numberAdmins = 0,
    numberPlayers = 0;
    for(new i = 0, j = GetMaxPlayers(); i < j; i++)
    {
    if(!IsPlayerNPC(i)) numberPlayers++;
    if(!IsPlayerConnected(i) || IsPlayerNPC(i) || !isPlayerAnAdmin(i, 1)) continue;
    else numberAdmins++;
    }
    if(!numberAdmins)
    {
    SendClientMessage(playerid, 0, "{00FF99}* Admins Online: 0");
    return 1;
    }
    else if(numberAdmins == 1 && numberPlayers == 1)
    {
    SendClientMessage(playerid, 0, "{00FF99}* Admins Online: 1");
    return 1;
    }
    else
    {
    new strResultat[256],
    strName[MAX_PLAYER_NAME],
    size = sizeof(strResultat),
    nrAdmin = 1;
    format(strResultat, size, "{00FF99}* Admins Online: %d", numberAdmins);
    SendClientMessage(playerid, 0, strResultat);
    format(strResultat, size, "{0099FF}* ");
    for(new i = 0, j = GetMaxPlayers(); i < j; i++)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i) || !isPlayerAnAdmin(i, 1)) continue;
    else
    {
    GetPlayerName(i, strName, MAX_PLAYER_NAME);
    if(nrAdmin == numberAdmins)
    format(strResultat, size, "%s%s", strResultat, strName);
    else
    format(strResultat, size, "%s%s, ", strResultat, strName);
    }
    }
    SendClientMessage(playerid, 0, strResultat);
    return 1;
    }

    Hallo Breadfish-User,
    ich darf ihnen voller Stolz ein neues System vorstellen, welches ihnen jede Menge Vorteile verschafft.
    Ich hab heute ein ganz tolles System entwickelt, welches vielen Projekten, Scriptern und Entwicklern eine Erleichterung zum Scripten werden soll.


    Wieso sollte das Scripten schwer sein? Wieso sollte man bei mehreren Scripten gleich komplette GameModes versenden mit den immer wieder kommenden Gedanken, dass der andere einfach ohne jede Spur verschwindet?


    Bei diesen Script geht es darum, dass mehrere Systeme zusammengefasst werden und das alles zu einen Filterscript.


    Aber wieso nicht einfach für jedes System ein neues Filterscript erstellen?
    Ein Grund für dieses System ist, dass man unendliche viele Systeme haben kann, bei Filterscripten nicht.
    Hier ist eine grafische Vorstellungsmöglichkeit und weitere Informationen:


    [tabmenu]


    [tab='Grafik', 'http://cdn1.iconfinder.com/data/icons/X-Mac/web_design/png/32/graphic_design.png']
    Grafik

    [tab='Vorteile', 'http://cdn5.iconfinder.com/data/icons/pixelo/32/lamp.png']
    Vorteile
    1. Eine unbegrenzte mögliche Anzahl von Systemen (bei FS'en begrenzt)
    2. Du brauchst bei den System-Dateien garnichts #include'en
    3. Selbstbestimmbare System-Priorität
    4. Einfaches bearbeiten von einen System
    5. Man muss niemals das GameMode neustarten
    6. Jedes System ist seperat zu anderen Systemen
    7. Man muss nicht bei Problemen Teile von anderen Systemen preisgeben
    8. Bei mehreren Scripten muss nicht gleich das ganze Script versendet werden
    9. Man muss nicht jedes Callback in den System-Dateien nutzen
    10. Keine Callback-Hooks nötig
    11. Einfaches hinzufügen von Systemen
    12. Einfaches Entfernen von Systemen
    13. Statistik Möglichkeit (Anzahl der Aufrufe der einzelnen Callbacks)
    14. Debug Mode
    15. Die Script-Liste wird beim Start automatisch nach Priorität geordnet
    16. Nach dem Kompillieren muss nur das Filterscript hochgeladen werden


    [tab='Download', 'http://cdn2.iconfinder.com/data/icons/crystalproject/32x32/apps/ark.png']
    [subtab='Information']
    Download
    Es gibt 2 Varianten vom System.
    Beim 'Full-EmptyServer' wird ein kompletter Serverordner geliefert ohne speziellen Gamemode und ohne spezielle Filterscripts.
    Widerrum beim 'Only-System' werden nur die benötigten Dateien gelieft, welche für das System benötigt werden.

    [subtab='Full-EmptyServer-Package']
    Full-EmptyServer-Package
    Download via MediaFire
    Download via Uploaded.to
    Download via MegaUpload



    Installation:
    1. Datei herunterladen
    2. Den Selbstentpackungsvorgang starten
    3. Serverordner anpassen (normalerweise nicht nötig)
    4. Server starten


    [subtab='Only-System-Package']
    Only-System-Package
    Download via MediaFire
    Download via Uploaded.to
    Download via MegaUpload


    Installation:
    1. Datei herunterladen
    2. Den Selbstentpackungsvorgang starten
    3. Den gesamten Inhalt in das eigene Serververzeichnis übertragen
    4. Die Datei 'server.cfg' öffnen und bei 'filterscripts' folgendes hinzufügen: '_atomwork'
    5. Server starten


    [tab='Anleitungen', 'http://cdn3.iconfinder.com/data/icons/49handdrawing/32x32/info.png']
    [subtab='System(e) hinzufügen']
    System(e) hinzufügen
    Folgende Dateien werden benötigt:
    • filterscripts/_atomwork.pwn


    Anleitung:
    1. Das Script '_atomwork.pwn' öffnen.
    2. Das System einbeziehen. (Zeile(n): 4-6)

    Code
    #include "../_atomwork/_Scripts/_Name.pwn"


    3. Zu 'gListOfScripts' gehen. Neue Zeile anlegen.

    Code
    { "Register", 3},
    { "Name", 4}


    4. Falls die Priorität höher ist als die Ursprüngliche dann (Anfang: 3)

    Code
    #define HIGHEST_PRIORITY    4


    5. Die Systemanzahl erhöhen (Anfang: 3)

    Code
    #define MAX_SCRIPTS 4


    6. Filterscript speichern und das Script Kompillieren.


    Falls Ihr noch keine System-Datei habt, dann könnt ihr sie so erstellen:
    1. Die Template-Datei aufrufen:

    Code
    samp03csvr\_atomwork\_template.pwn


    2. Oben im Dateikopf das Makro bearbeiten
    3. Dort, wo 'Name' steht, die Systembezeichnung reinschreiben von:
    /
    5. Datei speichern und in den folgenden Ordner reinstecken: '_atomwork/_Scripts/_Name.pwn'
    6. WICHTIG! Kein Kompillieren der Systemdatei (Am Ende braucht ihr nur die _atomwork.amx hochzuladen)


    Sie haben erfolgreich ein neues System hinzugefügt!
    [subtab='System(e) entfernen']
    System(e) entfernen
    Folgende Dateien werden benötigt:
    • filterscripts/_atomwork.pwn


    Anleitung:
    1. Das Script '_atomwork.pwn' öffnen.
    2. Oben im Dateikopf die #include Zeile entfernen oder auskommentieren
    #include "../_atomwork/_Name.pwn"
    3. Falls das Script die höchste Priorität hatte, die Maximale Prioritätsstufe runtersetzen

    Code
    #define HIGHEST_PRIORITY 3


    4. Die Systemanzahl verringern
    /
    5. Zu 'gListOfScripts' gehen. Die Zeile mit dem System entfernen

    Code
    { "Register", 3}, <-- Nicht vergessen dann das Komma zu entfernen
    { "Name", 4} <-- Entfernen


    6. Man kann, muss man aber nicht, das System entfernen


    Info: Es sollte kein Fehler ausgegeben werden, falls ihr temporär die Systemzeile unter 'gListOfScripts' auskommentiert. (Untested)
    Sie haben erfolgreich ein System entfernt!
    [subtab='Callback(s) hinzufügen']
    Callback(s) hinzufügen
    Es ist sehr einfach ein Eigenes Callback oder ein Callback von einen Plugin hinzuzufügen.


    Folgende Dateien werden benötigt:
    • filterscripts/_atomwork.pwn

    • _atomwork/_atomscripts.pwn


    Anleitung:
    1. Das Script '_atomwork.pwn' öffnen.
    2.
    Zu 'ENUM_SCORENAMES' gehen. Neue Zeile am Ende anlegen:

    Code
    eOnVehicleStreamIn, eOnVehicleStreamOut, eOnDialogResponse, eOnPlayerClickPlayer,meinCallback  <-- Am Ende der Auflistung kein Komma benutzen


    Jetzt müsst ihr nur noch das Callback in der _atomscripts.pwn Datei hinzufügen
    In der Datei ist bereits eine Vorlage, wie das Callback am Ende aussehen muss.

    Sie haben erfolgreich ein neues Callback hinzugefügt!
    [subtab='Callback(s) entfernen']
    Callback(s) entfernen
    Es ist sehr einfach ein Callback zu entfernen.


    Folgende Dateien werden benötigt:
    • filterscripts/_atomwork.pwn
    • _atomwork/_atomscripts.pwn

    Anleitung:
    1. Das Script '_atomwork.pwn' öffnen.
    2.
    Zu 'ENUM_SCORENAMES' gehen. Die Callback-Zeile entfernen:

    Code
    eOnVehicleStreamIn, eOnVehicleStreamOut, eOnDialogResponse, eOnPlayerClickPlayer,
    meinCallback


    Code
    eOnVehicleStreamIn, eOnVehicleStreamOut, eOnDialogResponse, eOnPlayerClickPlayer <-- Komma nicht vergessen



    Jetzt nur noch das Callback aus dem Script '_atomscripts.pwn' entfernen, falls gewünscht, und NUR das Filterscript '_atomwork.pwn' Kompillieren.

    Sie haben erfolgreich ein Callback entfernt!
    [tab='Quellcode', 'http://cdn5.iconfinder.com/data/icons/fatcow/32x32/source_code.png']
    [subtab='Filterscript']
    Filterscript
    Pastebin
    [subtab='Callback-Script']
    Callback-Script
    Pastebin
    [subtab='System-Datei-Template']
    System-Datei-Template
    Pastebin

    [tab='Videos', 'http://cdn1.iconfinder.com/data/icons/nuvola2/32x32/apps/konqsidebar_mediaplayer.png']
    [subtab='Plugins verwenden']
    [video]

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
    [/video]
    [subtab='Callback(s) hinzufügen']
    [video]
    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
    [/video]
    [subtab='Callback(s) entfernen']
    [video]
    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
    [/video]
    [subtab='System(e) hinzufügen']
    [video]
    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
    [/video]
    [subtab='System(e) entfernen']
    [video]
    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
    [/video]
    [tab='Add für v1.1', 'http://cdn2.iconfinder.com/data/icons/basicset/plus_32.png']
    Die folgende Funktion ins Script '_atomwork.pwn' einfügen und dannach das Script neukompillieren.

    new gCallbackScore[ENUM_SCORENAMES];


    forward getCallbackScore(ENUM_SCORENAMES:enum_field);
    public getCallbackScore(ENUM_SCORENAMES:enum_field)
    {
    return (gCallbackScore[enum_field]);
    }


    /* Since v1.1:
    To add a new Callback, open the _atomscripts.pwn and put there your callback.
    */


    Anwendung:

    new aufrufe_OnPlayerConnect = 0;
    aufrufe_OnPlayerConnect = CallRemoteFunction("getCallbackScore", "i", _:eOnPlayerConnect);


    Unglücklicherweise hab ich etwas dabei nicht beachtet. Ihr müsst das Script so anpassen, dass die #include Zeilen dann unter dem SCORE-Abschnitt liegen:

    /* Since v1.1:
    To add a new Callback, open the _atomscripts.pwn and put there your callback.
    */
    #endif


    #include "../_atomwork/_Scripts/_Check.pwn"
    #include "../_atomwork/_Scripts/_Login.pwn"
    #include "../_atomwork/_Scripts/_Register.pwn"

    [/tabmenu]


    Freundliche Grüße
    Martez


    Viel Spaß beim Nutzen & Entwickeln.

    Ich kenne es ebenso aus einem anderen Forum. Es ist etwas Gutes, da man sicher gehen kann, wenn man etwas Verkauft bzw. Kauft. Ich würde meiner Meinung nach Grex wählen, da dieser bereits in der Vergangheit problemlos solche Geschäfte abgehandelt hatte und es niemals Probleme gab, soweit ich weiß und denke.

    Man könnte da ein wenig mit den Tasten mitarbeiten aber ohne ein Callback wie OnElementCollision( player/vehicle/..., player/vehicle/...) geht es nur sehr schwer eine Kollision zu enttarnen
    ³dit: Tipp: Bei einer Kollision verliert das Auto "Leben". Beim Abbremsen nicht.

    Vielleicht Info über Anbindung/etc, Datenübertragung.


    Zitat

    The above functions return a string similar to the information seen in the player's F5 stats. It is the server's version of the network statistics which includes a list of things like network Packetloss, Upload/Download rates etc. This information might be useful in determining network problems for specific players, or for the entire server. If you are interested in these functions please see the netstats.pwn filterscript included with the Windows server package.