Beiträge von BlackFoX

    return = Rückgabe , da SendClientMessage beim erfolgreichen ausführen 1 bzw. true zurückgibt wird dies wiederum an die return Funktion gegeben welche dazu dient die Rückgabe der darüberliegenden Funktion zu regeln


    Test(bla)
    {
    return (bla+2);
    }


    Test2(bla)
    {
    return Test(2)+bla; // die Funktion Test wird abgerufen und ich gebe als Parameter 2 ein das würde laut Funktionsablauf da ich den Parameter addiere mit = 4 ergeben
    }



    printf("Meine Zahl ist %i",Test2(4)); // Test2 gibt die Rückgabe der Funktion Test wieder addiert mit 4 wie man sieht, meine Zahl würde hier 8 sein

    Zum Artikel, richtig so, in China stellt Foxconn die Hardware her sprich die Geräte, die Arbeitsbedingungen die dort herschen sind mehr als Unmenschlich, täglich sterben mehrere Menschen an Lungenerkrankungen dadurch das sie das heiß geliebte Aluminium der hinteren Geräteabdeckungen schleifen müssen ohne weitere Schutzmaßnahmen.


    Zum Patent Krieg, man soll sich mal ansehen was bei Samsung wieder eingestellt werden musste bzw. vom Markt entfernt werden musste,
    dann noch die Sache mit Android wo Apple den Vorwurf in den Raum stellt das dort auch das meiste gestohlen wurde.


    Fazit : Apple macht Kohle mit ihrem Markennamen und andere dürfen Praktisch nix verkaufen da ja alles immer eine Ähnlichkeit mit ihren Produkten hätte.

    Ich werde das ganze mal in mein Skript einbauen, ich habe das Skript nun aber vorerst entfernt da ich vermute noch einige Fehler gefunden zu haben.
    Ich werde das Skript spätestens Morgen wieder freigeben da ich noch einiges zu tun habe


    danke für den Vorschlag irgendwie vergesse ich solche Sachen immer :D
    kommt wohl davon wenn man länger aussetzt :wacko:

    Das könnte wirklich Probleme geben, ich werde wohl doch eine feste Länge definieren müssen eigentlich wollte ich das nicht,
    wird wohl leider nicht anders gehen.


    Ich werde das ganze in der nächsten Stunde nochmal abändern.


    Mir fiel einfach kein anderer Name ein :D



    /Edit :
    Maximale Variablen Angabe wurde nun auf 80 Variablen beschränkt, kann verändern werden wenn nötig.

    Code
    warning 202: number of arguments does not match definition


    Die Angabe deiner Argumente in der Funktion stimmen nicht mit der definierten Angabe überein


    heißt :

    deinefunktion(bla1,bla2)return (bla1+bla2);


    aber du verwendest sie so


    deinefunktion(1,2,3);


    wäre das wie du siehst ein Argument zu viel in der Angabe ;) sprich die Funktion verlangt 2 Argumente aber du gibst 3 an = Falsch

    Man kann mehrere Autos besitzen falls du darauf hinaus möchtest,
    ich werde etwas später noch ein Kommando einbauen der es erlaubt das Auto an einen anderen Spieler zu übergeben.


    * Bugfix bezüglich der Dialog Probleme *

    fällt dir etwas auf ?


    if(PlayerInfo[pHeadValue] >0)) <---------- Das ist die Zeile X(


    {


    GetPlayerName(i, name, sizeof(name));


    format(string, sizeof(string), "Person: %s ID: %d Preis: $%d", name, i, PlayerInfo[i][pHeadValue]);

    SetTimerEx ist speziell dazu da eine Funktion in einem bestimmten Zeit Interval auszufuehren und dazu Parameter zu uebergeben, Beispiel :


    Das ist deine Funktion

    public bla(zahl1,zahl2)
    {
    printf("zahlen sind %i und %i",zahl1,zahl2);
    }


    Wuerdest du einen Timer starten wollen und dazu die parameter uebergeben wollen :
    SetTimerEx("bla",1000,0,"ii",2,3);

    Genau ich gebe eine Array weiter in der Praktisch alle Namen der Variablen vorhanden sind die ich vorher eingetragen habe damit das Skript weiss welche Spielervariablen ich speichern moechte so kann der Scripter also selber bestimmen was gespeichert werden soll ohne die "include" bzw das Basis Skript zu veraendern und das durch wenig Aufwand

    Hallo Liebe Community,


    ich möchte hier eines meiner neuen Sachen vorstellen welches helfen soll ein Login/Register Skript ohne große Probleme zu integrieren,
    es muss nicht viel getan werden lediglich ein paar Sachen gesetzt und voreingestellt werden.
    Diese "Include" hat den Dialog schon integriert also muss nichts mehr getan werden, es enthält zudem Zusatz "Callback" Funktionen die signalisieren wenn der Spieler ausgeloggt wird,
    eingeloggt wird oder sich registriert.


    Features


    • Integrierter Dialog
    • einfaches Speichern und laden
    • einfaches eingliedern ins Skript ohne großen Aufwand


    Callbacks die ins eigene Skript einbezogen werden können.


    public BA_OnPlayerRegister(playername[],playerid,password[])


    - Standard Rückgabe "true" oder 1
    - wird aufgerufen sobald der Spieler sich registriert hat
    - playername[] ( enthält den Spielernamen des registrierten )
    - playerid ( ID des registrierten )
    - password[] ( Passwort des registrierten )


    public BA_OnPlayerLoad(playername[],playerid)


    - Standard Rückgabe "true" oder 1
    - wird aufgerufen sobald der Spieler die Verbindung zum Server aufnimmt und sein Account gefunden wird!
    - playername[] ( Name des geladenen )
    - playerid ( ID des geladenen )


    public BA_OnPlayerLogout(playername[],playerid)


    - Standard Rückgabe "true" oder 1
    - wird aufgerufen sobald der Spieler den Server verlässt und ausgeloggt wird.
    - playername[] ( Name desjenigen der den Server verlässt )
    - playerid ( ID desjenigen der den Server verlässt )


    public BA_OnPlayerLogin(playername[],playerid,password[])


    - Standard Rückgabe "true" oder 1
    - wird aufgerufen sobald sich der Spieler erfolgreich einloggt.
    - playername[] ( Spielername des eingeloggten )
    - playerid ( ID des eingeloggten )
    - password[] ( verwendetes Passwort des eingeloggten )



    Hier noch Funktionen die genutzt werden können.


    IsPlayerLoggedIn(playerid)


    - fragt ab ob Spieler eingeloggt ist
    - gibt je nach dem "true" oder "false" zurück



    DoPlayerAccExist(playerid)


    - fragt ab ob der Spieler Account existiert.
    - gibt je nach dem "true" oder "false" zurück



    Und hier ein Beispiel Skript wie das ganze abläuft bzw. wo was hin muss : http://pastebin.com/xYn65Dbd



    Wie funktioniert das mit meinen Variablen die gespeichert werden sollen und woher weiss das Skript was ich speichern will ?


    Es gibt eine feste Struktur in diesem System und das ist sie



    enum pVariables_Save
    {
    var_name[MAX_VAR_NAME],
    var_type,
    def_val_str[128],
    def_val_int,
    Float:def_val_float
    };


    Erklärung :

    • Name der Spieler Variable die ihr zum Speicher/Lade Prozess hinzufügen wollt
    • Der Typ dieser Variable ( Ist sie Float, String oder Integer ? ) dazu verwendet ihr bitte die Typen der SpielerVariablen ( http://wiki.sa-mp.com/wiki/PvarTypes )
    • Standardwert wenn es eine Variable vom Typ String/Text ist
    • Standardwert wenn es eine Variable vom Typ Integer/Zahl ist
    • Standardwert wenn es eine Variable vom Typ Float/Fliesskommazahl ist

    Wozu die Standardwerte ?

    diese werden lediglich bei der registrierung übernommen damit das Skript einen festen Wert übernehmen kann für neu registrierte

    Wie verwende ich diese Struktur und wie definiere ich sie ? Wozu braucht das Skript sie wenn ich die SpielerVariablen selber definieren kann ?

    1. Zuerst einmal das Skript braucht sie um zu wissen welche Spieler Variablen geladen und gespeichert werden sollen, es kann nicht hellsehen und ich auch nicht, wer es kann Glückwunsch :D
    2. Die Struktur wird ganz simpel definiert :
    new mein_name[][pVariables_Save] = {{"geld",V_INT,"",20000,0.0} , // jetzt ist diese Variable in der Struktur sprich sie soll gespeichert werden und sie heißt "geld" darin setz ich normalerweise mein Geld Status "SetPVarInt", Standardmäßig 20.000$
    {"wantedlevel",V_INT,"",0,0.0} // hier mein Wanted level ebenfalls Typ Integer und Standardmäßig 0
    };



    Wie verwende ich das nun ?


    Folgendes, ihr habt 3 wichtige Funktionen die zuerst in euer Skript müssen und genau in die selber "Callbacks" wie ihr Name es schon sagt


    BA_OnDialogResponse(playerid, dialogid, response, listitem, inputtext, <struktur>);
    BA_OnPlayerDisconnect(playerid,<struktur>);
    BA_OnPlayerConnect(playerid,<struktur>);


    <struktur> ist der Platzhalter für euren Namens Container der Variablen dort setzt ihr den Container dann auch ein damit das Skript weiss wo die Daten übernommen werden sollen sprich
    welche Spielervariablen gespeichert und geladen werden sollen.


    Beispiel :
    BA_OnPlayerConnect(playerid,mein_name);
    jetzt werden alle Spielervariablen mit den Namen von "mein_name" gespeichert und geladen



    Zu beachten bei "BA_OnPlayerDisconnect", bitte setzt eure Variablen bevor ihr dieses ausführt sonst gehen sie euch verloren sprich sie werden nicht gespeichert!


    Beispiel :
    public OnPlayerDisconnect(playerid, reason)
    {
    SetPVarInt(playerid,"spielergeld",GetPlayerMoney(playerid)); // bitte vor dem Speichern ausführen!
    BA_OnPlayerDisconnect(playerid,meine_vars); // Alles übernehmen und speichern etc...
    return 1;
    }


    Die wichtigsten Definitionen der in der INC die ihr verändern könnt
    #define LOGGED_IN "logged" // Spieler eingeloggt
    #define DO_EXIST "do_exist" // existiert der Account des Spielers ?
    #define PW_KEY "passwort" // Variable für Spieler Passwort
    #define MAX_VAR_NAME 64 // Maximale Variablen Länge
    #define PLAYER_ACC "%s.dat" // Spieler Account (Speicher / lade Pfad )
    #define MIN_PW_LEN 8 // Mindest. länge für Spieler Passwort


    #define H_LOGIN_DIAG 58 // Login Dialog
    #define H_REGISTER_DIAG 59 // Register Dialog


    #define REG_HEADER "Registrierung" // Dialog Titel für Registrierung
    #define REG_TEXT "Bitte registriere dich." // Dialog Text für Registrierung


    #define LOG_HEADER "Einloggen" // Dialog Titel für Login
    #define LOG_TEXT "Logge dich in deinen Account ein." // Dialog Text für Login



    Pastebin [Coming Soon ]


    Achtung : Es wird ein von mir entworfenes Speicherverfahren benötigt , mehr infos hier :
    http://forum.sa-mp.de/san-andr…fx-ini-system-cache-based

    ich habe es so also ich habe schon new float usw.
    und bei dem beispiel von wiki weiß ich nicht was mit Velocity{1] undso gemeint idt.


    damit ist eine Array gemeint sprich eine Variable mit vielen Speicherplätzen...


    new Float:Velocity[3]; // hat 3 Slots von 0 angefangen bis 2
    GetVehicleVelocity(vehicleid,Velocity[0],Velocity[1],Velocity[2]);


    /edit : es wird Float verlangt sprich Fliesskomazahl als Variablentyp du hast eine Integer definiert sprich eine 1 Byte Variable