Ergebnis 1 bis 1 von 1

Thema: [Wiremod] Expression2 - CJ's functions

  1. #1

    Standard [Wiremod] Expression2 - CJ's functions

    Hallo,
    da ich kürzlich mit LUA angefangen habe
    habe ich mich geich an das expression2 gesetzt
    und ein paar neue funktionen gescriptet die ich auch auf wiremod.com released habe.

    ! erste LUA versuche !

    wie genau so eine expression2 funktion aussieht habe ich mir an den vorhandenen scripts abgeschaut um zu begreifen was ich machen muss das er die funktion überhaupt annimmt.


    die funktionen:

    extinguish -> löscht (nicht removed) ein entity wen es brennt.

    sequence -> so in der art wie meine wire_animator idee nur als kleiner code
    die sequencen findet man im model viewer in Source SDK heraus.

    setHealth -> Setzt die lebenspunkte von dem entity auf die angegebene nummer.

    npcSetEnemy -> setzt den feind von NPC 1 (bsp. NPC1:npcSetEnemy(NPC2 oder player)

    takeDamage Entity 1 fügt entity2 X schaden zu

    createEffect ->spawnt ein effekt (effekte -> http://wiki.garrysmod.com/wiki/?title=Util.Effect) (Explosion und dof_node effekt wurde gesperrt wegen spam!)
    Vector1 ist die ziehl position von dem effekt und vector2 ist die position von dem effekt

    Code:
    Entity:extinguish(1) 
    Entity:sequence("idle")
    Entity:setHealth(100)
    Entity:npcSetEnemy(Entity2)
    E:takeDamage(N,E)
    createEffect(S,v,v)
    Lua Code:
    1. registerFunction("extinguish", "e:n", " ", function(self, args)
    2.     local op1, op2 = args[2], args[3]
    3.     local rv1, rv2 = op1[1](self, op1),op2[1](self, op2)
    4.     if(!validEntity(rv1)) then return 0 end
    5.     if(!isOwner(self, rv1)) then return end
    6.     if rv2 then rv1:Extinguish(); end
    7. end)
    8.  
    9. registerFunction("sequence", "e:s", " ", function(self, args)
    10.     local op1, op2 = args[2],args[3]
    11.     local rv1, rv2 = op1[1](self, op1),op2[1](self, op2)
    12.     if(!validEntity(rv1)) then return 0 end
    13.     if(!isOwner(self, rv1)) then return end
    14.     local sequence = rv1:LookupSequence( rv2 )
    15.     rv1:SetSequence(sequence) 
    16. end)
    17.  
    18. registerFunction("setHealth", "e:n", " ", function(self, args)
    19.     local op1, op2 = args[2],args[3]
    20.     local rv1, rv2 = op1[1](self, op1),op2[1](self, op2)
    21.     if(!validEntity(rv1)) then return 0 end
    22.     if(!isOwner(self, rv1)) then return end
    23.     rv1:SetHealth( rv2 )
    24. end)
    25.  
    26. registerFunction("npcSetEnemy", "e:e", " ", function(self, args)
    27.     local op1, op2 = args[2],args[3]
    28.     local rv1, rv2 = op1[1](self, op1),op2[1](self, op2)
    29.     if(!validEntity(rv1)) then return 0 end
    30.     if(!isOwner(self, rv1)) then return end
    31.     rv1:SetEnemy( rv2 )
    32. end)  
    33. /* NEW functions */
    34. registerFunction("takeDamage", "e:ne", " ", function(self, args)
    35.     local op1, op2, op3 = args[2],args[3],args[4]
    36.     local rv1, rv2, rv3 = op1[1](self, op1),op2[1](self, op2),op3[1](self, op3)
    37.     if(!isOwner(self, rv1)) then return end
    38.     if(!validEntity(rv1)) then return 0 end
    39.     rv1:TakeDamage( rv2, rv3 )
    40. end)
    41.  
    42. registerFunction("createEffect", "svv", " ", function(self, args)
    43.     local op1, op2, op3 = args[2],args[3],args[4]
    44.     local rv1, rv2, rv3 = op1[1](self, op1),op2[1](self, op2),op3[1](self, op3)
    45.     local effectdata = EffectData()
    46.     local vPoint = Vector(rv2[1],rv2[2],rv2[3])
    47.     local vPointUp = Vector(rv3[1],rv3[2],rv3[3])
    48.     if (rv1 == "Explosion") then return 0 end
    49.     if (rv1 == "dof_node") then return 0 end
    50.     effectdata:SetOrigin( vPointUp ) 
    51.     effectdata:SetStart( vPoint )
    52.     effectdata:SetScale( 1 )
    53.     util.Effect( rv1, effectdata ) 
    54. end)
    Spoiler:
    "der code ohne das (lua) (/lua)


    es wurden alle funktionen getestet
    daher kann ich sagen das die npcSetEnemy funktion macken hat und die takeDamage ein "script error" aufruft wen das entity stirbt oder gelöscht wird
    (arbeitszeit mit hilfe von der garrysmod.com wiki und vorhandenen funktionen -> 45 min)

    installation:
    macht eine .txt file in garrysmod/garrysmod/addons/wire/lua/entitys/gmod_wire_expression2/core/custom.
    kopiert den script rein und benennt die .txt in CJ.lua um..


    ich hoffe ich kann damit einen expression2 fan glücklich machen

    UPDATE: createEffect umgebaut (mit vector steuerung)
    Geändert von gamerpaddy (16.05.2009 um 11:17 Uhr)

Ähnliche Themen

  1. Wiremod :(
    Von best of im Forum Hilfe & Support
    Antworten: 26
    Letzter Beitrag: 24.11.2008, 07:56
  2. Wiremod
    Von Fighting_H5N1 im Forum GMod Allgemein
    Antworten: 0
    Letzter Beitrag: 07.11.2008, 16:24
  3. Wiremod
    Von Ural mod im Forum Hilfe & Support
    Antworten: 3
    Letzter Beitrag: 20.10.2008, 20:04
  4. Wiremod
    Von Darkler [Dunkler Reiter] im Forum GMod Allgemein
    Antworten: 4
    Letzter Beitrag: 13.11.2007, 11:04
  5. [Hätte gerne]Functions + Parameter
    Von Scarecrow im Forum Lua
    Antworten: 9
    Letzter Beitrag: 11.10.2006, 12:57

Berechtigungen

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