Forum

> > CS2D > Scripts > Sammelthread/FAQ zu Lua & Editor
Forums overviewCS2D overview Scripts overviewLog in to reply

German Sammelthread/FAQ zu Lua & Editor

1,111 replies
Page
To the start Previous 1 215 16 1755 56 Next To the start

old Re: Sammelthread/FAQ zu Lua & Editor

Sarim
User Off Offline

Quote
Was ist hier dran falsch:

--------------------------------------------------
-- Player Classes Script by Unreal Software --
-- 28.02.2009 - www.UnrealSoftware.de --
-- Adds Player Classes to your server --
--------------------------------------------------

if sample==nil then sample={} end
sample.classes={}

-----------------------
-- INITIAL SETUP --
-----------------------
function initArray(m)
     local array = {}
     for i = 1, m do
          array[i]=0
     end
     return array
end
sample.classes.class=initArray(32)
function sample.classes.classmenu(id)
     menu(id,"Select your Class,Soldier|Armor+MG,Spy|Stealth,Engineer|Wrench,Pyro|Flamethrower,Scout|Machete,Sniper|AWP,Killer|Laser")     
end


-----------------------
-- TEAM -> CLASS --
-----------------------
addhook("team","sample.classes.team")
function sample.classes.team(id,team)
     if (team>0) then
          sample.classes.classmenu(id)
     end
end


-----------------------
-- SERVERACTION --
-----------------------
addhook("serveraction","sample.classes.serveraction")
function sample.classes.serveraction(id)
     sample.classes.classmenu(id)
end


-----------------------
-- CLASS SELECTION --
-----------------------
addhook("menu","sample.classes.menu")
function sample.classes.menu(id,menu,sel)
     if (menu=="Select your Class") then
          if (sel>=0 and sel<=6) then
               sample.classes.class[id]=sel
               if (player(id,"health")>0) then
                    parse("killplayer "..id)
               end
          end
     end
end


-----------------------
-- SPAWN --
-----------------------
addhook("spawn","sample.classes.spawn")
function sample.classes.spawn(id)
     -- SOLDIER
     if (sample.classes.class[id]<=1) then
          parse ("setmaxhealth "..id.." 150")
          parse ("setarmor "..id.." 202")
          parse ("speedmod "..id.." -5")
          return "40,4,51";
     end
     -- SPY
     if (sample.classes.class[id]==2) then
          parse ("setmaxhealth "..id.." 100")
          parse ("setarmor "..id.." 206")
          parse ("speedmod "..id.." 5")
          return "21,1";
     end
     -- ENGINEER
     if (sample.classes.class[id]==3) then
          parse ("setmaxhealth "..id.." 100")
          parse ("setarmor "..id.." 50")
          return "10,2,74";
     end
     -- PYRO
     if (sample.classes.class[id]==4) then
          parse ("setmaxhealth "..id.." 125")
          parse ("setarmor "..id.." 75")
          return "46,6,73";
     end
     -- SCOUT
     if (sample.classes.class[id]==5) then
          parse ("setmaxhealth "..id.." 75")
          parse ("setarmor "..id.." 0")
          parse ("speedmod "..id.." 15")
          return "5,69,54";
     end
     -- SNIPER
     if (sample.classes.class[id]==6) then
          parse ("setmaxhealth "..id.." 75")
          parse ("setarmor "..id.." 25")
          return "35,3,53";
     end
     -- KILLER
     if (sample.classes.class[id]==7) then
          parse ("setmaxhealth "..id.." 50")
          parse ("setarmor "..id.." 0")
          parse ("speedmod "..id.."-50")
          return "45,3,84";

     end
end


-----------------------
-- NO BUYING --
-----------------------
addhook("buy","sample.classes.buy")
function sample.classes.buy()
     return 1
end


Immer wenn ich Killer wähle werde ich ein Soldier, wieso?

old Re: Sammelthread/FAQ zu Lua & Editor

PanDa
User Off Offline

Quote
-----------------------
-- PREPARE TO FIGHT! --
-----------------------
addhook("startround","sample.ut.startround")
function sample.ut.startround()
     parse("sv_sound \"fun/prepare.wav\"")
     sample.ut.fblood=0
end
soll ich das in :
-----------------------
-- ROUND END! --
-----------------------
addhook("Rounend","sample.ut.roundend")
function sample.ut.roundend()
     parse("sv_sound \"fun/MeinSound!.wav\"")
     sample.ut.fblood=0
end

ändern?? Geht das dann?

old Re: Sammelthread/FAQ zu Lua & Editor

DC
Admin Off Offline

Quote
@Stranded-shadowclonk: Du kannst den speemod command natürlich auch binden. Aber dann funktioniert der Kram nur wenn du selber der Server bist.
Das mode ist ein stinknormaler Parameter. Wenn CS2D die gehookte Funktion aufruft übergibt es ihr diesen Parameter/Wert als Variable die du in deiner Funktion benutzen kannst. Sowas kommt bei fast allen Hooks vor. Wenn du das nicht verstehst solltest du dringend nochmal die Lua Samples und die info.txt durchlesen. Ohne das kannst du mit Lua in CS2D nicht viel anfangen.

