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

Thema: Verfügbarkeit von Variablen

  1. #1

    Standard Verfügbarkeit von Variablen

    Guten Tag auch!

    Ich habe endlich GMod und habe mich augenblicklich an die Arbeit gemacht und angefangen, mich in LUA für GarrysMod einzuarbeiten.
    Läuft alles wunderbar, sieht man von einem kleinen Problem ab, dass ich momentan habe:
    Die Verfügbarkeit der Variablen.

    Es ist folgendermaßen:
    Ich schreibe momenten an einem SEnt. Ich definiere in der init.lua Eigenschaften für das SEnt. Diese möchte ich dann unter anderem in der cl_init.lua verwenden. Die Werte sind dort allerdings nicht vorhanden. (print() spuckt Nil)


    Noch ein wenig Code, damit das ganze erichtlicher wird. (Auf das Minimum begrenzt, versteht sich.)


    Init.lua
    Lua Code:
    1. AddCSLuaFile( "cl_init.lua" ) // Make sure clientside
    2.  AddCSLuaFile( "shared.lua" ) // and shared scripts are sent.
    3.  
    4.   include('shared.lua')
    5.  
    6.   function ENT:Initialize()
    7.  
    8.    self.Entity:SetModel( "models/ce_miningmodels/mininglasers/laser_mk1_standard.mdl" )
    9.  
    10.    self.Length=200 // In diesem Fall Konstant, wird aber eigentlich errechnet.
    11.  
    12.   end

    cl_init.lua
    Lua Code:
    1. include('shared.lua')
    2.  
    3. local Laser = Material( "cable/redlaser" ) 
    4.  
    5.  
    6.   function ENT:Draw()
    7.     //self.BaseClass.Draw(self) -- We want to override rendering, so don't call baseclass.
    8.  
    9.    self.Entity:DrawModel()
    10.  
    11.       local Vector1 = self.Entity:LocalToWorld( Vector( 0, 0, 0 ) )
    12.       local Vector2 = self.Entity:LocalToWorld( Vector( 0, 0, self-length ) )
    13.  
    14.       render.SetMaterial( Laser )
    15.       render.DrawBeam( Vector1, Vector2, 5, 0, 0, Color( 255, 255, 255, 255 ) )
    16.  
    17.       print(self.Length)
    18.  
    19.  end


    (Ich gestehe, der DrawBeam() ist aufs schändlichste aus der Wiki kopiert, aber für Testzwecke reicht es allemal =) )


    print(self.Length) schreibt mir, wie erwähnt Nil in die Konsole...


    PS: Bitte nicht hauen, ich habe gestern Angefangen"
    Geändert von makkurona (16.10.2008 um 16:49 Uhr)

  2. #2

    Standard AW: Verfügbarkeit von Variablen

    Richtig,Die Variable ist auf den Server deklariert,also wird sie auch nicht auf den Clienten verfügbar sein.

    Du kannst sie aber mit Usermessages,NetworkedVars und ConCommands an den Clienten schicken.
    Geändert von Pac_187 (16.10.2008 um 17:16 Uhr) Grund: Es heißt deklariert ;)

  3. #3

    Standard AW: Verfügbarkeit von Variablen

    Die Suche ergab leider lediglich exakt zwei Ergebnisse bezüglich NetworkedVars.
    Beide unbrauchbar. "

    Was genau sind sie, oder mehr wie genau funktionieren sie? Ich wäre auch für Codebeispiele dankbar.

  4. #4

    Standard AW: Verfügbarkeit von Variablen

    Networked Vars ist ein Allgemein Begriff für NetworkedBools,Ints,Floats,Strings etc.
    Ich denk mal für deine Gebrauch benötigst du Int's :
    http://wiki.garrysmod.com/wiki/?titl...etNetworkedInt

    Hier ist noch der Artikel zu Usermessages
    http://wiki.garrysmod.com/wiki/?title=User_Messages

  5. #5

    Standard AW: Verfügbarkeit von Variablen

    Zitat Zitat von BennyG Beitrag anzeigen
    ... und ConCommands an den Clienten schicken.

    Wobei ConCommands eher dazu gedacht sind Daten vom Client zum Server zu senden.

  6. #6

    Standard AW: Verfügbarkeit von Variablen

    Vielen Dank.
    Mit den NetworkedInts funktioniert es wunderbar.

    Ich bedanke mich und hoffe, dass ich den Rest nun alleine hinbekomme. =)

  7. #7
    Avatar von Scarecrow
    Registriert seit
    15.12.2005
    Ort
    Nordrhein-Westfalen

    Standard AW: Verfügbarkeit von Variablen

    Vorsicht aber bei der Sicherheit, die eigentliche Variable sollte nicht die NW (network) Variable sein, weil sie sonst von beiden Seiten aus "angesteuert" werden kann und es somit zu möglichen Cheats kommen könnte, vorallem bei Sents ist das so eine Sache!
    Welches ist die Höchstgeschwindigkeit einer unbeladenen Schwalbe?

  8. #8

    Standard AW: Verfügbarkeit von Variablen

    Man sollte so oder so nicht viele Networked Variablen nutzen,
    da sie, wie schon der Name vermuten lässt, Daten zwischen Server und Client
    hin und her transferieren.

    Zu viele davon belasten also den Netzverkehr und "verlangsamen" somit die Leitung.

  9. #9

    Standard AW: Verfügbarkeit von Variablen

    Und bei Usermessages ist diese Netzwerkbelastung und die Sicherheitsrelevanz nicht bzw. nicht so gravierend?

    Ich meine, momentan geht es nur darum, ob Dinge gezeichnet werden, und wie sie gezeichnet werden. Da die render Funktionen nur in dem Drawhook ausführbar sind ist das ganze natürlich etwas Problematisch, da die Dinge an sich vom Server berechnet werden. (Hier gilt die Cheatrelevanz. )

    Ich denke eine Alternative wäre vielleicht, einen Effekt zu nutzen. (Es geht momentan darum, eine Art "Laser" zu zeichnen. ) Dann könnte man die Gesamtheit über den Server laufen lassen. Ob Das ganze allerdings so klug ist, weiß ich nicht.


    Mir fehlt nunmal Erfahrung in "Gmod-LUA". Und mit Effekten habe ich so ziemlich garkeine Erfahrungen... *seufz*

    So.. ich bin gespannt auf die Antworten."

  10. #10

    Standard AW: Verfügbarkeit von Variablen

    Grafische Dinge wie z.B. Effekte oder Render-Sachen werden Grundsätzlich
    auf dem Client ausgeführt.

    Das ist das gute an GMod V10 Lua, es unterscheidet zwischen Client und Server.

    GMod V9 Lua lief z.B. nur aufn Server.


    Was deinen Laser betrifft:

    http://wiki.garrysmod.com/wiki/?title=Laser_pointer

    Im 3. Codeblock ist aufgeführt wie du die render Funktionen nutzen kannst

Berechtigungen

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