Ich habe seit längerem (2012) nicht mehr an einem Projekt gearbeitet. Versuche ich das in einer aktuelleren Version zu kompilieren bekomme ich den Fehler:
Structure UNIT
Active.b ; useable
Visible.b ; Visible?
TypeOfUnit.b ; ground/air
OwnerID.l ; playerID (list)
PlayerName${20}
uniqueID${12}
SpriteID.l ; ID
Sprite3DID.l ; ID
Sprite3DID_shadow.l ; Sprite for shadow
Sprite3DID_2.l ; 2nd ID for Laserbeam
Animation_Timer.l ; elapsedmiliseconds
Animation_SpriteID.l; First Sprite of Animation
Animation_ActualFrame.b
Animation_Frames.b ; No of sprites following
Animation_Delay.w ; ms between frames
SpriteWidth.w ; width in px
SpriteHeight.w ; height in px
TimeCreated.l ; Time Element was created
TimeActive.l ; Delay when Element will be started/draw/executed ..
InfoSpriteID.l ; a separate sprite for unit information
Name${32} ; string
AImode.b ; Configuration for AI
ViewRange.w
XPforDestroying.w ; XPs
HackingSuccess.w ; in %
HackingTimer.l
HackingReloadTimer.w ;
PosX.f ; px
PosY.f ; px
Angle.f
Moveable.b ; true/false
MoveToX.w ; px
MoveToY.w ; px
AttackSprite.l
*AttackerElementHND.l <<<<<<<<----- HIER und wohl auch fortfahren bei allen mit *
*TargetElementHND.l
EnergySpriteID.l
Energy.b ; amount max 100
EnergyReloadTimer.w ; Break between reloading energy amount
EnergyToMove.b ;
EnergyTimer.l ; last energy-kick
HealthSpriteID.l
Health.w ; amount
FullHealth.w ; amount
HealthReloadTimer.w ; time to heal in ms
HealthTimer.l ; timer
; Shield.b ; %
Speed.w ; amount
AmmoSpriteID.l
Ammo.w ; amount
AmmoPower.w ; amount
AmmoLoad.w ; amount
AmmoSpeed.w ; amount
AmmoType.l ; Ammo SpriteID
AmmoReloadTimer.w ; Time to reload in ms
AmmoLastShotTimer.l ; Reloadtimer
AmmoRange.w ; blocks
AmmoRadio.b ; Explosion-Radius in blocks
AmmoFailChance.w ;
EnemiesKilled.w
CargoLoad.w ; amount
MaxCargo.w ; amout
CargoLoadTimer.l ; Time to pick up cargo/collect (iron)
CargoTimer.l ; timer to wait for next collecting / loading
OperationMode.b
BuildResource.l ; sprite id resource
BuildCosts.w ; amount
BuildTime.l ; When build
BuildDelay.w ; time to build
dummy.f ; for anything
EndStructure
Unter PB 5.0 habe ich gerade getestet geht es noch. In einer neueren PB nicht mehr.
Gibt es eine einfache Lösung das Problem in eine aktuelle PB zu bekommen ohne 11.000 Zeilen Code zu überarbeiten oder bleibt mir nur 5.0 zu nutzen?
Structure UNIT
Active.b ; useable
Visible.b ; Visible?
TypeOfUnit.b ; ground/air
OwnerID.l ; playerID (list)
PlayerName${20}
uniqueID${12}
SpriteID.l ; ID
Sprite3DID.l ; ID
Sprite3DID_shadow.l ; Sprite for shadow
Sprite3DID_2.l ; 2nd ID for Laserbeam
Animation_Timer.l ; elapsedmiliseconds
Animation_SpriteID.l; First Sprite of Animation
Animation_ActualFrame.b
Animation_Frames.b ; No of sprites following
Animation_Delay.w ; ms between frames
SpriteWidth.w ; width in px
SpriteHeight.w ; height in px
TimeCreated.l ; Time Element was created
TimeActive.l ; Delay when Element will be started/draw/executed ..
InfoSpriteID.l ; a separate sprite for unit information
Name${32} ; string
AImode.b ; Configuration for AI
ViewRange.w
XPforDestroying.w ; XPs
HackingSuccess.w ; in %
HackingTimer.l
HackingReloadTimer.w ;
PosX.f ; px
PosY.f ; px
Angle.f
Moveable.b ; true/false
MoveToX.w ; px
MoveToY.w ; px
AttackSprite.l
*AttackerElementHND
*TargetElementHND
EnergySpriteID.l
Energy.b ; amount max 100
EnergyReloadTimer.w ; Break between reloading energy amount
EnergyToMove.b ;
EnergyTimer.l ; last energy-kick
HealthSpriteID.l
Health.w ; amount
FullHealth.w ; amount
HealthReloadTimer.w ; time to heal in ms
HealthTimer.l ; timer
; Shield.b ; %
Speed.w ; amount
AmmoSpriteID.l
Ammo.w ; amount
AmmoPower.w ; amount
AmmoLoad.w ; amount
AmmoSpeed.w ; amount
AmmoType.l ; Ammo SpriteID
AmmoReloadTimer.w ; Time to reload in ms
AmmoLastShotTimer.l ; Reloadtimer
AmmoRange.w ; blocks
AmmoRadio.b ; Explosion-Radius in blocks
AmmoFailChance.w ;
EnemiesKilled.w
CargoLoad.w ; amount
MaxCargo.w ; amout
CargoLoadTimer.l ; Time to pick up cargo/collect (iron)
CargoTimer.l ; timer to wait for next collecting / loading
OperationMode.b
BuildResource.l ; sprite id resource
BuildCosts.w ; amount
BuildTime.l ; When build
BuildDelay.w ; time to build
dummy.f ; for anything
EndStructure
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Zur Erklärung: Pointer mit einem nativen Typ haben noch nie Sinn gemacht, deswegen wurden sie logischerweise verboten. Nur Pointer mit einer Struktur machen Sinn.
Erklärung: Zeiger (Pointer) haben keinen nativen Typ, da heißt sie sind weder Long, Word oder Integer. Es sind
Speicheradressen (deren Wert in ein Integer paßt, aber kein Integer ist).
//edit
zu spät
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Agent hat geschrieben:Sehe ich das richtig, da steht mir viel arbeit bevor alles auf die aktuellen Sprite-Befehle zu ändern?
Das Ändern nicht, aber gewöhn Dich schon mal dran, daß die Befehle nicht das machen, was Du erwartest.
Gerade das TransparantSprite mit Alphachannel kann da sehr zickig und unberechenbar sein. Das reagiert schon anders, wenn Du nur zwischen OpenGL und DirectX wechselst.