Difference de taille de l'exe PB 3.94 -> PB 4.00
Publié : dim. 05/févr./2006 17:53
Tout d'abord, bravo et merci à toute l'équipe pour ce bel outil
un des points de la version 4 est qu'elle permet de faire un executable plus petit que son prédécesseur, or j'ai un programme qui est plus gros en v4 qu'en v3.94 de 29.5Ko je passes à 33Ko
je vous livre les deux sources, j'aimerais que vous m'indiquiez si vous avez la même chose et pourquoi
D'avance merci
version PB3.94
Version PV4.00b1
PS : Ne regardez pas trop le code, j'ai programmé comme un gougnafier
un des points de la version 4 est qu'elle permet de faire un executable plus petit que son prédécesseur, or j'ai un programme qui est plus gros en v4 qu'en v3.94 de 29.5Ko je passes à 33Ko
je vous livre les deux sources, j'aimerais que vous m'indiquiez si vous avez la même chose et pourquoi
D'avance merci
version PB3.94
Code : Tout sélectionner
Global hwnd_gadget.l
Global Resultat.l
NewList Text_Ogame.s() ; Liste de 'string'
#Title = "__OGAME__ [Flaith 2005 v0.09a]"
Enumeration
#Window_Ogame
#Panel
#Tab_1
#Tab_2
#Text_from_web
#Gadget_Form_Text
#Button_Paste
#Button_Extract
#Button_Save
#Button_Quit
#Button_OK
#Gadget_Form_Editor_Output
#Gadget_Form_Editor_File
#Gadget_Info_Line
#Label_1
#Label_Line
#Liste
#overview
#imperium
#messages
EndEnumeration
;- Fonts
;
Global FontID1
FontID1 = LoadFont(1, "Verdana", 10, #PB_Font_Bold)
Global FontID2
FontID2 = LoadFont(2, "Verdana", 8) ;, #PB_Font_Italic)
Global FontID3
FontID3 = LoadFont(3, "Terminal", 6) ;, #PB_Font_Italic)
Global FontID4
FontID4 = LoadFont(4, "Courier New", 8) ;, #PB_Font_Bold)
Global session.s
; // METTRE N° DE SESSION ICI
session = "25b0150b68a0"
Procedure.l Window_Ogame()
If OpenWindow(#Window_Ogame,80,80,740,625,#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_Invisible,#Title)
If CreateGadgetList(WindowID(#Window_Ogame))
PanelGadget(#Panel,10,10,725,610)
AddGadgetItem(#Panel,-1,"OGAME")
SetGadgetFont(#Panel,FONTID4)
hwnd_gadget=EditorGadget(#Text_from_web,5,25,645,555)
SetGadgetFont(#Text_from_web,FONTID4)
SendMessage_(hwnd_gadget, #EM_SETREADONLY , #True, #Null) ;On ne peut rien saisir
;TextGadget(#Label_1,5,8,700,15,"<Paste the "+Chr(34)+"EMPIRE"+Chr(34)+" area just bellow>")
; SetGadgetFont(#Label_1,FONTID4)
TextGadget(#Label_1,5,8,700,15,"Clic on the "+Chr(34)+"Paste"+Chr(34)+" button !!!")
SetGadgetFont(#Label_1,FONTID4)
TextGadget(#Label_Line,655,565,50,15,"0 Line")
SetGadgetFont(#Label_Line,FONTID3)
ButtonGadget(#Button_Paste,655,25,60,40,"&Paste")
SetGadgetFont(#Button_Paste,FONTID4)
ButtonGadget(#Button_Extract,655,70,60,40,"E&xtract")
SetGadgetFont(#Button_Extract,FONTID4)
ButtonGadget(#Button_Save,655,115,60,40,"&Save")
SetGadgetFont(#Button_Save,FONTID4)
ButtonGadget(#Button_Quit,655,205,60,40,"&Quit")
SetGadgetFont(#Button_Quit,FONTID4)
AddGadgetItem(#Panel,-1,"Pages WEB")
SetGadgetFont(#Panel,FONTID4)
;WebGadget(#overview,5,45,645,505,"http://ogame314.de/game/overview.php?session="+session)
ComboBoxGadget(#Liste, 5, 15, 400, 100)
AddGadgetItem(#Liste,-1,"Vue Générale")
AddGadgetItem(#Liste,-1,"Empire")
AddGadgetItem(#Liste,-1,"Messages")
SetGadgetState(#liste,0)
; AddGadgetItem(#Panel,-1,"Empire")
; SetGadgetFont(#Panel,FONTID4)
; WebGadget(#imperium,5,25,645,555,"http://ogame314.de/game/imperium.php?session="+session+"&planettype=1")
;
; AddGadgetItem(#Panel,-1,"Messages")
; SetGadgetFont(#Panel,FONTID4)
; WebGadget(#messages,5,25,645,555,"http://ogame314.de/game/messages.php?session="+session)
; EditorGadget(#Gadget_Form_Editor_File,5,5,710,555)
; SetGadgetFont(#Gadget_Form_Editor_File,FONTID1)
; TextGadget(#Gadget_Info_Line,5,570,60,15,"0 Line")
; ButtonGadget(#Button_OK,655,565,60,20,"Calcul")
CloseGadgetList()
ActivateGadget(#Text_from_web)
HideWindow(#Window_Ogame,0)
ProcedureReturn WindowID()
EndIf
EndIf
EndProcedure
Procedure proc_Do(TheVal.l)
Dim planet.s(10)
Dim metal.s(10)
Dim cristal.s(10)
Dim deuterium.s(10)
Protected val_metal.l
Protected cristal.l
Protected deuterium.l
Select TheVal
Case 1 ; Paste
clip.s = GetClipboardText() ; on récupère ce qu'il y a dans le clipboard
If FindString(clip,"Vue d'ensemble de votre empire",0) < 1 ; position du string < 1 donc pas trouvé
MessageRequester("Information","Not the "+Chr(34)+"Empire"+Chr(34)+" stuff !!!",0)
Else ; ce sont les bonnes infos, on continu
If Len(clip) < 100 ; si c'est inférieur à 100 car. on a pas copié
MessageRequester("Information","Nothing has been Copied !!!",0) ; la zone complète "empire" d'ogame
Else
SetGadgetText(#Text_from_web, clip) ; on affiche ce que l'on a copié
Resultat = 0
Resultat = CountGadgetItems(#Text_from_web) ; nbre de lignes total
If Resultat <> 0
SetGadgetText(#Label_Line, Str(Resultat)+" Line(s)") ; on affiche le nombre de lignes
Else
MessageRequester("Information","Nothing has been Copied !!!",0)
EndIf
ActivateGadget(#Text_from_web) ; focus sur le zone texte
EndIf
EndIf
Case 2 ; Extract
If Resultat <> 0 ; si nbre de lignes <> 0
ClearList(Text_Ogame())
For i = 0 To Resultat
text.s = GetGadgetItemText(#Text_from_web,i,0) ; on récupère chaque ligne
text = Trim(ReplaceString(text, Chr(9), "|")) ; on change tab par un "|" et trim les espaces
If Len(text) > 5 ; au moins 5 Car ; on met dans une liste chaque ligne du texte
;-// NOM DES PLANETES
If UCase(Left(text,3)) = "NOM" ; ici on récupère le nom des planètes
NB_Planet = CountString(text, "|") ; Le nombre de planètes
If NB_Planet > 0
Chaine.s = RemoveString(text, "Nom |", 1)
Lines$ = ""
For Nb = 1 To nb_planet
planet(Nb) = Trim(StringField(chaine, Nb, "|"))
Lines$ = Lines$ + "[" + planet(nb) + "]" + Chr(13) + Chr(10)
Next
EndIf
EndIf
;-// METAL
If Left(text,5) = "Métal"
If NB_Planet > 0
Chaine.s = RemoveString(text, "Métal |", 1)
val_metal = 0
For Nb = 1 To nb_planet
metal(Nb) = Trim(StringField(chaine, Nb, "|"))
Next
For Nb = 1 To nb_planet
metal(Nb) = RemoveString(metal(nb),".",1)
metal(Nb) = ReplaceString(metal(nb)," ","",1,1)
val_metal = val_metal + Val(StringField(metal(Nb),1,"/"))
Next
Lines$ = Lines$ + Chr(13) + Chr(10) + "Valeur total de métal = "+Str(val_metal)
EndIf
EndIf
;-// CRISTAL
If Left(text,5) = "Crist"
If NB_Planet > 0
Chaine.s = RemoveString(text, "Cristal |", 1)
val_cristal = 0
For Nb = 1 To nb_planet
cristal(Nb) = Trim(StringField(chaine, Nb, "|"))
Next
For Nb = 1 To nb_planet
cristal(Nb) = RemoveString(cristal(nb),".",1)
cristal(Nb) = ReplaceString(cristal(nb)," ","",1,1)
val_cristal = val_cristal + Val(StringField(cristal(Nb),1,"/"))
Next
Lines$ = Lines$ + Chr(13) + Chr(10) + "Valeur total de cristal = "+Str(val_cristal)
EndIf
EndIf
;-// DEUTERIUM
If Left(text,5) = "Deuté"
If NB_Planet > 0
Chaine.s = RemoveString(text, "Deutérium |", 1)
val_deuterium = 0
For Nb = 1 To nb_planet
deuterium(Nb) = Trim(StringField(chaine, Nb, "|"))
Next
For Nb = 1 To nb_planet
deuterium(Nb) = RemoveString(deuterium(nb),".",1)
deuterium(Nb) = ReplaceString(deuterium(nb)," ","",1,1)
val_deuterium = val_deuterium + Val(StringField(deuterium(Nb),1,"/"))
Next
Lines$ = Lines$ + Chr(13) + Chr(10) + "Valeur total de deutérium = "+Str(val_deuterium)
EndIf
EndIf
AddElement(Text_Ogame())
Text_Ogame() = text
EndIf
Next i
SetGadgetText(#Text_from_web,"") ; efface la zone texte
ResetList(Text_Ogame()) ; top de la liste des éléments
While NextElement(Text_Ogame()) ; tant qu'il y a un élément suivant
AddGadgetItem(#Text_from_web,-1,Text_Ogame(),0) ; on ajoute dans la zone texte l'élément
Wend
SetGadgetText(#Label_Line, Str(CountList(Text_Ogame()))+" Line(s)")
If NB_Planet > 0
MessageRequester("Planet","Your planets : "+Chr(13)+Chr(10)+Lines$,0)
EndIf
Else
MessageRequester("Information","You must paste first !!!",0) ; si nbre de ligne = 0
EndIf
Case 3
EndSelect
EndProcedure
;-Main Loop
If Window_Ogame()
SendMessage_(hwnd_gadget, #EM_SETBKGNDCOLOR, 0, RGB(180,180,180)) ; couleur de fond
quitForm=0
AddElement(Text_Ogame())
Repeat
EventID =WaitWindowEvent()
MenuID =EventMenuID()
GadgetID =EventGadgetID()
WindowID =EventWindowID()
Select EventID
Case #PB_Event_CloseWindow
If WindowID=#Window_Ogame
quitForm=1
EndIf
Case #PB_Event_Gadget
Select GadgetID
Case #Tab_1
Case #Tab_2
Case #Text_from_web
Case #Button_Paste
proc_Do(1)
Case #Button_Extract
proc_Do(2)
Case #Button_Save
; proc_Do(3)
Case #Liste
; valeur_combo.l = GetGadgetState(#liste)
; Select valeur_combo
; Case 0
; WebGadget(#overview,5,45,645,505,"http://ogame314.de/game/overview.php?session="+session)
; Case 1
; WebGadget(#imperium,5,45,645,505,"http://ogame314.de/game/imperium.php?session="+session+"&planettype=1")
; Case 2
; WebGadget(#messages,5,45,645,505,"http://ogame314.de/game/messages.php?session="+session)
; EndSelect
Case #Button_Quit
quitForm = 1
Case #Gadget_Form_Editor_File
; Case #Button_OK
EndSelect
EndSelect
Until quitForm
CloseWindow(#Window_Ogame)
EndIf
End
DataSection
labels:
Data.s "Ressources","Bâtiments","Recherche","Vaisseaux","Défense"
Ressources:
Data.s "Nom","Métal","Cristal","Deutérium","Energie"
Batiments:
Data.s "Mine de métal","Mine de cristal","Synthétiseur de deutérium","Centrale électrique solaire"
Data.s "Centrale électrique de fusion","Usine de robots","Usine de nanites","Chantier spatial"
Data.s "Hangar de métal","Hangar de cristal","Réservoir de deutérium","Laboratoire de recherche"
Data.s "Silo de missiles"
Recherche:
Data.s "Technologie Espionnage","Technologie Ordinateur","Technologie Armes","Technologie Bouclier"
Data.s "Technologie Protection des vaisseaux spatiaux","Technologie Energie","Technologie Hyperespace"
Data.s "Réacteur à combustion","Réacteur à impulsion","Propulsion hyperespace","Technologie Laser"
Data.s "Technologie Ions","Technologie Plasma"
Vaisseaux:
Data.s "Petit transporteur","Grand transporteur","Chasseur léger","Chasseur lourd","Croiseur"
Data.s "Vaisseau de bataille","Vaisseau de colonisation","Recycleur","Sonde espionnage"
Data.s "Bombardier","Satellite solaire"
Defense:
Data.s "Lanceur de missiles","Artillerie laser légère","Artillerie laser lourde","Canon de Gauss"
Data.s "Artillerie à ions","Petit bouclier","Grand bouclier","Missile Interception"
EndDataSection
Code : Tout sélectionner
Global hwnd_gadget.l
Global Resultat.l
Global NewList Text_Ogame.s() ; Liste de 'string'
#Title = "__OGAME__ [Flaith 2005 v0.09a]"
Enumeration
#Window_Ogame
#Panel
#Tab_1
#Tab_2
#Text_from_web
#Gadget_Form_Text
#Button_Paste
#Button_Extract
#Button_Save
#Button_Quit
#Button_OK
#Gadget_Form_Editor_Output
#Gadget_Form_Editor_File
#Gadget_Info_Line
#Label_1
#Label_Line
#Liste
#overview
#imperium
#messages
EndEnumeration
;- Fonts
;
Global FontID1
FontID1 = LoadFont(1, "Verdana", 10, #PB_Font_Bold)
Global FontID2
FontID2 = LoadFont(2, "Verdana", 8) ;, #PB_Font_Italic)
Global FontID3
FontID3 = LoadFont(3, "Terminal", 6) ;, #PB_Font_Italic)
Global FontID4
FontID4 = LoadFont(4, "Courier New", 8) ;, #PB_Font_Bold)
Global session.s
; // METTRE N° DE SESSION ICI
session = "25b0150b68a0"
Procedure.l Window_Ogame()
If OpenWindow(#Window_Ogame,80,80,740,625,#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_Invisible,#Title)
If CreateGadgetList(WindowID(#Window_Ogame))
PanelGadget(#Panel,10,10,725,610)
AddGadgetItem(#Panel,-1,"OGAME")
SetGadgetFont(#Panel,FONTID4)
hwnd_gadget=EditorGadget(#Text_from_web,5,25,645,555)
SetGadgetFont(#Text_from_web,FONTID4)
SendMessage_(hwnd_gadget, #EM_SETREADONLY , #True, #Null) ;On ne peut rien saisir
;TextGadget(#Label_1,5,8,700,15,"<Paste the "+Chr(34)+"EMPIRE"+Chr(34)+" area just bellow>")
; SetGadgetFont(#Label_1,FONTID4)
TextGadget(#Label_1,5,8,700,15,"Clic on the "+Chr(34)+"Paste"+Chr(34)+" button !!!")
SetGadgetFont(#Label_1,FONTID4)
TextGadget(#Label_Line,655,565,50,15,"0 Line")
SetGadgetFont(#Label_Line,FONTID3)
ButtonGadget(#Button_Paste,655,25,60,40,"&Paste")
SetGadgetFont(#Button_Paste,FONTID4)
ButtonGadget(#Button_Extract,655,70,60,40,"E&xtract")
SetGadgetFont(#Button_Extract,FONTID4)
ButtonGadget(#Button_Save,655,115,60,40,"&Save")
SetGadgetFont(#Button_Save,FONTID4)
ButtonGadget(#Button_Quit,655,205,60,40,"&Quit")
SetGadgetFont(#Button_Quit,FONTID4)
AddGadgetItem(#Panel,-1,"Pages WEB")
SetGadgetFont(#Panel,FONTID4)
;WebGadget(#overview,5,45,645,505,"http://ogame314.de/game/overview.php?session="+session)
ComboBoxGadget(#Liste, 5, 15, 400, 100)
AddGadgetItem(#Liste,-1,"Vue Générale")
AddGadgetItem(#Liste,-1,"Empire")
AddGadgetItem(#Liste,-1,"Messages")
SetGadgetState(#liste,0)
; AddGadgetItem(#Panel,-1,"Empire")
; SetGadgetFont(#Panel,FONTID4)
; WebGadget(#imperium,5,25,645,555,"http://ogame314.de/game/imperium.php?session="+session+"&planettype=1")
;
; AddGadgetItem(#Panel,-1,"Messages")
; SetGadgetFont(#Panel,FONTID4)
; WebGadget(#messages,5,25,645,555,"http://ogame314.de/game/messages.php?session="+session)
; EditorGadget(#Gadget_Form_Editor_File,5,5,710,555)
; SetGadgetFont(#Gadget_Form_Editor_File,FONTID1)
; TextGadget(#Gadget_Info_Line,5,570,60,15,"0 Line")
; ButtonGadget(#Button_OK,655,565,60,20,"Calcul")
CloseGadgetList()
SetActiveGadget(#Text_from_web)
HideWindow(#Window_Ogame,0)
ProcedureReturn WindowID(#Window_Ogame)
EndIf
EndIf
EndProcedure
Procedure proc_Do(TheVal.l)
Dim planet.s(10)
Dim metal.s(10)
Dim cristal.s(10)
Dim deuterium.s(10)
Protected val_metal.l
Protected cristal.l
Protected deuterium.l
Select TheVal
Case 1 ; Paste
clip.s = GetClipboardText() ; on récupère ce qu'il y a dans le clipboard
If FindString(clip,"Vue d'ensemble de votre empire",0) < 1 ; position du string < 1 donc pas trouvé
MessageRequester("Information","Not the "+Chr(34)+"Empire"+Chr(34)+" stuff !!!",0)
Else ; ce sont les bonnes infos, on continu
If Len(clip) < 100 ; si c'est inférieur à 100 car. on a pas copié
MessageRequester("Information","Nothing has been Copied !!!",0) ; la zone complète "empire" d'ogame
Else
SetGadgetText(#Text_from_web, clip) ; on affiche ce que l'on a copié
Resultat = 0
Resultat = CountGadgetItems(#Text_from_web) ; nbre de lignes total
If Resultat <> 0
SetGadgetText(#Label_Line, Str(Resultat)+" Line(s)") ; on affiche le nombre de lignes
Else
MessageRequester("Information","Nothing has been Copied !!!",0)
EndIf
SetActiveGadget(#Text_from_web) ; focus sur le zone texte
EndIf
EndIf
Case 2 ; Extract
If Resultat <> 0 ; si nbre de lignes <> 0
ClearList(Text_Ogame())
For i = 0 To Resultat
text.s = GetGadgetItemText(#Text_from_web,i,0) ; on récupère chaque ligne
text = Trim(ReplaceString(text, Chr(9), "|")) ; on change tab par un "|" et trim les espaces
If Len(text) > 5 ; au moins 5 Car ; on met dans une liste chaque ligne du texte
;-// NOM DES PLANETES
If UCase(Left(text,3)) = "NOM" ; ici on récupère le nom des planètes
NB_Planet = CountString(text, "|") ; Le nombre de planètes
If NB_Planet > 0
Chaine.s = RemoveString(text, "Nom |", 1)
Lines$ = ""
For Nb = 1 To nb_planet
planet(Nb) = Trim(StringField(chaine, Nb, "|"))
Lines$ = Lines$ + "[" + planet(nb) + "]" + Chr(13) + Chr(10)
Next
EndIf
EndIf
;-// METAL
If Left(text,5) = "Métal"
If NB_Planet > 0
Chaine.s = RemoveString(text, "Métal |", 1)
val_metal = 0
For Nb = 1 To nb_planet
metal(Nb) = Trim(StringField(chaine, Nb, "|"))
Next
For Nb = 1 To nb_planet
metal(Nb) = RemoveString(metal(nb),".",1)
metal(Nb) = ReplaceString(metal(nb)," ","",1,1)
val_metal = val_metal + Val(StringField(metal(Nb),1,"/"))
Next
Lines$ = Lines$ + Chr(13) + Chr(10) + "Valeur total de métal = "+Str(val_metal)
EndIf
EndIf
;-// CRISTAL
If Left(text,5) = "Crist"
If NB_Planet > 0
Chaine.s = RemoveString(text, "Cristal |", 1)
val_cristal = 0
For Nb = 1 To nb_planet
cristal(Nb) = Trim(StringField(chaine, Nb, "|"))
Next
For Nb = 1 To nb_planet
cristal(Nb) = RemoveString(cristal(nb),".",1)
cristal(Nb) = ReplaceString(cristal(nb)," ","",1,1)
val_cristal = val_cristal + Val(StringField(cristal(Nb),1,"/"))
Next
Lines$ = Lines$ + Chr(13) + Chr(10) + "Valeur total de cristal = "+Str(val_cristal)
EndIf
EndIf
;-// DEUTERIUM
If Left(text,5) = "Deuté"
If NB_Planet > 0
Chaine.s = RemoveString(text, "Deutérium |", 1)
val_deuterium = 0
For Nb = 1 To nb_planet
deuterium(Nb) = Trim(StringField(chaine, Nb, "|"))
Next
For Nb = 1 To nb_planet
deuterium(Nb) = RemoveString(deuterium(nb),".",1)
deuterium(Nb) = ReplaceString(deuterium(nb)," ","",1,1)
val_deuterium = val_deuterium + Val(StringField(deuterium(Nb),1,"/"))
Next
Lines$ = Lines$ + Chr(13) + Chr(10) + "Valeur total de deutérium = "+Str(val_deuterium)
EndIf
EndIf
AddElement(Text_Ogame())
Text_Ogame() = text
EndIf
Next i
SetGadgetText(#Text_from_web,"") ; efface la zone texte
ResetList(Text_Ogame()) ; top de la liste des éléments
While NextElement(Text_Ogame()) ; tant qu'il y a un élément suivant
AddGadgetItem(#Text_from_web,-1,Text_Ogame(),0) ; on ajoute dans la zone texte l'élément
Wend
SetGadgetText(#Label_Line, Str(CountList(Text_Ogame()))+" Line(s)")
If NB_Planet > 0
MessageRequester("Planet","Your planets : "+Chr(13)+Chr(10)+Lines$,0)
EndIf
Else
MessageRequester("Information","You must paste first !!!",0) ; si nbre de ligne = 0
EndIf
Case 3
EndSelect
EndProcedure
;-Main Loop
If Window_Ogame()
SendMessage_(hwnd_gadget, #EM_SETBKGNDCOLOR, 0, RGB(180,180,180)) ; couleur de fond
quitForm=0
AddElement(Text_Ogame())
Repeat
EventID =WaitWindowEvent()
MenuID =EventMenu()
GadgetID =EventGadget()
WindowID =EventWindow()
Select EventID
Case #PB_Event_CloseWindow
If WindowID=#Window_Ogame
quitForm=1
EndIf
Case #PB_Event_Gadget
Select GadgetID
Case #Tab_1
Case #Tab_2
Case #Text_from_web
Case #Button_Paste
proc_Do(1)
Case #Button_Extract
proc_Do(2)
Case #Button_Save
; proc_Do(3)
Case #Liste
; valeur_combo.l = GetGadgetState(#liste)
; Select valeur_combo
; Case 0
; WebGadget(#overview,5,45,645,505,"http://ogame314.de/game/overview.php?session="+session)
; Case 1
; WebGadget(#imperium,5,45,645,505,"http://ogame314.de/game/imperium.php?session="+session+"&planettype=1")
; Case 2
; WebGadget(#messages,5,45,645,505,"http://ogame314.de/game/messages.php?session="+session)
; EndSelect
Case #Button_Quit
quitForm = 1
Case #Gadget_Form_Editor_File
; Case #Button_OK
EndSelect
EndSelect
Until quitForm
CloseWindow(#Window_Ogame)
EndIf
End
DataSection
labels:
Data.s "Ressources","Bâtiments","Recherche","Vaisseaux","Défense"
Ressources:
Data.s "Nom","Métal","Cristal","Deutérium","Energie"
Batiments:
Data.s "Mine de métal","Mine de cristal","Synthétiseur de deutérium","Centrale électrique solaire"
Data.s "Centrale électrique de fusion","Usine de robots","Usine de nanites","Chantier spatial"
Data.s "Hangar de métal","Hangar de cristal","Réservoir de deutérium","Laboratoire de recherche"
Data.s "Silo de missiles"
Recherche:
Data.s "Technologie Espionnage","Technologie Ordinateur","Technologie Armes","Technologie Bouclier"
Data.s "Technologie Protection des vaisseaux spatiaux","Technologie Energie","Technologie Hyperespace"
Data.s "Réacteur à combustion","Réacteur à impulsion","Propulsion hyperespace","Technologie Laser"
Data.s "Technologie Ions","Technologie Plasma"
Vaisseaux:
Data.s "Petit transporteur","Grand transporteur","Chasseur léger","Chasseur lourd","Croiseur"
Data.s "Vaisseau de bataille","Vaisseau de colonisation","Recycleur","Sonde espionnage"
Data.s "Bombardier","Satellite solaire"
Defense:
Data.s "Lanceur de missiles","Artillerie laser légère","Artillerie laser lourde","Canon de Gauss"
Data.s "Artillerie à ions","Petit bouclier","Grand bouclier","Missile Interception"
EndDataSection