Nice!!! It works! I remade all the sprites, new paths, new template name, new instance name, and it works! oh man that was nice to see! all thats left is merging this script with the script i had before (split screen, jump button, & forced scrolling for 2 levels).
Original Script
' ======== INITIAL STARTUP SCRIPT (Number 0) =========
Sub Player_OnPlayInit()
HostObj.StartScript=1
End Sub
HostObj.SinkObjectEvents ProjectObj.GamePlayer, "Player"
HostObj.ConnectEventsNow()
ProjectObj.GamePlayer.Play 16
#Split == Runtime Script (Number 1)
Option Explicit
Dim XOff, YOff
Dim P2OffsetX, P2OffsetY
Dim P2Actions, intSprTwo
Dim ScrollerSprite
ScrollerSprite = -1
Const nSprWidth = 41
Const nSprHeight = 75
Sub Display_KeyDown(KeyCode, Shift)
' E=69, S=83, D=68, F=70
If KeyCode = 69 Then P2Actions = P2Actions Or ACTION_UP
If KeyCode = 83 Then P2Actions = P2Actions Or ACTION_LEFT
If KeyCode = 68 Then P2Actions = P2Actions Or ACTION_DOWN
If KeyCode = 70 Then P2Actions = P2Actions Or ACTION_RIGHT
End Sub
Sub Display_KeyUp(KeyCode, Shift)
If KeyCode = 69 Then P2Actions = P2Actions And Not ACTION_UP
If KeyCode = 83 Then P2Actions = P2Actions And Not ACTION_LEFT
If KeyCode = 68 Then P2Actions = P2Actions And Not ACTION_DOWN
If KeyCode = 70 Then P2Actions = P2Actions And Not ACTION_RIGHT
End Sub
Sub Player_OnAfterMoveSprites()
if ProjectObj.GamePlayer.rMap.Name = "4-2SpaceFlight" and YOff = 0 then YOff = 15003 - ProjectObj.GamePlayer.rMap.ViewHeight 'ProjectObj.GamePlayer.rMap.HeightHeight
Dim oMap, oPlayer, oLayer, nLyrWid, nLyrHgt, i
Set oPlayer = ProjectObj.GamePlayer
Set oMap = oPlayer.rMap
'Two Player Stuff
'If ProjectObj.GamePlayer.rMap.name = "0-4LevelSelect" or ProjectObj.GamePlayer.rMap.name = "map2" or ProjectObj.GamePlayer.rMap.name = "map3" or ProjectObj.GamePlayer.rMap.name = "map4" then
If ProjectObj.GamePlayer.rMap.name <> "0-4LevelSelect" then
intSprTwo = -1
oPlayer.ScrollMarginY = 185
else
Set oLayer = oMap.MapLayer(1)
If intSprTwo < 0 then
For i = 0 to oLayer.SpriteCount - 1
If oLayer.Sprite(i).rDef.Name = "Player2" then intSprTwo = i
next
End If
With oLayer.Sprite(intSprTwo)
oPlayer.ScrollMarginY = 62
If .ProcessAction(P2Actions) Then
.CurState = (.CurState Mod (.rDef.Template.StateCount \ 2)) _
+ .rDef.Template.StateCount \ 2
.CurFrame = .CurFrame Mod .rDef.StateFrameCount(.CurState)
Else
.CurState = (.CurState Mod (.rDef.Template.StateCount \ 2))
End If
oMap.ViewTop = 240
If P2OffsetX + oPlayer.ScrollMarginX > .X Then
P2OffsetX = .X - oPlayer.ScrollMarginX
End If
If P2OffsetX + oMap.ViewWidth - oPlayer.ScrollMarginX < .X + nSprWidth Then
P2OffsetX = .X - oMap.ViewWidth + oPlayer.ScrollMarginX + nSprWidth
End If
If P2OffsetY + oPlayer.ScrollMarginY > .Y Then
P2OffsetY = .Y - oPlayer.ScrollMarginY
End If
If P2OffsetY + oMap.ViewHeight - oPlayer.ScrollMarginY < .Y + nSprHeight Then
P2OffsetY = .Y - oMap.ViewHeight + oPlayer.ScrollMarginY + nSprHeight
End If
If P2OffsetX < 0 Then P2OffsetX = 0
If P2OffsetY < 0 Then P2OffsetY = 0
nLyrWid = oLayer.Columns * 32
nLyrHgt = oLayer.Rows * 32
If P2OffsetX > nLyrWid - oMap.ViewWidth Then P2OffsetX = nLyrWid - oMap.ViewWidth
If P2OffsetY > nLyrHgt - oMap.ViewHeight Then P2OffsetY = nLyrHgt - oMap.ViewHeight
oMap.Draw P2OffsetX, P2OffsetY, False
oMap.ViewTop = 0
End With
End If
'Automatic Scrolling Stuff
If ProjectObj.GamePlayer.rMap.name = "2-4BonusLevel" then
XOff = XOff + 1
With ProjectObj.GamePlayer
if .PlayerSprite.X <= XOff then
if .PlayerSprite.DX < 0 then .PlayerSprite.DX = 1
.PlayerSprite.DX = .PlayerSprite.rDef.Template.MoveSpeed
if .PlayerSprite.X < XOff - .PlayerSprite.Width / 2 then
XOff = 1
End if
end if
.rMap.Draw XOff, YOff
End With
End If
If ProjectObj.GamePlayer.rMap.name = "4-2SpaceFlight" then
oPlayer.ScrollMarginX = 5
oPlayer.ScrollMarginY = 5
If ScrollerSprite < 0 Then
ScrollerSprite = FindScrollerSprite
End If
If ProjectObj.GamePlayer.PlayerSprite.rDef.rLayer.SpriteCount <= ScrollerSprite Then
ScrollerSprite = FindScrollerSprite
End If
If ScrollerSprite >= 0 Then
If Left(ProjectObj.GamePlayer.PlayerSprite.rDef.rLayer.Sprite(ScrollerSprite).rDef.Name, 8) <> "Scroller" Then
ScrollerSprite = FindScrollerSprite
End If
End If
With ProjectObj.GamePlayer
.MapScrollX = .PlayerSprite.rDef.rLayer.Sprite(ScrollerSprite).X
.MapScrollY = .PlayerSprite.rDef.rLayer.Sprite(ScrollerSprite).Y
If .PlayerSprite.Y > .MapScrollY + .rMap.ViewHeight - .ScrollMarginY - .PlayerSprite.Height Then
.PlayerSprite.DY = -.PlayerSprite.rDef.Template.MoveSpeed
ElseIf .PlayerSprite.Y < .MapScrollY + .ScrollMarginY Then
.PlayerSprite.DY = .PlayerSprite.rDef.Template.MoveSpeed
End If
If .PlayerSprite.X > .MapScrollX + .rMap.ViewWidth - .ScrollMarginX - .PlayerSprite.Width Then
.PlayerSprite.DX = -.PlayerSprite.rDef.Template.MoveSpeed
ElseIf .PlayerSprite.X < .MapScrollX + .ScrollMarginX Then
.PlayerSprite.DX = .PlayerSprite.rDef.Template.MoveSpeed
End If
End With
end if
End Sub
Function FindScrollerSprite()
Dim I
With ProjectObj.GamePlayer.PlayerSprite.rDef.rLayer
For I = 0 To .SpriteCount - 1
If Left(.Sprite(I).rDef.Name, 8) = "Scroller" Then
FindScrollerSprite = I
Exit Function
End If
Next
End With
FindScrollerSprite = -1
End Function
Sub Player_OnControllerMove(OldActions, NewActions)
'Jumping Player
With ProjectObj.GamePlayer.PlayerSprite
If (Not OldActions) And NewActions And ACTION_BUTTON2 Then
If (.rDef.SolidTest(.X, .Y + .Height) Or .rDef.SolidTest(.X + .Width - 1, .Y + .Height)) Or (Not .pRideOnRef Is Nothing) Then
.DY = - .rDef.Template.JumpHeight
End If
End If
End With
End Sub
intSprTwo = -1
HostObj.SinkObjectEvents ProjectObj.GamePlayer, "Player"
HostObj.SinkObjectEvents CurrentDisplay, "Display"
HostObj.ConnectEventsNow()
with this
New Script
Option Explicit
Class Hit
Private hMap
Private hSpriteName
Private hHPs
Public Sub Hit(Map, SpriteName, HPs)
hMap = Map
hSpriteName = SpriteName
hHPs = HPs
End Sub
public function getMap()
getMap = hMap
End function
public function getSprite()
getSprite = hSpriteName
End function
public function getHPs()
getHPs = hHPs
end function
End Class
Sub Player_OnPlayInit()
Dim i, oMap
Dim oNewSpecial
for i = 0 to ubound(Hits)
Set oNewSpecial = NewSpecialFunction
Set oMap = ProjectObj.Maps(Hits(i).getMap())
oNewSpecial.FuncType = 7 ' SPECIAL_EVENT
oNewSpecial.Flags = 8 ' INTFL_RAISEEVENT
oNewSpecial.Name = "COL_" & Hits(i).getSprite()
oMap.AddSpecial(hostObj.AsObject(oNewSpecial))
Next
End Sub
Sub Player_OnSpecialFunction(SpecialObj)
dim i, layer, idx, spr
for i = 0 to UBound(Hits)
spr = Hits(i).getSprite()
if left(SpecialObj.Name,4 + len(spr)) = "COL_" & spr then
set spr = FindSpriteByDef(spr,layer,idx)
if spr.UserData > Hits(i).getHPs() or spr.UserData < 0 then spr.UserData = 0
spr.UserData = spr.UserData + 1
if spr.UserData = Hits(i).getHPs() then
layer.RemoveSprite(idx)
end if
end if
next
End Sub
Function FindSpriteByDef(SpriteName, byref oLayer, byref oSprIndex)
dim i, j, oMap
With ProjectObj.GamePlayer.rMap
for i = 0 to .LayerCount - 1
for j = 0 to .MapLayer(i).SpriteCount() - 1
if .MapLayer(i).Sprite(j).rDef.Name = SpriteName then
set oLayer = .MapLayer(i)
oSprIndex = j
set FindSpriteByDef = oLayer.Sprite(j)
end if
next
next
End with
End Function
'-----Initialize Sprites-----
Dim Hits(16), i
for i = 0 to 3
set Hits(i) = new Hit
Hits(i).Hit "5-0TheMoon","MJW" & i + 1,2
next
for i = 4 to 16
set Hits(i) = new Hit
Hits(i).Hit "5-0TheMoon","MJS" & i - 3,3
next
'-----End Initialization-----
HostObj.SinkObjectEvents ProjectObj.GamePlayer, "Player"
HostObj.ConnectEventsNow()
ProjectObj.GamePlayer.Play 16