PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [LINK] Lua-based DoorMod



aVoN
29.04.2006, 21:56
Und hier mal ne kleine Mod, die ich auf meinem eigenen dedicated Server verwende. Sehr nützliches Teil. Erlaubt das öffnen/schließen von mit DoorMod/BaseWars etc. erstellten Türen und das binden dieser zu Buttons. Multibutton binds möglich!

http://www.avon.fneuweiler.de/index2.php?action=artikel/article&artikel=1146336296

Ihr wollt die Mod ausprobieren? Kein Problem! Joint www.fredbert.de:27016 (Wenn diese kleine Art von Webung ;) verboten ist, bitte URL zum Server oben entfernen)

Zusäzlich arbeitet meine CopyGun (vieleicht release ich sie auch, mal sehen) ebenfalls mit den Buttons/Doors zusammen, und speichert auch die Binds zwischen Doors/Buttons.

Viel Spass mit dem Ding ;)

Und fasst vergessen: Benötigt wird GMX und PropProtector. ;) - sollte eigendlich auf fast jedem guten Server standard sein ;)

Edit
Da mein alter Server off ist, die domain gehijacked wurde und ich oft nach dem LuaBased DoorMod gefragt werde:

-- Lua based Door controle with Chat Commands v 1.1
-- Script by aVoN - www.avon.fneuweiler.de

-- Feel free to use any part of this script for your own usage. You can modify and/or distribute it as long as you give credits to me.

-- Usable doors - Working with chatcommands. Protected by PropProtector! (Just the owner can open/close them!)
-- This needs additionally to PropProtector the GMX library! I'm using GMX 1.31, but i think, it will even work with versions before!
-- Example function found on FP in a Lua help thread. Made me to think about "how to do" this - written everything by my own

-- Usage : Look at a door an say "!door <doorname comes here>" without the < and >
-- Then, look any Prop, and say "!button <dooname>". You can bind multi doors to one button. Just lookt at the button/pro prop again and bind it with saying "!button <dooname 2>" or multibind
-- them with "!door <door1>;<door2>;<door3>"

--Doors
function s_eventPlayerSay( userid, strText, bTeam )
-- Ignore the console
if(userid ~= 0) then
_TraceLine(_PlayerGetShootPos(userid),_PlayerGetSh ootAng(userid),4096,userid)
local username,uname_pos = string.find(string.lower(strText), string.lower(_PlayerInfo(userid,"name")..": "), 1, true);
strText = string.sub(strText, uname_pos + 1)
local splitted = gmx.explode(strText," ");
if (splitted[1] == "!open") then
if(splitted[2] == nil) then
if _TraceHitNonWorld() then
if(prop_protection (userid,_TraceGetEnt())) then
_EntFire(_TraceGetEnt(),"setanimation","open",0)
end
end
else
if(prop_protection (userid,_EntGetByName(splitted[2]))) then
_EntFire(_EntGetByName("door_"..splitted[2]),"setanimation","open",0)
end
end
end
if (splitted[1] == "!close") then
if(splitted[2] == nil) then
if _TraceHitNonWorld() then
if(prop_protection (userid,_TraceGetEnt())) then
_EntFire(_TraceGetEnt(),"setanimation","close",0)
end
end
else
if(prop_protection (userid,_EntGetByName(splitted[2]))) then
_EntFire(_EntGetByName("door_"..splitted[2]),"setanimation","close",0)
end
end
end
if(splitted[1] == "!door" and splitted[2] ~= nil) then
if(prop_protection (userid,_TraceGetEnt())) then
make_door(_TraceGetEnt(),splitted[2])
end
end
if(splitted[1] == "!button" and splitted[2] ~= nil) then
if(prop_protection (userid,_TraceGetEnt())) then
make_button(userid,_TraceGetEnt(),splitted[2])
end
end
end
end

