include in exe?!

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

5k41

Betreff: include in exe?!

BeitragDo, Dez 29, 2005 23:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo...
Ich schreibe grad mit einem Freund an einem Spiel und da es schnell zu modden sein sollte haben wir auslagerungsdateien erstellt, in welchen die waffen etc. definiert werden...die sache ist jetzt wenn ich nun eine exe ausführe und dann etwas in der auslagerungsdatei ändere dann übernimmt er es nicht...-.- nun beschleicht mich das dumme gefühl das er es (wie man als c++ ler sagen würd) es inline implementiert...ist es wirklich so und gibt es einen ausweich befehl oder habe ich einfach etwas falsch gemacht?

Vielen dank schonmal im vorraus für eure antworten!!!
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Waveblue

BeitragDo, Dez 29, 2005 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Include schreibt tatsächlich beim Compilieren die Include in den Quelltext. Da läuft nix mit Modden. Eine Möglichkeit wäre, externe Dateien zu einzulesen und eine Scriptsprache zu entwickeln..
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name

5k41

BeitragFr, Dez 30, 2005 0:04
Antworten mit Zitat
Benutzer-Profile anzeigen
hoil...ok abba danke für die schnelle antwort ich werd mir was überlegen!
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

x-pressive

BeitragFr, Dez 30, 2005 11:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wär's damit?

Ausgelagerte Datei:

settings.dat (oder irgendeine Phantasie-Endung):
Code: [AUSKLAPPEN]

MODEL   =   mymodel.b3d
COLOR   =   100,100,255
SCALE   =   2,2,2
SOUND   =   mysound.ogg
SPEED   =   15


Während dem Spiel einlesen mit:

BlitzBasic: [AUSKLAPPEN]

