Include's nutzen?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Habe mal eine allgemeine Frage an die etwas erfahrenen Scripter unter euch:
    Jedes Script das ich bis jetzt gesehen habe ist gleich aufgebaut: Zeilen und Zeilen, alles in einer einzigen PWN-Datei. 20.000 Zeilen, 40.000 Zeilen, egal wie groß das Script ist.
    In MTA sieht man sowas nicht wirklich. Dort hat jeder "Bereich" seine eigene Datei, z.B. Jobs sind aufteilt in einzelne Dateien, Dialog-Systeme, Admin-Systeme etc.
    Möglich ist es ja bei SAMP, in dem man einfach Include's schreibt, z.B. eine Include fürs Adminsystem, für Jobs, eigene Funktionen etc etc.. Währe doch viel übersichtlicher, und man müsste sich nicht mit 40.000 Zeilen rumschlagen. Im Endeffekt ists ja für den Compiler egal, und es kommt das selbe bei raus, aber bei einem Reallife-Script wo sehr viele Zeilen zustande kommen, wäre das doch gar nicht so verkehrt und man hätte mehr Übersicht und Ordnung? Warum macht das eigentlich keiner bei SAMP?, bzw.: Wie macht ihr es?

  • Wenn ich mich recht entsinne, hatten wir hier letztens einen Thread, bei dem sich rausstellte, dass Variablen nicht Dateiübergreifend sind.
    Ist für mich schonmal 1 Grund, alles in einer Datei zu schreiben.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Habs gerade mal probiert, du hast recht.. Das wusst ich bisher gar nicht. Gibts denn da keien Möglichkeit, das zu umgehen?


    //EDIT:
    Es scheint doch zu gehen, indem man einfach public anstatt new benutzt:


    //gamemode.pwn


    #include <a_samp>


    public Auto;
    public Float:Flugzeug;



    #include "eintest.inc"


    // eintest.inc


    public OnGameModeInit()
    {
    Auto = 5;
    Flugzeug = 2.0;


    return 1;
    }


    Gibt keine Errors!

  • Lassen sich in Includes denn auch Callbacks aufrufen? OnPlayerCommandText z.B.?
    Hab bisher noch nicht mit Includes gearbeitet, daher weiß ich das nicht :\


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Ja, habe OnGameModeInit in in Include ausgelagert, scheint zu gehen!


    Was jetzt aber nicht funktionierte, sind Arrays, da gibts dann nen Fehler:


    error 056: arrays, local variables and function arguments cannot be public (variable "Auto")


    Mach ich das Array als normales new, geht es, ohne Warnings/Errors. Mach ich aber die Float-Flugzeugvariable von public in new, kriege ich nur bei ihr (beim array nicht!) ein Warning:


    warning 204: symbol is assigned a value that is never used: "Flugzeug"


    Ich nutze es jedoch in der Include.


    Sehr komisch...