@PanDa:
wenn du keine fehler einbauen würdest (es heisst "roundend" und nicht "Rounend") könnte das so gehen. das sample.ut.fblood=0 kann dann selbstverständlich auch raus.
für unterschiedliche sounds nach team: zusätzlich bei sample.ut.roundend in die klammern das mode schreiben. dann ein einfaches
1
2
3
4
5
if (mode==1) then
	code für t sound
else
	code für ct sound
end

an alle:
es ist übrigens schöner wenn ihr eure scripts zwischen [ code ] und [ / code ] setzt (ohne die leerstellen).

und wenn ihr die sample scripts als vorlage benutzt solltet ihr zumindest das sample.bla für euch anpassen. z.b. in euername.euerscriptname! so ist die sache ordentliche und nicht mehr so missverständlich. immerhin macht ihr keine beispiele sondern eigene scripts.

old Re: Sammelthread/FAQ zu Lua & Editor

renner96
User Off Offline

Quote
Hi,
kann ich eine lua-function als trigger nehmen? Also z.B., wenn jmd über einen Trigger_Move läuft, dass dann die function im lua-script ausgeführt wird. Kann mir das bitte jmd erklären oder geht das nicht?
MFG
renner

old Re: Sammelthread/FAQ zu Lua & Editor

DC
Admin Off Offline

Quote
das geht in gewisser weise. in lua gibt es ein "trigger" und ein "triggerentity" event. die kannst du hooken. also eine beliebige funktion dranhängen, welche dann je nach werten deine andere funktion aufruft.

etwa so - ungetestet:
1
2
3
4
5
6
7
8
9
10
addhook("trigger","mytrigger")
function mytrigger(value)
	if (value=="callmyluafunc") then
		myluafunc()
	end
end

myluafunc()
	-- do something
end

nun musst du z.b. deinem trigger_move ins triggerfeld einfach nur noch callmyluafunc schreiben und schon wird myluafunc() in deinem luascript aufgerufen sobald du über das trigger_move läufst

natürlich musst du das "--do something" durch irgendwelche aktionen ersetzen, sonst wird rein garnichts passieren.

old Re: Sammelthread/FAQ zu Lua & Editor

PanDa
User Off Offline

Quote
-----------------------
-- ROUND END! --
-----------------------
addhook("roundend","sample.ut.roundend")
function sample.ut.endround(if (mode==1) then
("sv_sound \ "endroundsound/twinnar7.wav\"")
else
("sv_sound \ "endroundsound/twinnar6.wav\"")
end)
     parse("sv_sound \"fun/prepare.wav\"")
     
end

Workt , immer noch Net

old Re: Sammelthread/FAQ zu Lua & Editor

DC
Admin Off Offline

Quote
guck dir mal die samples oder ein lua tutorial an. ohne geht es nicht. ich möchte hier nicht ständig alles komplett vorkauen.

das mit dem "function sample.ut.endround(if (mode==1) then " geht so natürlich ganz und garnicht!
du solltest einfach nur mode in die klammer bei function schreiben und auf keinen fall ein if .. then oder andere befehle!
"function sample.ut.endround(mode)" das führt dann dazu, dass der variable mode ein wert zugewiesen wird (ist beim endround event so festgelegt, siehe info datei). die variable mode kannst du dann ganz normal in der funktion benutzen. das if sollte also darunter in der zeile kommen.

dass dein script nicht richtig sein kann sieht man schon alleine an der tatsache, dass es mehr geöffnete klammern gibt als geschlossene. es muss immer gleichviele geöffnete und geschlossene klammern geben.

old Re: Sammelthread/FAQ zu Lua & Editor

renner96
User Off Offline

Quote
DC has written
das geht in gewisser weise. in lua gibt es ein "trigger" und ein "triggerentity" event. die kannst du hooken. also eine beliebige funktion dranhängen, welche dann je nach werten deine andere funktion aufruft.

etwa so - ungetestet:
1
2
3
4
5
6
7
8
9
10
addhook("trigger","mytrigger")
function mytrigger(value)
	if (value=="callmyluafunc") then
		myluafunc()
	end
end

myluafunc()
	-- do something
end

nun musst du z.b. deinem trigger_move ins triggerfeld einfach nur noch callmyluafunc schreiben und schon wird myluafunc() in deinem luascript aufgerufen sobald du über das trigger_move läufst

natürlich musst du das "--do something" durch irgendwelche aktionen ersetzen, sonst wird rein garnichts passieren.


Wie mach ich, dass der Spieler, der drüber läuft stirbt?

old Re: Sammelthread/FAQ zu Lua & Editor

Saibot
User Off Offline

Quote
Du kannst übrigens im Editor auf "Tile Properties" klicken, einen tile auswählen und auswählen, wie man sterben soll, wenn man raufgeht. Geht auch mit Env_explode.

old Re: Sammelthread/FAQ zu Lua & Editor

DC
Admin Off Offline