function make_button(userid,entity,name)
local ent_name = "";
-- Check first, if the person is the owner of the door. Otherwise, dont allow him, to make it a button for it!
if(_EntGetByName(door) ~= "" and _EntGetByName(door) ~= nil and _EntGetByName(door) ~= 0) then
if(prop_protection (userid,_EntGetByName(door)) == false) then
return;
end
end
local door_table = gmx.explode(name,";")-- Multi doors!
for k,door in door_table do
ent_name = _EntGetName(entity);
_EntFire(entity, "addoutput", "spawnflags 256" , 0);
_EntFire(entity, "addoutput", "onplayeruse door_"..door..",setanimation,open" , 0);
_EntFire(entity, "addoutput", "onplayeruse door_"..door..",setanimation,close,3" , 0);
if(string.find(tostring(ent_name),"button") == nil) then
_EntSetName(entity,"button_"..door);
else
-- Multi Button
_EntSetName(entity,ent_name..";"..door);
end
end
end

function make_door(entity,name)
local make_door = gmx.explode(name,";");
-- Dont add a ; to a doors name!
_EntSetName(entity,"door_"..make_door[1]);
end

HookEvent("eventPlayerSay", s_eventPlayerSay)

*DEAD*Pr0no0b
29.04.2006, 22:12
Hört sich gut an!
Dafür geb ich dir mal 5/5 Punkten!

aMul
29.04.2006, 22:15
Jo, auch von meiner Seite ein großes Lob, klingt wirklich gut!

Werds bei gelegenheit vieleicht mal testen.. bin gerade zu müde/faul... :D

MfG

Pac_187
30.04.2006, 11:42
Goil!

Ne Group Copy Gun die sogar die verbindungen mit speicher:up:

Respect :gmod:


freue mich schon drauf *download*


greetz Pac_187

Celereon
30.04.2006, 12:21
Cool! Gleich mal alles ziehen , denn der PropProtector fehlt mir auch noch !
Danke!

Mfg , Kobra

aVoN
30.04.2006, 13:06
Goil!

Ne Group Copy Gun die sogar die verbindungen mit speicher:up:

Respect :gmod:


freue mich schon drauf *download*


greetz Pac_187


Nicht nur die Verbindungen dazu. Das ist nur n kleines gimmick. Kann alles außer Brushes speichern. Also Vehicles,Magnetised stuff uvm. Hat dann noch ne SmartWelding funktion und zwei neue Sweps: SphereSelect und QuadSelect, um mehrer sachen auf einmal auszuwählen. Einmal über ne Kugel und einmal über ne Box.

Ich werd mal sehen ob ichs release. Und wenn, dann zunächst bei FP. Das wird dann greve für mich wahrscheinlich dort releasen.

Pac_187
30.04.2006, 16:14
Nicht nur die Verbindungen dazu. Das ist nur n kleines gimmick. Kann alles außer Brushes speichern. Also Vehicles,Magnetised stuff uvm. Hat dann noch ne SmartWelding funktion und zwei neue Sweps: SphereSelect und QuadSelect, um mehrer sachen auf einmal auszuwählen. Einmal über ne Kugel und einmal über ne Box.

Ich werd mal sehen ob ichs release. Und wenn, dann zunächst bei FP. Das wird dann greve für mich wahrscheinlich dort releasen.


*saber* *saber* *Ehrwartungsvollvorbilschirmsitz* *saber* *saber*

Das ist ma ne geiles Lua-"SWEP"

aVoN
30.04.2006, 18:38
Ach hätte fast vergessen, meine CopyGun hat natürlich auch ein nach Benutzer sortierbares Patternmenü mit Gruppensystem (Vip, admin). Naja. Das gruppensystem were ich wohl net releasen.. ^^
Mal sehen ob ich die release ;)

Btw. Auch der CopyCorruption bug (Props sind aufeinmal irgendwo, jedenfalls net dort wo sie sein sollen) ist behoben und PropProtection wie immer ;)
Spätestens, wenn ich alles alles zu Gmod10 portiert habe, mache ich die scripts von 9.0.4 pub.

Pac_187
30.04.2006, 18:55
Ach hätte fast vergessen, meine CopyGun hat natürlich auch ein nach Benutzer sortierbares Patternmenü mit Gruppensystem (Vip, admin). Naja. Das gruppensystem were ich wohl net releasen.. ^^
Mal sehen ob ich die release ;)

