Seite: 1 [2] [3] >> |
| Autor |
Mitteilung |
|
verfasst am: 26.06.2009, 15:46
|
Registrierdatum: 27.06.2007, 12:16
Beiträge: 658
 |
Ich hätte mal eine Idee für alle Spielesatzersteller (von der ich selber wahrscheinlich nicht Gebrauch machen werde):
Wie wär's mit Betäubungsmunition? Trifft man ein Alien mit einer Waffe mit Betäubungsmuniton, so verliert es 10% seiner Zeiteineiten in der ersten Runde, 8% der ZE in der zweiten und 5% ZE in der dritten Runde (jedesmal ausgehend von maximale ZE d. Aliens), bis der Effekt erlischt.
Trifft man es mehr als ein mal, so wird der entsprechende Wert dem Prozentwert addiert.
Ich weiß momentan gar nicht, ob das mit den aktuellen Scriptbefehlen so funktionieren wird, wenn jemand also Interesse daran hat kann er das ruhig mal ausprobieren. ;) |
|
verfasst am: 26.06.2009, 16:24
|
Admin, Spielsatz GalWar
Registrierdatum: 31.08.2005, 21:51
Beiträge: 5596
 |
Das ist lediglich eine Modifikation des bestehenden Stun-Effektes, bei dem man statt die ZE zu 0 zu setzen den Wert vorher berechnet.
Vorlagen findet man z.B. in der script.pak (Stun3r, relativ einfach) oder im Galwar (EMP-Effekt, ID-Bezogen und aufwendiger) |
|
verfasst am: 26.06.2009, 16:26 · Edited by: sujin
|
Spielsatz Alliances
Registrierdatum: 14.07.2004, 14:47
Beiträge: 1185
 |
Klingt prinzipiell machbar. Wie ich ZE teile, weiß ich ja neuerdings dank Dirk und Natter ;-)
Ich glaube, ich versuch's einfach mal.
Ich werde es wohl auch nicht verwenden, aber Übung ist immer gut und vllt kann es ja wer anders gebrauchen.
Edit: Hab ne dumme Frage, bezüglich Arrays, ist nicht essentiell wäre aber sauberer: Ich find bei den Array-Typen keinen Integer-Array, nur einen für Strings... muss ich den im Verbund mit strtoint nehmen, oder gibt's da was eleganteres?
Edit2: Ok, hat sich erledigt... Array of Integer, korrekt? |
|
verfasst am: 26.06.2009, 17:21
|
Programmierer, allgemeines
Registrierdatum: 06.06.2004, 17:19
Beiträge: 3186
 |
Zitat: sujin Edit2: Ok, hat sich erledigt... Array of Integer, korrekt?
ja |
|
verfasst am: 26.06.2009, 17:26 · Edited by: sujin
|
Spielsatz Alliances
Registrierdatum: 14.07.2004, 14:47
Beiträge: 1185
 |