Quote
oder einfach mal einen blick in die befehlsreferenz werfen
cs2d cmd killplayer (<- anklicken)
wenn du das in Lua benutzen willst muss ein parse drum herum. wie ein den samples mit anderen befehlen vorgemacht wird.

old Re: Sammelthread/FAQ zu Lua & Editor

renner96
User Off Offline

Quote
Danke, aber ich brauch für killplayer die id. diese wird beim triggern aber nicht übergeben. Wenn ich dann dort diese "todes-Tiles" hinmachen würde, würden alle sterben, ich will aber, dass nur die Spieler eines bestimmten Teams sterben.

old Re: Sammelthread/FAQ zu Lua & Editor

KoRn
COMMUNITY BANNED Off Offline

Quote
hi, ich hab vorgenommen für mein server eine kleine mod zu schreiben, damit noch ein bißchen mehr abwechslung hinein kommt. dafür hab ich den allerseits beliebten ut script verwendet. double kill usw. hab ich rausgemacht weil es bei 16 spielern dann zu kaotisch wäre.
die einzelnen zeilen an sich versuch ich erst garnicht zu verstehen (vorerst). aber einpaar sachen gibts zu klären.
im thread wurden die bestimmt schon mal erwähnt aber ich hab nicht die zeit dazu jede seite durchzulesen, bis seite 9 bin ich noch gekommen....

der block nach rundenstart, da gabs bei mir probleme. im originalscript steht "roundstart" als hook. der funktioniert aber nur bei einem standart modus. ich will allerdings construction verwenden. ich denke mal dass es diesen hook da nicht gibt...
bei "join" ist das problem dass der sound "start1.ogg" jeder hört. ich will allerdings dass nur der spieler, der eben den server gejoint hat, hört.

für jeden hinweis dankbar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
if sample==nil then sample={} end
sample.ut={}

-----------------------
-- INITIAL SETUP     --
-----------------------
function initArray(m)
	local array = {}
	for i = 1, m do
		array[i]=0
	end
	return array
end
sample.ut.timer=initArray(32)
sample.ut.level=initArray(32)
sample.ut.fblood=0

-----------------------
-- Rundenstart       --
-----------------------

addhook("join","sample.ut.startround")
function sample.ut.startround()
	parse("sv_sound \"fun/start1.ogg\"")
	sample.ut.fblood=0
end

-----------------------
-- KILL SOUNDS+MSGS  --
-----------------------
addhook("kill","sample.ut.kill")
function sample.ut.kill(killer,victim,weapon)
	if (os.clock()-sample.ut.timer[killer])>3 then
		sample.ut.level[killer]=0;
	end
	level=sample.ut.level[killer]
	level=level+1
	sample.ut.level[killer]=level
	sample.ut.timer[killer]=os.clock()
	-- FIRST BLOOD?
	if (sample.ut.fblood==0) then
		sample.ut.fblood=1
		parse("sv_sound \"fun/firstbld.ogg\"");
		msg (player(killer,"name").." sheds FIRST BLOOD ".."!!!")
	end
	-- KNIFEKILL
	if (weapon==50) then
		-- HUMILIATION!
		parse("sv_sound \"fun/lache.ogg\""); 
		msg (player(killer,"name").." slaughtered "..player(victim,"name").."!!!")
else
end
end


// also irgendwie scheint der musterscript überhaupt nicht zu funktionieren. first blood kommt zb bei jedem spieler, und der prepare to fight sound hört auch jeder...
edited 1×, last 22.05.09 06:08:31 pm

old Re: Sammelthread/FAQ zu Lua & Editor

Kiffer-Opa
User Off Offline

Quote
Wie entferne ich alle Items, die respawnen?
cs2d cmd removeitem scheint mir nicht die beste Lösung zu sein, denn es entfernt die Items erst dann, nachdem sie gespawnt sind. Das ist aber schon zu spät, es könnte evtl. noch von jemanden aufgesammelt werden (stimmt das?). Ich möchte aber, dass sie gar nicht erst wieder spawnen. Wie geht das?

Oder anders gefragt: Wie kann ich gezielt Entities löschen?

old Re: Sammelthread/FAQ zu Lua & Editor

DC
Admin Off Offline

Quote
@KoRn: das (nicht der) beispielscript funktioniert so wie es soll. jedenfalls ist es beabsichtigt, dass jeder diese sounds hört.
momentan gibt es auch nur cs2d cmd sv_sound welches einen sound bei jedem abspielt. ein sv_sound2 welches einen sound nur bei einem bestimmten spieler abspielt, wird es erst mit der nächsten version geben.

@Kiffer-Opa: das ist so wohl leider noch nicht möglich. es sei denn es geht um eine bestimmte map und die item entities haben namen. dann könnte es klappen sie per cs2d cmd trigger zu deaktivieren.

old Re: Sammelthread/FAQ zu Lua & Editor

ohaz
User Off Offline

Quote
per lua: parse("mp_building_limit GEBÄUDE 9999")
für gebäude das gebäude einsetzen.
im editor... gar nicht, musst du auch per lua machen
To the start Previous 1 215 16 1755 56 Next To the start
Log in to reply Scripts overviewCS2D overviewForums overview