Btw. Auch der CopyCorruption bug (Props sind aufeinmal irgendwo, jedenfalls net dort wo sie sein sollen) ist behoben und PropProtection wie immer ;)
Spätestens, wenn ich alles alles zu Gmod10 portiert habe, mache ich die scripts von 9.0.4 pub.


Du scheinst dich ja ultra gut mit LUA auszukennen...


Wie so schreibst du nicht mal ein leicht verständliches Tutorial für dieses Forum,
denn es gibt ja leider nur wenige (fast gar keine) die LUA beherschen;)

Ich jedenfalls wäre sehr dankbar:)

greetz Pac_187

aVoN
02.05.2006, 14:13
Eigendlich gibts doch genug Tuts für lua. Bzw, ich habe es ohne tuts gelernt, was ich immer noch am einfachsten finde.
Einfach mal irgend ein einfaches script, das man erweitern möchte anschauen, durcharbeiten, und verstehen, was es wie macht.
Wenn man dass dan gelernt hat, soltle man sich nur das GM wiki zu Herzen legen, und dort bei eventhooks und engine binds nachschauen.
Ein Wissen über Vektorrechnung bzw. Mathematik ist auch ein Vorteil. Besonders bei Spieleentwicklung bzw. Entwicklungs für Spiele.

aVoN
06.05.2006, 17:00
Hi, als kleine Info nebenbei, meine CopyGun wird höchstwahrscheinlich morgen veröffnetlicht. Habe heute alle benötigten Teile umgescripted, muss aber noch eine Dokumentation schreiben.

Pac_187
06.05.2006, 18:35
Hi, als kleine Info nebenbei, meine CopyGun wird höchstwahrscheinlich morgen veröffnetlicht. Habe heute alle benötigten Teile umgescripted, muss aber noch eine Dokumentation schreiben.


*freu,freu*:D

goil

Unholy
06.08.2006, 18:41
Hi,
genau wie der Link zum PropProtector funktioniert der Link zum DoorMod nicht mehr!
Würde beide Dinge gerne nutzen ;-) Bitte um Hilfe.

Gruß,
Unholy

Pac_187
07.08.2006, 08:09
Hi,
genau wie der Link zum PropProtector funktioniert der Link zum DoorMod nicht mehr!
Würde beide Dinge gerne nutzen ;-) Bitte um Hilfe.

Gruß,
Unholy


Seine Seite ist grade down.....(wird aber noch wieder kommen):-?

Sharky
07.08.2006, 11:31
Wie kann ich die Doors an die Buttons binden?

Pac_187
07.08.2006, 13:02
Wie kann ich die Doors an die Buttons binden?


Hast du dieses Lua-Script etwa noch??

Dann lad es doch bitte hoch;)


Also:

1.Du erstellst ein Combine Tor
2.Du guckst aufs Combine Tor und gibst !Door 1a ein
3.Du spawnst ein Prop
4.Du guckst auf das Prop und gibts ein !Button 1a
5.Nun hast du eine Tür mit Button

Unholy
10.08.2006, 22:13
Guten Abend,
Avon hat mir soeben geschrieben, dass sein Server erstmal nicht mehr aufrufbar sein wird.

Könnte nun vielleicht jemand so nett sein und den "Lua Based DoorMod" von Avon privat uploaden oder mir per Email schicken? (In Fall 2 bitte zuerst per PM melden)
Am besten wäre natürlich ein Upload bei rapidshare o.ä., denn dann hätten alle etwas davon.

Würde mich wirklich sehr über eure Hilfe freuen, da es etwas nervig ist immer Cheats zu aktivieren, wenn ich Türen öffnen will.. Denn soweit ich weiß funktioniert nur dieser DoorMod wirklich ohne Cheats oder?
Jedenfalls ist es etwas ungünstig, wenn man eine sichere, unstürzbare Base baut, in die dann jeder Depp dank noclip sowieso reinkommt, weil Cheats für die Türen an sein müssen.. o_0