File% = ReadFile(\"settings.dat\") : If File = 0 End
Repeat
tmp$ = ReadLine(File)

command$ = Trim(Str_Explode$(tmp$, \"=\", 0)) ; ALLES WAS LINKS VOM '=' IST
params$ = Trim(Str_Explode$(tmp$, \"=\", 1)) ; ALLES WAS RECHTS VOM '=' IST

Select command$

Case \"MODEL\" Model\file$ = params$
Case \"SOUND\" Model\sound$ = params$
Case \"SPEED\" Model\speed = params$

Case \"COLOR\"
Model\R = Str_Explode$(params$, \",\", 0)
Model\G = Str_Explode$(params$, \",\", 1)
Model\B = Str_Explode$(params$, \",\", 2)

Case \"SCALE\"
Model\scalex = Str_Explode$(params$, \",\", 0)
Model\scaley = Str_Explode$(params$, \",\", 1)
Model\scalez = Str_Explode$(params$, \",\", 2)

End Select

Until Eof(File) = 1
CloseFile File


Und dazu brauchst du noch folgende nützliche Funktion (trennt einen String in Teile - z.B. bei jedem gefundenen Komma - und gibt dann einen der Teile zurück):

BlitzBasic: [AUSKLAPPEN]

;---------------------------------------------------
; SPLITS A STRING INTO FRAGMENTS, USING A SPLIT
; CHARACTER AND RETURNS A SPECIFIED SEGMENT
; SECTION = FRAGMENT TO RETURN (0 - ...) -1 FOR LAST
;---------------------------------------------------
Function Str_Explode$(txt$, divider$, section%)

Local sec% = 0
Local tmp$ = \"\"
Local sections% = 0

; COUNT FRAGMENTS
For i% = 1 To Len(txt$)
If Mid(txt$,i,1) = divider$ Then sections = sections + 1
Next

; RETURN LAST FRAGMENT?
If section = -1 Then section = sections

For i% = 1 To Len(txt$)
char$ = Mid(txt$,i,1)
If char$ = divider$ Then sec = sec + 1 : i = i + 1 : char$ = Mid(txt$,i,1)
If sec = section Then tmp$ = tmp$ + char$
Next

Return tmp$

End Function
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

5k41

BeitragFr, Dez 30, 2005 12:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Die sache is das ich das
1. Mit Strukturen oder Types oder wie das hier auch imma heißt mach
2. Gleich noch ein paar IFs etc. eingebaut hab, da das sonst noch komplexer gewesen wär...

sone kacke...
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

x-pressive

BeitragFr, Dez 30, 2005 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte keine Handy-Sprache benutzen, ich hab jetzt leider kein Wort von verstanden Wink

Kannst du das ein bisschen exakter erklären?
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

5k41

BeitragFr, Dez 30, 2005 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
mh? was genau verstehst du nich?

~Edit~
Axo ja die sache ist das ich nicht nur ganz normale Variablen definieren muss sondern das alles mit types mach ( bei c++ heißt das struktur) und ich weiss nicht wie ich das dann nach deinem beispiel machen soll...
und sowieso benutze ich in den auslagerungen IFs (mehrzahl von If ) also :
IF Selection = 1 then
blablablablablabla
endif
...hoffe du hast das nun verstanden...
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

Nox

BeitragFr, Dez 30, 2005 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Da wirfst du aber einige C++-Begriffe durcheinander, aber das soll jetzt mal keine Rolle spielen.
Wenn ich das richtig verstehe, möchtest du in externen Dateien Settings für dein Spiel festlegen. x-pressive hat dir doch den richtigen Ansatz geschrieben. Sein Beispiel reicht aber halt auch wirklich nur für Eigenschaften von Dingen aus. Wenn dir das schon reicht, müsste dein Problem erledigt sein.
Möchtest du allerdings die Verhaltensweise in deinem Spiel austauschen und modifizieren können, bedarf es komplexerer Sachen. Entweder schreibst du dir eine kleine, eigene Scriptsprache, die deinen Bedürfnissen entspricht, oder du lagerst das Verhalten, welches modular sein soll, in eine externe DLL, welche dann selbstverständlich geändert werden kann, ohne die Exe deines Spiels anzurühren.

x-pressive

BeitragFr, Dez 30, 2005 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
@5k41: Meinst du vielleicht, daß du im EXTERNEN File if..then und Types verwendest? Müsstest du schon dazuschreiben, ich ging jetzt dauernd davon aus, daß du in deinem HAUPTPROGRAMM Types nutzt und nicht weisst, wie du das einbinden sollst, obwohl mein Beispiel ja noch extra Types benutzt.

In der externen Datei kannst du keine BASIC statements verwenden, da die beim Kompilieren ja alle übersetzt und gleich eingebunden werden. BB ist keine Interpretersprache (wie z.B. JavaScript oder ActionScript), wo man auch während der Laufzeit beliebig Quellcode einladen kann.

Also: entweder gleich fest in den Quellcode -oder als externe, editierbare Settings-Datei, die z.B. wie mein Beispiel weiter oben aufgebaut ist. So machen's auch die Profi's (siehe Far Cry etc.)
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

dark19

Gast

BeitragFr, Dez 30, 2005 15:14
Antworten mit Zitat
Wenn mann alles is Variablen speichert könnte mann mit nem memory editor(z.b tsearch) alles änder und dann mit Trainer maker kit eine mod exe machen die diese varieablen ändern

5k41

BeitragFr, Dez 30, 2005 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
jop das war mir schon vorher klar und is mir eigentlich auch ziemlich egal, da das game sowieso nur im kleineren kreisen verkehren wird^^...naja ich werd das jetzt erstmal so lassen und halt für jeden mod die exe neu erstellen...-.-...

~Edit~
Zu der Skriptsprache: Ich werd mich dran erinnern wenn ich wirklich mal sowas vorhaben sollte...danke!
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

Nox

BeitragFr, Dez 30, 2005 18:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist vorallem wirklich nicht schwer, solang man sich nicht zuviel vornimmt. Oft reicht eine Mini-Sprache, die grad mal einige Alternativen kennt.

x-pressive

BeitragFr, Dez 30, 2005 19:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, machbar ist fast alles -aber ob der Aufwand dann noch in einem vernünftigen Verhältnis steht? Smile

dark19 hat Folgendes geschrieben:
Wenn mann alles is Variablen speichert könnte mann mit nem memory editor(z.b tsearch) alles änder und dann mit Trainer maker kit eine mod exe machen die diese varieablen ändern


Solche Hacks würde ich mit äusserster Vorsicht einsetzen -das sind dann oft genau jene Lösungen, die einem im schlimmsten Fall zigfach böse Support-Mails bescheren, weil's nur bei 30% aller User oder nur unter einem bestimmten Betriebssystem funktioniert. (so, und hier müsste jetzt der Grummel-Smiley hin, aber den gibt es momentan ja nicht mehr)
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group