SpiceyWolf Posted February 12, 2014 Author Share Posted February 12, 2014 Okay, I built this inside of Eclipse Final Frontier, but it doesnt use direct X so should work on any version of EO(Crystal Shire and Mirage Source 4 variations as well)Now before we get started I WILL Note, that this is not perfect… took me a long time to develop this cause I had no Idea what I was doing but managed to figure it out xD Anyone experienced here probably could have done this on their own, but I haven't seen anything posted before :)Client Side:Find your PlayerRec type and add this at the bottom:```'JumpingIsJumping As LongIsFalling As LongJumpY As Long ```Find Call ProcessMovement and put this RIGHT below that line```If Player(I).IsJumping = 1 Then If GetPlayerMap(I) = GetPlayerMap(MyIndex) Then Call ProcessJumping(I) End If Else Player(I).JumpY = 0 End If```Find Sub ProcessMovement and right above the sub add this:```Sub ProcessJumping(ByVal Index As Long) If Player(Index).IsJumping = 1 And Player(Index).IsFalling = 0 Then If (Player(Index).JumpY >= 32) Then Player(Index).JumpY = 32 Player(Index).IsFalling = 1 Else Player(Index).JumpY = Player(Index).JumpY + 4 Player(Index).YOffset = Player(Index).YOffset - 4 End If ElseIf Player(Index).IsFalling = 1 Then If (Player(Index).JumpY <= 0) Then Player(Index).JumpY = 0 Player(Index).IsFalling = 0 Player(Index).IsJumping = 0 Player(Index).YOffset = 0 Else Player(Index).JumpY = Player(Index).JumpY - 4 Player(Index).YOffset = Player(Index).YOffset + 4 End If End IfEnd Sub```Above Sub SendPlayerMove add this:```]Public Sub SendPlayerJump()Dim buffer As clsBufferSet buffer = New clsBufferbuffer.WriteLong CPlayerJumpbuffer.WriteLong MyIndexbuffer.WriteLong Player(MyIndex).IsJumpingSendData buffer.ToArray()Set buffer = NothingEnd Sub```Put SPlayerJump and CPlayerJump right below SPlayerMove and CPlayerMove…Find HandleDataSub(SPlayerMove) = GetAddress(AddressOf HandlePlayerMove)and add this under it:```HandleDataSub(SPlayerJump) = GetAddress(AddressOf HandlePlayerJump)```at the bottom of modHandleData put this:```Private Sub HandlePlayerJump(ByVal Index As Long, ByRef data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)Dim I As LongDim buffer As clsBuffer Set buffer = New clsBuffer buffer.WriteBytes data() I = buffer.ReadLong Player(I).IsJumping = buffer.ReadLongEnd Sub```THIS PART IS A LITTLE TRICKY! you can set a button to call this, or use vbkey to call it, doesnt matter how you do it… just find a method of how u want to call the jump and put this code in it:```Player(MyIndex).IsJumping = 1 SendPlayerJump```THATS IT FOR CLIENT SIDE!Server Side:Go ahead and add the Enum's back just the same way(SPlayerMove and CPlayerMove remember?)Find HandleDataSub(CPlayerMove) = GetAddress(AddressOf HandlePlayerMove)and add this under:```HandleDataSub(CPlayerJump) = GetAddress(AddressOf HandlePlayerJump)```Put this at the bottom of modHandleData:```Sub HandlePlayerJump(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long) Dim I As Long Dim buffer As clsBuffer Set buffer = New clsBuffer buffer.WriteBytes Data() I = buffer.ReadLong Player(I).IsJumping = buffer.ReadLong SendPlayerJump IEnd Sub```Find Sub SendPlayerMove and add this above:```Sub SendPlayerJump(ByVal index As Long) Dim buffer As clsBuffer Set buffer = New clsBuffer buffer.WriteLong SPlayerJump buffer.WriteLong index buffer.WriteLong Player(index).IsJumping SendDataToMapBut index, GetPlayerMap(index), buffer.ToArray() Set buffer = NothingEnd Sub```and last: Put this at the bottom of PlayerRec:```'Jumping IsJumping As Long```This by itself just makes the player jump… If you want this jump to interact with the world in various ways, just do call checks for If Player(index).IsJumping = True -> In order to allow that interaction. This will force the player to be in jumping in order to do the interaction :) Any questions I'd be happy to answer. any support needed I'll do my best to give! Link to comment Share on other sites More sharing options...
hisherwin Posted February 12, 2014 Share Posted February 12, 2014 Mind showing some screenshot on how player jump? i don't quite get this system Link to comment Share on other sites More sharing options...
Zopto Posted February 12, 2014 Share Posted February 12, 2014 this script is [simular](https://www.google.rs/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&ved=0CCwQFjAB&url=http%3A%2F%2Fwww.thefreedictionary.com%2Fsimular&ei=4Zn7UuLsC6jV4QSkioHgDw&usg=AFQjCNF4j6tm8sd_xvu51bQi6iBpnUYT5A&sig2=erv4A8u1QIcj2JOxnlBLfg&bvm=bv.61190604,d.bGE)to project vertigo hmmmm Link to comment Share on other sites More sharing options...
Matt Posted February 12, 2014 Share Posted February 12, 2014 It might be best to store all those player values in the TempPlayerRec. ;) Other than that, good! Link to comment Share on other sites More sharing options...
SpiceyWolf Posted February 12, 2014 Author Share Posted February 12, 2014 Its a client sided animation, the only reason theres interaction with the server is to tell other people that you jumped… YOffset is used to determine stuff with moving between the tiles so your not just teleporting around the tiles... (YOffset is used for pixel movement between tiles in various directions) and so its the server telling the client to animate the yOffset moving up and down with a lack of walking animation to appear jumping.Best methods for making a jump system (probably only way I dont know) is to make the appearance of jumping that while the player is jumping a variable is active that other things in the engine can interact with that variable to give basicly the feel of the character ACTUALLY jumping.@ModMatt, thats why its not TempPlayerRec cause its client side stuff... if u used the server end to keep track then it would be heavy on the network...@Zopto, I havent looked in project vertigo xD I just made this on my own referencing how playermovement worked..@Kazuto, This systems appearance is like the character(without animation) slides straight up exactly one tile... although it is buggy looking if you try moving at the same time(unless going left or right then it looks perfect... could use with some conditioning for moving up or down to fix the buggy look but this is all i needed to at least create a jump system for a buddy) After the player moves straight up, 1 tile space, it moves back down. The character itself isnt actually moving, its just the picture for his character moving up in correlation to where hes actually standing to appear jumping(Uses gameloop as the timer for moving)Any other questions or comments community? Link to comment Share on other sites More sharing options...
mrmiguu Posted February 12, 2014 Share Posted February 12, 2014 It's odd that someone would come around and shed some light on this kind of feature out of the clear blue. Especially since you've never really heard of Vertigo (let alone looked at its source). It took years for this to happen, and before you it was someone else, and before them it was me. Before me it wasn't really anyone (everyone used to just care about SadScript, not source edits– you can thank Robin for that change in mindset).Nice work! Link to comment Share on other sites More sharing options...
SpiceyWolf Posted February 12, 2014 Author Share Posted February 12, 2014 @MrMiguu Lol I have always wanted a jump system since the elysium diamond days, and a good friend working on a mario fan game explained how it is done(at least his method for doing it in eclipse stable) and I just kinda took that idea and went from there on EO(took some learning how the engine actually worked, as far as the networking went cause it was a difficult concept for me to understand)At any rate though xD Id finally made a Jump system, even though it isnt perfect and figured HEY Ill make a tutorial to tell everyone how to add it(granted they may want to improve on it) so at least its not some super huge mystery anymore :) And Ive never relied on scripts xD always hated them. Link to comment Share on other sites More sharing options...
My Brave Shine Posted June 7, 2014 Share Posted June 7, 2014 FIX'Server - ModEnumerationsAdd```CPlayerJump```below CPlayerMove.and… Add```SPlayerJump```below SPlayerMove in ModEnu..too Link to comment Share on other sites More sharing options...
SpiceyWolf Posted January 1, 2015 Author Share Posted January 1, 2015 > FIX'> > > > Server - ModEnumerations> > > > Add> > ```> > CPlayerJump> ```> below CPlayerMove.> > > > and… Add> > ```> > SPlayerJump> ```> below SPlayerMove in ModEnu..tooThanks for pointing out i forgot the enum in this post.On a side note to anyone else, doing it in a temprec on server side would be better ONLY for anyone wanting to work this with the directional block system(say duplicating directional block into a jump block system separately) because the client will do hundreds of checks a second on the tile which will actually packet spam the server… however alot of this would need changed from something visual to something more permanent(which would be less glitchy looking overall anyway) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now