;-)

Deswegen würde ich mich über Hilfe freuen!

Gruß

Unholy

aVoN
10.08.2006, 23:23
Guten Abend,
Avon hat mir soeben geschrieben, dass sein Server erstmal nicht mehr aufrufbar sein wird.

Könnte nun vielleicht jemand so nett sein und den "Lua Based DoorMod" von Avon privat uploaden oder mir per Email schicken? (In Fall 2 bitte zuerst per PM melden)
Am besten wäre natürlich ein Upload bei rapidshare o.ä., denn dann hätten alle etwas davon.

Würde mich wirklich sehr über eure Hilfe freuen, da es etwas nervig ist immer Cheats zu aktivieren, wenn ich Türen öffnen will.. Denn soweit ich weiß funktioniert nur dieser DoorMod wirklich ohne Cheats oder?
Jedenfalls ist es etwas ungünstig, wenn man eine sichere, unstürzbare Base baut, in die dann jeder Depp dank noclip sowieso reinkommt, weil Cheats für die Türen an sein müssen.. o_0

;-)

Deswegen würde ich mich über Hilfe freuen!

Gruß

Unholy

Hab das script im erstem posting angehängt.

Pac_187
11.08.2006, 08:57
Ich habe leider ein Problem mit dem script....

jedes mal wenn ich !open oder !close oder einen der anderen Befehle benutze,
schreibt er in die Console folgendes:

[LUA] Error calling 'DoEventHook' : 'Line 21: attempt to index global 'gmx' (a nil value)'


Die Combinetüren spawne ich immer von Huntsmod...

Unholy
11.08.2006, 13:54
Hey,
das wollte ich auch gerade schreiben..

Genau das gleiche ist bei mir auch!
Wenigstens scheint es dann nicht an uns zu liegen.
Das Script endet auch etwas abrupt oder?
@Avon:
Ist es vielleicht nicht vollständig ins Forum kopiert, weil die Quote Funktion keine Zeichen mehr angenommen hat?

Jedenfalls funzt es nicht? ;-)

Gruß,
Unholy

Pac_187
11.08.2006, 20:05
Soweit wie ich jetzt rausgefunden habe,
funktionieren bei mir alle Commands die per "say" einzugeben sind nicht mehr,

z.B. beim ECS...in der Console funktionieren sie, nur nicht peer "say":roll:


hab mein gmx auch schon neuinstallt....bring nix.:mad:


Außerdem ist mir aufgefallen, das er das:

[LUA] Error calling 'DoEventHook' : 'Line 21: attempt to index global 'gmx' (a nil value)'

jedesmal in die Console schreibt, wenn ich etwas peer "say" sage.


hoffe auf Hilfe

mfg Pac_187

Sharky
12.08.2006, 15:40
Hast du dieses Lua-Script etwa noch??

Dann lad es doch bitte hoch;)


Also:

1.Du erstellst ein Combine Tor
2.Du guckst aufs Combine Tor und gibst !Door 1a ein
3.Du spawnst ein Prop
4.Du guckst auf das Prop und gibts ein !Button 1a
5.Nun hast du eine Tür mit Button


Danke. Jetzt funzt es.

Unholy
12.08.2006, 17:45
Und als Gegenleistung lädst du jetzt das Script einfach hoch, ok? ;-)

Bei Avons Plaintext scheint sich wohl ein Fehler eingeschlichen zu haben..

Wäre also gut das ganze nochmal als "fertige" lua Datei zu haben.

Falls du keine Seite zum uploaden kennst: http://www.rapidshare.de/

Gruß,
Unholy

Sharky
14.08.2006, 13:22
Meine Doormod ist aber keine LUA.