Ok, der Editor gibt sich zufrieden. Aber wenn ein Profi so freundlich wäre und das mal überprüfen würde...
program RangeEffect_fading_Anesthesia;
var
Rounds: Integer;
TUloss: Array[0..3] of Integer;
procedure NewPlayerRound(Sender: TOBJECT);
var
Figure:TGameFigure;
dummy:Extended;
begin
if (TGameFigure(MissionObject).FigureStatus=fsFriendly) then
begin
Figure:= TGameFigure(MissionObject);
dummy:= (Figure.MaxTimeUnits / 100) * TUloss[rounds];
Figure.TimeUnits:= Round(dummy);
Rounds:=Rounds+1;
if (Rounds>=3) then
begin
mission_win;
end;
end;
end;
procedure NewAlienRound(Sender: TObject);
var
Figure:TGameFigure;
dummy:Extended;
begin
if (TGameFigure(MissionObject).FigureStatus=fsEnemy) then
begin
Figure:=TGameFigure(MissionObject);
dummy:= (Figure.MaxTimeUnits / 100) * TUloss[rounds];
Figure.TimeUnits:= Round(dummy);
Rounds:=Rounds+1;
if (Rounds>=3) then
begin
mission_win;
end;
end;
end;
procedure NewRound(Sender: TOBJECT);
begin
TGameFigure(MissionObject).TimeUnits:=0;
inc(Rounds);
if (Rounds>=3) then
mission_win;
end;
procedure StartMission;
var
Figure:TGameFigure;
dummy:Extended;
begin
// no Figure hit
if (MissionObject=Nil) then
begin
mission_abort;
end;
if not (IsObject(MissionObject)) then
begin
mission_abort;
end;
rounds:=0;
Figure:=TGameFigure(MissionObject);
// ZE-Verlust nach [X] Runden
TUloss[0]:=10;
TUloss[1]:=8;
TUloss[2]:=5;
TUloss[3]:=3;
dummy:= (Figure.MaxTimeUnits / 100) * TUloss[rounds];
Figure.TimeUnits:= Round(dummy);
register_special_event(@NewAlienRound,EVENT_SPECIAL_ONNEWALIENROUND);
register_special_event(@NewPlayerRound,EVENT_SPECIAL_ONNEWPLAYERROUND) ;
end;
begin
MissionName:='RangeEffect_fading_Anesthesia';
MissionType:=mzUser;
end.
Wichtig ist der folgende Teil, den richtigen Typ zu finden trau ich mir grad noch zu und sonst hab ich nichts gemacht.
// ZE-Verlust nach [X] Runden
TUloss[0]:=10;
TUloss[1]:=8;
TUloss[2]:=5;
TUloss[3]:=3;
dummy:= (Figure.MaxTimeUnits / 100) * TUloss[rounds];
Figure.TimeUnits:= Round(dummy);
PS: Falls mir jemand verraten kann, ob und wie ich Array-Werte auch in einer Zeile festlegen kann, also ähnlich wie bei PHP, was etwa so aussähe:
$TUloss = array (10, 8, 5, 3);
Dann wäre ich sehr dankbar. Die Methode ist so schön platzsparend ^^ |
|
verfasst am: 26.06.2009, 17:49
|
Programmierer, allgemeines
Registrierdatum: 06.06.2004, 17:19
Beiträge: 3186
 |
Schau mal bei 2230. Du solltest noch auf EVENT_ONGROUNDFINISHED reagieren. |
|
verfasst am: 26.06.2009, 17:52
|
Spielsatz Alliances
Registrierdatum: 14.07.2004, 14:47
Beiträge: 1185
 |
Ist jetzt drin.
Was das etwa alles? Falls ja, bin ich enttäuscht von mir, dass ich nicht wenigstens einen dicken Logikfehler drin habe :D |
|
verfasst am: 26.06.2009, 18:05 · Edited by: Natter
|
Programmierer, allgemeines
Registrierdatum: 06.06.2004, 17:19
Beiträge: 3186
 |
Naja - logisch ist das skript nicht unbedingt - je nachdem, was du machen willst. Momentan setzt du die ZE bei Treffer auf 10 Prozent, danach zu Beginn jeder Runde auf 8,5, bzw. 3 Prozent des Maximalwertes (der Effekt wird also immer stärker). |
|
verfasst am: 26.06.2009, 18:14
|
Spielsatz Alliances
Registrierdatum: 14.07.2004, 14:47
Beiträge: 1185
 |
Ich wusste doch, dass ich Mist gebaut habe ^^
So sollte es den ursprünglich geplanten Effekt haben:
dummy:= Figure.TimeUnits - ((Figure.MaxTimeUnits / 100) * TUloss[rounds]);
Die äußere Klammer ist evtl überflüssig, je nachdem wie strikt sich der Interpreter an good ol' "Punkt vor Strich" hält. Aber lieber auf Nummer sicher gehen. |
|
verfasst am: 26.06.2009, 18:16
|
Programmierer, allgemeines
Registrierdatum: 06.06.2004, 17:19
Beiträge: 3186
 |
Auf "Punkt vor Strich" kannst du dich ruhig verlassen ;) |
|
verfasst am: 26.06.2009, 18:19 · Edited by: sujin
|
Spielsatz Alliances
Registrierdatum: 14.07.2004, 14:47
Beiträge: 1185
 |
Schön zu hören. Ich lass es trotzdem mal drin, schadet ja nicht und hilft vielleicht der Übersicht, wenn man sich den Code mal übermüdet oder neben der Spur anguckt.
Also hier nochmal der komplette Code:
program RangeEffect_fading_Anesthesia;
var
Rounds: Integer;
TUloss: Array[0..3] of Integer;
procedure NewPlayerRound(Sender: TOBJECT);
var
Figure:TGameFigure;
dummy:Extended;
begin
if (TGameFigure(MissionObject).FigureStatus=fsFriendly) then
begin
Figure:= TGameFigure(MissionObject);
dummy:= Figure.TimeUnits - ( (Figure.MaxTimeUnits/100) * TUloss[rounds] );
Figure.TimeUnits:= Round(dummy);
Rounds:=Rounds+1;
if (Rounds>=3) then
begin
mission_win;
end;
end;
end;
procedure NewAlienRound(Sender: TObject);
var
Figure:TGameFigure;
dummy:Extended;
begin
if (TGameFigure(MissionObject).FigureStatus=fsEnemy) then
begin
Figure:=TGameFigure(MissionObject);
dummy:= Figure.TimeUnits - ( (Figure.MaxTimeUnits/100) * TUloss[rounds] );
Figure.TimeUnits:= Round(dummy);
Rounds:=Rounds+1;
if (Rounds>=3) then
begin
mission_win;
end;
end;
end;
procedure NewRound(Sender: TOBJECT);
begin
TGameFigure(MissionObject).TimeUnits:=0;
inc(Rounds);
if (Rounds>=3) then
mission_win;
end;
procedure GroundFinished(Sender: TOBJECT);
begin
mission_win;
end;
procedure StartMission;
var
Figure:TGameFigure;
dummy:Extended;
begin
// no Figure hit
if (MissionObject=Nil) then
begin
mission_abort;
end;
if not (IsObject(MissionObject)) then
begin
mission_abort;
end;
rounds:=0;
Figure:=TGameFigure(MissionObject);
// ZE-Verlust nach [X] Runden
TUloss[0]:=10;
TUloss[1]:=8;
TUloss[2]:=5;
TUloss[3]:=3;
dummy:= Figure.TimeUnits - ( (Figure.MaxTimeUnits/100) * TUloss[rounds] );
Figure.TimeUnits:= Round(dummy);
register_special_event(@NewAlienRound,EVENT_SPECIAL_ONNEWALIENROUND);
register_special_event(@NewPlayerRound,EVENT_SPECIAL_ONNEWPLAYERROUND) ;
register_event(@GroundFinished,groundAI_api_GetRunningGround,EVENT_ONG ROUNDFINISHED);
end;
begin
MissionName:='RangeEffect_fading_Anesthesia';
MissionType:=mzUser;
end. |
|
verfasst am: 27.06.2009, 09:21
|
Registrierdatum: 12.06.2005, 11:08
Beiträge: 465
 |
Sieht interessant aus... Das ist also eher eine... "Lähmung" als eine richtige Betäubung.
Was es inzwischen alles für Möglichkeiten gibt... Ich erinnere mich noch an damals, wo es nicht mal möglich war, für ein Gewehr explodierende Munition zu benutzen. |
|
verfasst am: 27.06.2009, 14:23
|
Registrierdatum: 27.06.2007, 12:16
Beiträge: 658
 |
@sujin
Wird dir wohl hoffentlich nichts ausmachen, wenn ich das script eventuell ganz böse klaue? ;) |
|
verfasst am: 27.06.2009, 15:40
|
Spielsatz Alliances
Registrierdatum: 14.07.2004, 14:47
Beiträge: 1185
 |
Ich hab's extra für Andere gemacht, ich brauch's nämlich nicht ^^ Also: Macht mir nix aus. |
|
verfasst am: 22.08.2021, 12:48
|
Registrierdatum: 22.08.2021, 12:32
Beiträge: 34
 |
|
|
verfasst am: 22.08.2021, 12:49
|
Registrierdatum: 22.08.2021, 12:32
Beiträge: 34
 |
|
|
verfasst am: 28.10.2021, 09:10
|
Registrierdatum: 28.10.2021, 08:53
Beiträge: 304
 |
|
|
verfasst am: 08.11.2021, 12:32
|
Registrierdatum: 28.10.2021, 08:53
Beiträge: 304
 |
|
|
verfasst am: 13.06.2022, 17:32
|
Registrierdatum: 29.10.2021, 14:57
Beiträge: 763
 |
|
|
verfasst am: 23.11.2023, 18:38
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 582490
 |
|
Seite: 1 [2] [3] >> |