Beiträge von Firerfan

    Das Semikolon macht keinen Unterschied. Du kannst mit einem Kommar die Performance deines Scripts verbessern.
    Der Pawn-Compiler macht sozusagen "Funktionsblöcke" bis zu einem Kommar und sucht dann die nächste funktion.
    Durch ein Semikolon leitest Du automatisch den nächsten "Funktionsblock" ein, was performance kostet.


    Funktioniert aber nur mit Funktionen, genau so wie Du mehrere Variablen mit Kommars trennen kannst.
    Also z.B
    new var1, var2;
    Habs grade trotzdem mal Probeweise durch ein Semikolon ersetzt, Fehler bleibt der selbe.



    Das mit der MySQL-Variable ist klar. Es geht nur gezielt um den Include-Fehler.

    Ich geb dir am besten mal alle Dateien:


    Zusammenfassung (Laden eines einzelnden System-Bereiches, hier die Spielerdatenspeicherung)
    //==================================================================================================


    // Pointer
    forward OnPlayerAccountCheck(playerid);


    //==================================================================================================


    // Variables
    #include <..\..\gamemodes\Scripts\System\UserData\Variables\SavingLoadingVariables.pwn>

    //==================================================================================================


    // Account Functions
    #include <..\..\gamemodes\Scripts\System\UserData\Functions\CheckPlayerAccount.pwn>
    #include <..\..\gamemodes\Scripts\System\UserData\Functions\LoadPlayerAccount.pwn>


    Datei mit den Variablen:
    //==================================================================================================


    // Konstanten
    #define PUBTYPE_INT (0)
    #define PUBTYPE_BOOL (1)
    #define PUBTYPE_FLOAT (2)


    //==================================================================================================


    // UserData Storage
    enum _pUserData {
    // Statische Daten
    pID,
    pName[MAX_PLAYER_NAME],
    pPassword[129],
    pPasswordHash[17],
    //Variable Daten
    pAdminLevel,
    }
    new pUserData[MAX_PLAYERS][_pUserData];


    //==================================================================================================


    // UserData Saving System
    enum _pUserDB {
    pubFieldName[56],
    bool:pubSaved,
    pUserData:pubSavedVariable,
    pubFieldType
    }


    new pUserDB[1][_pUserDB] = {
    // Allgemeines
    {"AdminLevel", true, pAdminLevel, PUBTYPE_INT}
    };


    Und der "Callback" für den Account-Check:
    public OnPlayerAccountCheck(playerid)
    {
    new rows, fields;
    cache_get_data(rows, fields, mysql);
    if(rows) {
    GetPlayerName(playerid, pUserData[playerid][pName], MAX_PLAYER_NAME),
    cache_get_field_content(0, "Password", pUserData[playerid][pPassword], mysql, 129),
    cache_get_field_content(0, "PasswordHash", pUserData[playerid][pPasswordHash], mysql, 17),
    pUserData[playerid][playerid][pID] = cache_get_field_content_int(0, "pID"),
    ShowPlayerLoginDialog(playerid);
    }
    else {
    ShowPlayerRegisterDialog(playerid);
    }
    return 1;
    }


    Das ganze wird wie oben zu sehen in folgender Reihenfolge Inkludiert:
    Variablen & Funktionen finden sich zum vereinfachten Inkludieren in einer Datei.
    Der Callback wird als letztes Inkludiert.


    Hier auch noch mal dazu eine Veranschaulichung:
    //=====================================================================================================================
    // Inkludieren aller Systeme
    #include <..\..\gamemodes\Scripts\System\Usefull\loadSystem.pwn>
    #include <..\..\gamemodes\Scripts\System\UserData\loadSystem.pwn>
    #include <..\..\gamemodes\Scripts\System\AntiCheat\loadSystem.pwn>

    //=====================================================================================================================
    // Inkludieren aller Events
    #include <..\..\gamemodes\Scripts\Events_Game\loadGameEvents.pwn>
    #include <..\..\gamemodes\Scripts\Events_Costum\loadCostumEvents.pwn>

    //=====================================================================================================================

    obwohl alles vor dem Inkludieren der Callbacks eingebunden wird.

    Reihenfolge beim Inkludieren:
    Variablen > Funktionen > Callbacks


    Hier die Fehlermeldung(en)

    Code
    SA-MP 0.3.7 Project\pawno\include\..\..\gamemodes\Scripts\Events_Costum\playerEvents\OnPlayerAccountCheck.pwn(1) : warning 235: public function lacks forward declaration (symbol "OnPlayerAccountCheck")
    SA-MP 0.3.7 Project\pawno\include\..\..\gamemodes\Scripts\Events_Costum\playerEvents\OnPlayerAccountCheck.pwn(4) : error 017: undefined symbol "mysql"
    SA-MP 0.3.7 Project\pawno\include\..\..\gamemodes\Scripts\Events_Costum\playerEvents\OnPlayerAccountCheck.pwn(6) : error 017: undefined symbol "pUserData"
    SA-MP 0.3.7 Project\pawno\include\..\..\gamemodes\Scripts\Events_Costum\playerEvents\OnPlayerAccountCheck.pwn(6) : warning 215: expression has no effect
    SA-MP 0.3.7 Project\pawno\include\..\..\gamemodes\Scripts\Events_Costum\playerEvents\OnPlayerAccountCheck.pwn(6) : error 001: expected token: ";", but found "]"
    SA-MP 0.3.7 Project\pawno\include\..\..\gamemodes\Scripts\Events_Costum\playerEvents\OnPlayerAccountCheck.pwn(6) : error 029: invalid expression, assumed zero
    SA-MP 0.3.7 Project\pawno\include\..\..\gamemodes\Scripts\Events_Costum\playerEvents\OnPlayerAccountCheck.pwn(6) : fatal error 107: too many error messages on one line

    Unter OnDialogResponse speicherst Du den Inputtext als Integer in einer Variable:
    Die Variable muss nur global sein, am besten ein array für alle Spieler
    new array[MAX_PLAYERS];


    // In OnDialogResponse
    array[playerid] = strint(inputtext);


    Dann den nächsten Dialog anzeigen lassen und immer so weiter, bis man am Ende angekommen ist.
    Bei der Dialog-Abfrage würde ich dir noch die Funktion "IsNumeric" empfehlen, mit der du vorher checkst ob der Eingabewert wirklich eine Zahl ist.
    Sonst kommen da ganz blöde Fehler bei rum. Wegen der Funktion, einfach mal googlen ;)

    Hey leute, ich hab mal wieder ein kleines und stehe grade irgendwie auf dem Schlauch.
    Ich hab mein GameMode jetzt zu übersicht in diverse Includes aufgeteilt.
    Diese PWN-Dateien liste ich alle in einer Datei auf die ich dann in den gamemode Inkludiere.


    Beispiel: Eine dieser "Sammel-Dateien":

    //=================================================================


    // Forwards / Pointer
    forward KickPlayer(playerid);

    //=================================================================


    // Variablen
    #include <..\..\gamemodes\Scripts\System\AntiCheat\Variables\AntiCheatData.pwn>


    //=================================================================


    // Allgemeine Funktionen
    #include <..\..\gamemodes\Scripts\System\AntiCheat\Functions\KickEx.pwn>


    Diese Datei kommt Inkludiere ich anschließend in meinem GameMode.
    Jetzt hab ich aber das Problem, dass Variablen und Forwards nicht übernommen werden.
    Sprich, wenn ich das ganze wie hier gezeigt Inkludiere krieg ich nen Fehler, wenn ich versuche die in der "Variablen-Datei" erstellten Variablen in einem Callback nutzen möchte funktioniert das nicht.
    Auch die Forwards werden nicht akzeptiert, obwohl alles vor dem Inkludieren der Callbacks eingebunden wird.


    Irgendwelche Ideen?

    An dieser Stelle noch einmal einen großen Dank an alle die Teilgenommen haben. Wir konnten in der Zwischenzweit schon um die 40 Ergebnisse festhalten! Danke, dass ihr uns dabei geholfen habt, diese Zahl zu erreichen.
    Auch unsere Lehrerin ist positiv von dem ganzen Interesse überrascht und freut sich schon, die Ergebnise in den Unterricht einzubinden.
    Wir würden uns dennoch über viele weitere Teilnahmen freuen.


    Liebe grüße aus dem schönen Ruhrgebiet :)

    Danke für deine Antwort.
    Die Umfrage wurde bis zusätzlich noch in einem großen (Deutsch und Englischsprachigen) Forum gepostet, dass hier jeder kennt, ich aber mal den Namen nicht nennen möchte.
    Allein in der letzten Stunde konnten wir mehr als 10 Teilnehmer verbuchen.


    Ich möchte mich mal allen Danke sagen, die bis jetzt teilgenommen haben.
    Nicht nur dass ihr mir helft endlich meine 1 in Religion zu kassieren ( :D ), ihr helft auch unseren Unterricht Umfangreicher zu gestalten was sich auch auf die Atmosphäre und die Stimmung meiner Mitschüler auswirkt.
    Danke für euer Interesse!

    Hallo liebe Leute,
    Ich habe heute an kleines Anliegen.


    Und zwar beschäftigen wir uns in der 12. Klasse im Religionsunterricht
    mit den Themen Tod und Sterben. Alle anderen Kursteilnehmer haben in
    kleinen Gruppen zu diesen Themen (u.A. bei der Polizei, Notärzten und
    Feuerwehrmännern) Umfragen durchgeführt. Auch meine Gruppe möchte einen
    Beitrag leisten und somit haben wir uns entschlossen, eine
    Online-Umfrage durchzuführen. Wir erhoffen uns durch diese Umfrage
    vielleicht sogar Antworten aus anderen Nationen und Kulturen zu
    erhalten, weshalb wir diese zweisprachig gestaltet haben


    Eure Ansichten sind uns wichtig!
    Es ist uns aber genau so klar, dass diese Themen für vielen Menschen
    Tabuthemen sind. Gerne darüber reden oder gar persönliches von Sich für
    diese Umfrage preizugeben ist viel verlangt.
    Nichts destro trotzt würden wir uns über eure Teilnahme an der Umfrage sehr freuen.


    Für alle interessierten habe ich hier einen Link zu der (durch Google verwirklichten) Umfrage:
    http://goo.gl/forms/hkk9deE3Z9


    Auf der Seite der Umfrage könnt ihr alle weiteren Informationen und Kontaktmöglichkeiten bei ungeklärten Fragen finden.
    Zusätzlich zu der dort angegeben E-Mail Adresse könnt ihr mich auch eine PN schreiben.

    Gerade mal schnell die Objekte durchgeschaut.
    Es sind auch welche dabei, welche dann an die Cop-Skins gehängt werden können (Funkgerät z.B.)
    Also mit den Verkehrsschildern sind da ein paar echt nützliche sachen dabei.

    Code
    [11:40:16] [DEBUG] mysql_format - connection: 1, len: 2048, format: "UPDATE `samp_vehicles` SET `X`='%.4f', `Y`='%.4f', `Z`='%.4f', `Rot`='%.4f' WHERE `ID` = '%d' LIMIT 1"
    [11:40:16] [DEBUG] mysql_tquery - connection: 1, query: "UPDATE `samp_vehicles` SET `X`='1523.0480', `Y`='6.4610', `Z`='2", callback: "(null)", format: "(null)"
    [11:40:16] [DEBUG] CMySQLQuery::Execute[] - starting query execution
    [11:40:16] [DEBUG] CMySQLQuery::Execute[] - query was successfully executed within 0.241 milliseconds
    [11:40:16] [DEBUG] CMySQLQuery::Execute[] - no callback specified, skipping result saving


    Wenn ich den Query über Navicat laufen lass ändert sich überhaupt nichts


    //EDIT:
    Okay, ich hab jetzt die Spalteninformation geändert:

    Code
    `Rot`  float(12,6) NULL DEFAULT NULL ,


    So läuft er nun...

    Hey leute, ich steh langsam vor dem Nervenzusammenbruch..
    MySQL speichert meine Rotations-Float für mein Vehicle-System falsch.
    Bei allen anderen funktioniert es.


    Hier ist der Query:

    SQL
    UPDATE `samp_vehicles` SET `X`='1523.0480', `Y`='6.4610', `Z`='23.8960', `Rot`='280.1150' WHERE `ID` = '0' LIMIT 1


    Und hier der Wert der in der Datenbank ankommt:

    Code
    340,293


    Kurze Information über die Spalte:

    SQL
    `Rot`  float(12,4) NULL DEFAULT NULL ,


    Wenn noch was an Daten gebraucht wird bitte bescheid sagen.
    MfG Firerfan

    Es kann auch sein, dass ein Klammerfehler hier an allem Schuld ist.
    Guck mal ob die irgendwo vergessen hast, eine Klammer zu löschen.


    Es gibt auch Tools die das für dich machen.
    Einfach mal googlen ;)

    Hey, auf unserem (Windows)-Root will das Streamer-Plugin leider nicht laufen.
    Plugin und Include sind auf der gleichen Version (!).
    Der Server sagt folgendes (Gekürzt):


    Tach,
    Ich war gerade mit einem Freund was am Testen da ist mir was aufgefallen:
    Und zwar, wenn Ich meine Waffe Wechsle, wird dieser Waffenwechel bei meinem Freund nicht angezeigt.
    Wennich also bei mir auf dem Bildschirm von der M4 auf die Fäuste Wechsel, halte ich bei meinem Kollegen noch immer die M4 in der Hand.


    Ich habe meinen gesamten Code aus "OnPlayerUpdate" entfernt, weil Ich dachte das vielleicht ein Paket mit dem Waffenwechsel nicht gesendet werden konnte.
    Da steht jetzt nurnoch das "return 1;" drin.
    Außerdem sehe ich, wenn mein Kollege seine Waffe wechselt.


    Hat jemand eine Ahnung woran das liegen kann?