Die Tore schließen sich nach recht kurzer Zeit wieder. :(


Aber trotzdem net schlecht die Mod.

Ich weis aber nicht, von wem die Mod ist.

http://rapidshare.de/files/29358362/DoorMod.zip.html

Unholy
14.08.2006, 19:09
Meine Doormod ist aber keine LUA.

Die Tore schließen sich nach recht kurzer Zeit wieder. :(


Aber trotzdem net schlecht die Mod.

Ich weis aber nicht, von wem die Mod ist.

http://rapidshare.de/files/29358362/DoorMod.zip.html

Ach mann... So langsam ist es echt frustrierend...... Jetzt hast du auch noch die falsche DoorMod :(
Diese Mod habe ich auch schon genutzt.. Fand ich aber absolut scheiße, weil Cheats an sein müssen.. o.Ô Musst zugeben, dass es den Spaß verdirbt, wenn du eine Basis baust mit Türen und dann sowieso jeder mit noclip reinfliegen kann!
Deswegen hätte ich gerne Avons Lua DoorMod gehabt. Das scheint der einzige ohne "sv_cheats 1" zu sein. Aber irgendwie scheint fast keiner mehr in diesem Forum aktiv zu sein, sonst müsste es doch irgendeinen Garry's Mod Spieler geben, der mir Avons (und nur Avons!) DoorMod senden kann. :evil:

@Sharky:
Ist jetzt nichts gegen dich. Danke, dass du die Mod hochgeladen hast, nur leider kann ich nichts damit anfangen! Trotzdem danke!

Mfg
Unholy

Sharky
15.08.2006, 16:24
np. Waren keine Umstände.

PS: Ich hätte a noch ne Idee. Vieleicht sollte man nach dieser LUA-Door-Mod googeln.

Unholy
15.08.2006, 18:00
np. Waren keine Umstände.

PS: Ich hätte a noch ne Idee. Vieleicht sollte man nach dieser LUA-Door-Mod googeln.
Bereits ein paar mal passiert.. Aber nichts gefunden.. Zum DoorMod von Avon nur diese SEite hier.. Und dann noch PP und ECG..
Tja..
Gruß,
unholy

Jack Hammersmith
15.08.2006, 19:14
Moin bin neu hier.

Hat mich auch ganz schön genervt, dass das Lua Script aufgrund von GMX net läuft.

Habs dann mal umgeschrieben und auf meinem Server installiert.
Funzt perfekt.

Hier der Code:


-- Lua based Door controle with Chat Commands v 1.1
-- Script by aVoN - www.avon.fneuweiler.de

-- Feel free to use any part of this script for your own usage. You can modify and/or distribute it as long as you give credits to me.

-- Usable doors - Working with chatcommands. Protected by PropProtector! (Just the owner can open/close them!)
-- This needs additionally to PropProtector the GMX library! I'm using GMX 1.31, but i think, it will even work with versions before!
-- Example function found on FP in a Lua help thread. Made me to think about "how to do" this - written everything by my own

-- Usage : Look at a door an say "!door <doorname comes here>" without the < and >
-- Then, look any Prop, and say "!button <dooname>". You can bind multi doors to one button. Just lookt at the button/pro prop again and bind it with saying "!button <dooname 2>" or multibind
-- them with "!door <door1>;<door2>;<door3>"

--Doors

function my_explode(str,seperator)
local t={};
local ll=0;
while true do
local l=string.find(str,seperator,ll+1,true);
if l~=nil then
table.insert(t,string.sub(str,ll,l-1));
ll=l+1;
else
table.insert(t,string.sub(str,ll));
break;
end
end
return t;
end

--Doors
function s_eventPlayerSay( userid, strText, bTeam )
-- Ignore the console
if(userid ~= 0) then
_TraceLine(_PlayerGetShootPos(userid),_PlayerGetSh ootAng(userid),4096,userid)
local username,uname_pos = string.find(string.lower(strText), string.lower(_PlayerInfo(userid,"name")..": "), 1, true);
strText1 = string.sub(strText, uname_pos + 1)
local splitted = my_explode(strText1," ");
if (splitted[1] == "!open") then
if(splitted[2] == nil) then
if _TraceHitNonWorld() then
if(prop_protection (userid,_TraceGetEnt())) then
_EntFire(_TraceGetEnt(),"setanimation","open",0)
end
end
else
if(prop_protection (userid,_EntGetByName(splitted[2]))) then
_EntFire(_EntGetByName("door_"..splitted[2]),"setanimation","open",0)
end
end
end
if (splitted[1] == "!close") then
if(splitted[2] == nil) then
if _TraceHitNonWorld() then
if(prop_protection (userid,_TraceGetEnt())) then
_EntFire(_TraceGetEnt(),"setanimation","close",0)
end
end
else
if(prop_protection (userid,_EntGetByName(splitted[2]))) then
_EntFire(_EntGetByName("door_"..splitted[2]),"setanimation","close",0)
end
end
end
if(splitted[1] == "!door" and splitted[2] ~= nil) then
if(prop_protection (userid,_TraceGetEnt())) then
make_door(_TraceGetEnt(),splitted[2])
end
end
if(splitted[1] == "!button" and splitted[2] ~= nil) then
if(prop_protection (userid,_TraceGetEnt())) then
make_button(userid,_TraceGetEnt(),splitted[2])
end
end
end
end

function make_button(userid,entity,name)
local ent_name = "";
-- Check first, if the person is the owner of the door. Otherwise, dont allow him, to make it a button for it!
if(_EntGetByName(door) ~= "" and _EntGetByName(door) ~= nil and _EntGetByName(door) ~= 0) then
if(prop_protection (userid,_EntGetByName(door)) == false) then
return;
end
end
local door_table = my_explode(name,";")-- Multi doors!
for k,door in door_table do
ent_name = _EntGetName(entity);
_EntFire(entity, "addoutput", "spawnflags 256" , 0);
_EntFire(entity, "addoutput", "onplayeruse door_"..door..",setanimation,open" , 0);
_EntFire(entity, "addoutput", "onplayeruse door_"..door..",setanimation,close,3" , 0);
if(string.find(tostring(ent_name),"button") == nil) then
_EntSetName(entity,"button_"..door);
else
-- Multi Button
_EntSetName(entity,ent_name..";"..door);
end
end
end

function make_door(entity,name)
local make_door = my_explode(name,";");
-- Dont add a ; to a doors name!
_EntSetName(entity,"door_"..make_door[1]);
end

HookEvent("eventPlayerSay", s_eventPlayerSay)

Bin ein absoluter Neuling in Lua also net meckern :D .
Werde evtl. noch ein paar andere Sachen wie Camera open und Plate open einbauen ma gucken.

Ansonsten have fun.

Unholy
15.08.2006, 23:03
Jetzt geht's!!!! DANKE!!! :)
Wo lag das Problem?

W|CK3D
20.08.2006, 17:41
Kann mir jemand sagen, wo ich so einen lua-Code hinkopieren muss?

Pac_187
20.08.2006, 18:16
Kann mir jemand sagen, wo ich so einen lua-Code hinkopieren muss?


Du erstellst einfach eine neue Textdatei und bennenst diese in Door_Mod.lua ,

dort fügst du dann das Script ein.

Die Door_Mod.lua plazierst du dann im gmod9\lua\init Ordner.


Fertig;)


mfg Pac_187

DeaLagga
08.10.2006, 11:49
Hallo an alle,

Ich wollte fragen ob mir jemand evt. den LUA script geben kann oder schicken wär echt dankbar darüber.


Bedanke mich jetzt schon mal an alle (Danke Schön)


mfg.
DeaLagga

Pac_187
08.10.2006, 13:15
Hallo an alle,

Ich wollte fragen ob mir jemand evt. den LUA script geben kann oder schicken wär echt dankbar darüber.


Bedanke mich jetzt schon mal an alle (Danke Schön)


mfg.
DeaLagga


Schonmal auf der Ersten Seite geguckt?;)

DeaLagga
08.10.2006, 13:19
der link tut es ja irgendwie nicht und mit dem code kann ich nichts anfangen deswegen frage ich ja nach der datei

Pac_187
08.10.2006, 13:22
der link tut es ja irgendwie nicht und mit dem code kann ich nichts anfangen deswegen frage ich ja nach der datei


Najut dann halt so:

230

DeaLagga
08.10.2006, 17:56
ich danke vielmals