Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Gemeinsame Datei

  1. #1
    Avatar von Eddman
    Registriert seit
    07.04.2013
    Ort
    Bayern

    Terminal Gemeinsame Datei

    Hi, weiss jemand wie ich es realisieren kann, das ich eine einzige Datei für mehrere Projekte verwenden kann? Ich habe z.B. eine Datei <test.lua> am Pfad "addons/ForAll/test.lua", weiss aber nicht wie ich diese einbinden muss.

    Nehmen wir an ich habe zwei Scripted Entitys die beide auf diese Datei zugreifen können sollen.

    Was trage ich dann in der <init.lua> der beiden SEnt's bei AddCSLuaFile( "PFAD" ) bzw. include('PFAD') ein damit es funktioniert?

    Danke für eure Hilfe :-)
    Geändert von Eddman (20.04.2013 um 07:05 Uhr)

  2. #2
    Avatar von Eddman
    Registriert seit
    07.04.2013
    Ort
    Bayern

    Standard AW: Gemeinsame Datei

    Wenn die Datei im selbem Ordner wie die <init.lua> liegen würde, dann wäre es ja einfach AddCSLuaFile("test.lua") was schreibe ich aber wenn die Datei z.B. einen Ordner zurück liegt? AddCSLuaFile("..test.lua")

    Und wie wenn die Datei zwei Ordern zurückliegt oder ganz wo anderst liegt??

  3. #3
    Huge Sponsor Avatar von isch
    Registriert seit
    08.12.2009
    Ort
    Graz

    Standard AW: Gemeinsame Datei

    Das steht im alten Wiki beschrieben

    http://maurits.tv/data/garrysmod/wik...dexe9af-2.html

    [...]
    The file name must not include ".." - this is the special folder name to go up a folder.
    The path is relative to the addon's lua folder.
    [...]
    Du kannst also nur Dateien einbinden die sich innerhalb [...]/garrysmod/addons/[addon]/lua/ (im gleichen Addons Ordner) befinden. Wenn du die Datei öfter brauchen solltest musst du sie auch doppelt (in den jeweiligen Addons) erstellen.


    Aber ganz versteh ich dein vorhaben sowieso nicht. Aus welchem Grund musst du ein und die selbe Datei öfter includen? Wenn in der Datei z.B. eine Funktion definiert ist braucht man sie ja nur einmal includen, die Funktion ist dann (wenn nicht als local definiert) auch von wo anders aufrufbar.

    Wenn in der Datei Code steht der einfach durchlaufen werden soll, dann ist das ganze eine Funktion und sollte auch als solche definiert werden. Dann kannst du diese Funktion aufrufen und es passiert das gleiche wie wenn du die Datei includest.
    Zitat Zitat von Bier_Baron Beitrag anzeigen
    Und wer ist Garry?

  4. #4
    Avatar von Eddman
    Registriert seit
    07.04.2013
    Ort
    Bayern

    Standard AW: Gemeinsame Datei

    Hi, ich habe z.B. ein SEnt genauer gesagt eine Melone als Nahrungsmittel die der Spieler essen kann und dann HP's dazu addiert bekommt. Ich möchte aber das der Spieler nachdem er eine Einheit gegessen hat, erstmal eine Zeitspanne warten muss bis er wieder essen kann. Das habe ich schon realisiert.

    Mein nächstes Ziel ist es nun ein weiteres Nahrungsmittel zu erstellen, das sich an die selbe Regel hält. Soll also ebenfalls nur dann gegessen werden dürfen wenn die Variable Status auf "hungry" gesetzt ist.

    Nun bräuchte ich ja eine Datei wo der Nahrungsmittel Bedürfniszustand gespeichert ist, hier würde es nicht funktionieren die Datei einfach zu duplizieren, da ich ja dann für jedes verschiedene Nahrungsmittel ein "eigenes Bedürfnis" hätte.
    Wenn in der Datei z.B. eine Funktion definiert ist braucht man sie ja nur einmal includen, die Funktion ist dann (wenn nicht als local definiert) auch von wo anders aufrufbar.
    Wie kann man Funktionen includen, hast du ein Beispiel für mich? Etwa so : include("essen()") ??

  5. #5

    Standard AW: Gemeinsame Datei

    Du brauchst garnichts includen.. Schaff es einfach, dass die datei, in der die funktion die die SENT's aufrufen sollen drinn ist, als erstes zu laden (pack es in den autorun ordner..)
    Wenn da nun
    Code:
    function EatSomething( food )
      if self:IsPlayer() and self:IsAlive() then
       if food == "banana" then self:AddHealth(100) return true elseif food == "nougatbisquitbreadcrumps" then self:AddHealth(1337) return true  else return false end 
      end
    end
    (als beispiel)
    drinn steht, kannst du in jedem SENT, SWEP, Addon oder anderen Datei die funktion
    Code:
    ateIT = ply:EatSomething("banana)
    aufrufen

  6. Folgender Benutzer sagt Danke zu gamerpaddy für den nützlichen Beitrag:


  7. #6
    Avatar von Eddman
    Registriert seit
    07.04.2013
    Ort
    Bayern

    Standard AW: Gemeinsame Datei

    nice, das wusste ich nicht, heisst das also konkret das alle Funktionen aller Lua Dateien die irgendwo im Autorun Ordner liegen von überall erreichbar sind?

  8. #7

    Standard AW: Gemeinsame Datei

    Nicht nur autorun.. in jeder datei.. Hauptsache diese wird vor der datei geladen, die die funktion aufrufen willl

    Achja, und es sollte kein "local" vor der funktion stehen.

  9. #8
    Avatar von Eddman
    Registriert seit
    07.04.2013
    Ort
    Bayern

    Standard AW: Gemeinsame Datei

    Zitat Zitat von gamerpaddy Beitrag anzeigen
    Nicht nur autorun.. in jeder datei.. Hauptsache diese wird vor der datei geladen, die die funktion aufrufen willl

    Achja, und es sollte kein "local" vor der funktion stehen.
    Heisst das also das ich auf alle globalen Funktionen jederzeit zugreifen kann, wenn diese geladen sind?
    Heisst das das ich von meinem SEnt auf alle anderen globalen Funktionen aller SEnts zugreifen kann?

    Zitat Zitat von gamerpaddy Beitrag anzeigen
    Hauptsache diese wird vor der datei geladen, die die funktion aufrufen willl
    Und wie erreicht man das?

    Edit: Habe es gerade probiert..

    Beide SEnts liegen im Addon Ordner.
    addons\test1\lua\entities\test1
    addons\test2\lua\entities\test2

    Habe versucht die Funktion eat von test1 bei test2 aufzurufen und habe folgenden Fehler bekommen:

    attempt to call method 'eat' (a nil value)
    Geändert von Eddman (21.04.2013 um 08:51 Uhr)

  10. #9

    Standard AW: Gemeinsame Datei

    Um funktionen in SENTs von aussen abzurufen, musst du das Entity angeben..
    zb.
    Code:
    Entitiy(139).eat()
    (139 ist in dem moment die ENT ID, des SENT's)
    Um funktionen anderer Dateien die als erstes geladen werden abzurufen, kann man einfach die funktion im SENT aufrufen.

    Wie zb.
    (im SENT)
    Code:
    ENT:Use( ply )
        ply:giveHealth(453)
    end

    wobei in der datei, die als erstes geladen wird steht:
    Code:
    function giveHealth( h )
        if not self:IsPlayer() or not self:IsAlive() then return end
        self:SetHealth(self:GetHealth() + h)
    end

  11. #10
    Avatar von Eddman
    Registriert seit
    07.04.2013
    Ort
    Bayern

    Standard AW: Gemeinsame Datei

    ok, aber wie erreiche ich das eine Datei früher geladen wird? Du meintest vorhin es muss nicht unbedingt bei Autorun liegen
    Geändert von Eddman (21.04.2013 um 18:06 Uhr)

Ähnliche Themen

  1. .ico Datei
    Von Frostdead im Forum Digital Arts
    Antworten: 3
    Letzter Beitrag: 24.11.2009, 18:20
  2. vmf Datei signieren?
    Von hey Wolf! im Forum Mapping
    Antworten: 8
    Letzter Beitrag: 02.06.2008, 21:41
  3. Map editieren - BSP. Datei
    Von Zulrak121 im Forum Mapping
    Antworten: 8
    Letzter Beitrag: 01.04.2008, 15:23
  4. Gemeinsame G-mod Map
    Von Witcher im Forum Mapping
    Antworten: 3
    Letzter Beitrag: 15.04.2007, 11:27

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •