Entwickler-Ecke

Sonstiges (Delphi) - waffenskript im spiel


chaoslion - Di 16.01.07 00:44
Titel: waffenskript im spiel
Hey


also folgendes, ich hab ein Waffenskript wie folgt:

zb: mp.txt:

Quelltext
1:
2:
3:
4:
5:
waffe {
 feuerrate = 20;
 schaden = 15;
 nachlade_zeit = 2000;
}


was würdet ihr als effektiver abstempeln, jedes mal wenn ich die waffe wechsle, diesen skript ausführen oder
am programmstart ein array von allen waffen, mit möglichen einstellungen festlegen?!


Dragonclaw - Di 16.01.07 00:58

Du kannst auch eine Klasse "Waffe" machen mit dem Eigenschaften für feuerrate,schaden,nachlade_zeit etc machen. Dann initialisierts du die einmal am Anfang und kannst immer darauf zu greifen.

z.B. hast du 5 Waffen, dann machst du dir ein "Waffenarsenal" ein Array der Klasse "Waffe". Dann beim Form.Create schreibst du einmal die WaffenEigentschaften : Waffenarsenal[1].feuerrate := 20; etc. Dann kannst auch sehr leicht beim Waffenwechseln die eigenschaften wechseln die die Waffe hat, einfach nur die Pos im Waffenarsenal ändern.

Allerdings hab ich nicht wirklich ne Ahnung wie man das jetzt GENAU in die Praxis implementiert, ist halt nur thoretisch, sollte aber einfacher und auch schneller gehen als, die Daten aus ner txt Datei zu lesen, außerdem ist das Ganze dann nicht so anfällig für Manipulationsversuche

Hoffe du hast ne Ahnung was ich meine


chaoslion - Di 16.01.07 01:20

ok, hast recht das mit der manipulation stimmt, ich fand diese text datei lösung schön, weil man dadurch später nicht mehr viel im quelltext ändern muss wenn überhaupt und kann einfach veränderungen in der datei machen. danke für den tipp mit dem array, so hatte ich es zu erst geplant :D mfG lion


Coder - Di 16.01.07 01:48

Du könntest z.B. ein Array mit Rekords verwenden
http://www.dsdt.info/grundlagen/sprache/komdatentypen.php (unten)

Wenn du das nicht schon vor hattest. :)

MfG


Flamefire - Di 16.01.07 08:08

Bsp:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
type
    twaffe=record
                 feuerrate,schaden,nachladezeit:Integer;
    end;
var arsenal:array[1..20of twaffe;
procedure int();
var i:Integer;
begin
for i:=1 to 20 do begin
   arsenal[i].feuerate:=20;
   ...
end;
end;

dann kannste noch ne globale variable machen, in der du die aktuelle waffe (index) speicherst (1=Mp, 2=Pistol...)
die daten für die waffen kannste aus ner datei einlesen und dann in der schleife oben entsprechend setzen...
ABER: dann kann jeder die ändern...das ist möglichwerweise nicht so was du willst, oder?


freak4fun - Di 16.01.07 09:31

user profile iconchaoslion hat folgendes geschrieben:
... ich fand diese text datei lösung schön, weil man dadurch später nicht mehr viel im quelltext ändern muss wenn überhaupt und kann einfach veränderungen in der datei machen.


Kannst du doch trotzdem machen. Speicher die Werte für die detailangaben in einer Ini-Datei und bei Starten lädst du die Werte. ;)

MfG
freak