Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Abyssrayel

Members
  • Posts

    78
  • Joined

  • Last visited

    Never

Everything posted by Abyssrayel

  1. This was complex before an explaination was given? I'm losing faith in my species.
  2. I thought so too, but it seems to work. Now that you mention it, would it just be automatically rounding them? EDIT: Thanks to [- Matthew -](http://www.touchofdeathforums.com/community/index.php?/user/65954-matthew/) for confirming this. EDIT: (Changed in main post) From: ``` ' Speed moving vars Public Const WALK_SPEED As Byte = 2.75 Public Const RUN_SPEED As Byte = 5.5 ``` To: ``` ' Speed moving vars Public Const WALK_SPEED As Byte = 3 Public Const RUN_SPEED As Byte = 5 ``` EDIT: Get a sticky for this? As it's extremely useful for everyone & will be updated until 100% refied.
  3. ~This Tutorial is for beginners; especially as a learning tool.~ *Here is a Step - By - Step Tutorial on how to improve the Character Movement in your game.* ~*Pay attention to what you are truly doing while following the tutorial to gain better insight into editing source code.*~ First of all, thanks to, daxterxx for making this Tutorial: [http://www.touchofde…oothness-in-eo/](http://www.touchofdeathforums.com/community/index.php?/topic/127177-csde-walking-smoothness-in-eo/) Thanks also go out to, xppxdd for posting this list: [http://www.touchofde...imple-need-vb6/](http://www.touchofdeathforums.com/community/index.php?/topic/100371-tut-how-to-chenge-the-game-keys-very-simple-need-vb6/) EDIT: I almost forgot [ValentineBr](http://www.touchofdeathforums.com/community/index.php?/user/58618-valentinebr/) who found this: [http://www.touchofde...layer-movement/](http://www.touchofdeathforums.com/community/index.php?/topic/129963-bug-fix-correction-player-movement/) ***(REMEMBER TO ALWAYS MAKE A BACK-UP OF YOUR PROJECT BEFORE EDITING IT)*** Now, we start off by looking at daxterxx's Tutorial and in modGameLogic find: ``` Select Case Player(Index).Moving Case MOVING_WALKING: MovementSpeed = ((ElapsedTime / 1000) * (RUN_SPEED * SIZE_X)) Case MOVING_RUNNING: MovementSpeed = ((ElapsedTime / 1000) * (WALK_SPEED * SIZE_X)) Case Else: Exit Sub End Select ``` Then change it to: ``` Select Case Player(Index).Moving Case MOVING_WALKING: MovementSpeed = WALK_SPEED Case MOVING_RUNNING: MovementSpeed = RUN_SPEED Case Else: Exit Sub End Select ```Look now and see that your values equal exactly what your walking and running rates are. Feel free to check your standard rates before moving on by logging in and moving around a bit. **STOP!** modGameLogic. **Think** about what you just did. Client Side Only. You just **changed** what your Player MovementSpeed Equals to a Variable. _*****_ _Player_ - Your Sprite in-game. _Movement Speed_ - How fast something moves; in this case your Player. _Equals_ - Describes the relation of complete balance. _Variable_ - A value that is to be used in specific instances to determine a purpose. * _**What do I do next?**_ Find where your WALK_SPEED & RUN_SPEED Variables are located. Now find in modConstants: ``` ' Speed moving vars Public Const WALK_SPEED As Byte = 4 Public Const RUN_SPEED As Byte = 6 ``` Change this to: ``` ' Speed moving vars Public Const WALK_SPEED As Byte = 3 Public Const RUN_SPEED As Byte = 5 ```What all this does; if you checked the rates, is make you move at a more proper basic speed. Up to this point the whole purpose was to create a base for a new Movement Speed Formula. You now have the most basic part of the Formula. **Example:** "Public Const WALK_SPEED As Byte = 3" this means that if "Case MOVING_WALKING: MovementSpeed = WALK_SPEED" to put it simply, means MovementSpeed = 3. **STOP!** modConstants. **Think**, you just changed the Constant Value of the Variables _WALK_SPEED_ & _RUN_SPEED_. Right before, you changed the Value of MovementSpeed in GameLogic. All together, MovementSpeed of your Player Equals _3_ & _5_ respectivly for Walking and Running. _*****_ _Value_ - A set allowance or amount. _Constant Value_ - A Value that never changes. _WALK_SPEED_ - A Variable that you set for the Value of Walking MovementSpeed. _RUN_SPEED_ - A Variable that you set for the Value of Running MovementSpeed. _3_ - The Value of the Variable WALK_SPEED; that is the Value of Walking MovementSpeed. _5_ - The Value of the Variable RUN_SPEED; that is the Value of Running MovementSpeed. _Walking_ - The Term I gave to Case MOVING_WALKING in modGameLogic. _Running_ - The Term I gave to Case MOVING_RUNNING in modGameLogic. The next step is to change: ``` ' Check if player is walking, and if so process moving them over Select Case Player(Index).Moving Case MOVING_WALKING: MovementSpeed = WALK_SPEED Case MOVING_RUNNING: MovementSpeed = RUN_SPEED Case Else: Exit Sub End Select ``` To this: (EDIT: Also added ValentineBr's addition) ``` ' Check if player is walking, and if so process moving them over Select Case Player(Index).Moving Case MOVING_WALKING: MovementSpeed = WALK_SPEED + (Player(MyIndex).Stat(Willpower) / 30) Case MOVING_RUNNING: MovementSpeed = RUN_SPEED + (Player(MyIndex).Stat(Agility) / 15) Case Else: Exit Sub End Select If Player(Index).step = 0 Then Player(Index).step = 1 ```What this does (took about 2 hours to get a well working formula (ended up being super basic)) is make your new Walking Movement Speed & Running Movement Speed each effected by Willpower & Agility. (So that they aren't always the same & you get faster as you upgrade either skill) **+** "If Player(Index).step = 0 Then Player(Index).step = 1" makes your character's movement look smoother. - _*I will update this formula without notice if/ when I find a better formula*_ _*Like this post after testing the increase rates with an Admin if you approve*_ _*That is probably the last formula revision as I find it to be a nice rate & **even with maxed stats you don't cap out the Engine's capabilities**.*_ Now on to xppxdd's Post about changing keys. From his post I was able to change the "Run" key to CTRL and the "Attack/ Interact" key to Shift & also be able to move with both the Arrow Keys and W, A, S, D Keys. The purpose of this is so that people can essentially play with one hand on the keyboard and one on the mouse. They also have better control if using both hands on the keyboard. Here's how I did it. In modConstants find: ``` ' Key constants Public Const VK_UP As Long = &H26 Public Const VK_DOWN As Long = &H28 Public Const VK_LEFT As Long = &H25 Public Const VK_RIGHT As Long = &H27 Public Const VK_SHIFT As Long = &H10 Public Const VK_RETURN As Long = &HD Public Const VK_CONTROL As Long = &H11 ``` Add W, A, S, D Keys bettween RIGHT & SHIFT to get this: ``` ' Key constants Public Const VK_UP As Long = &H26 Public Const VK_DOWN As Long = &H28 Public Const VK_LEFT As Long = &H25 Public Const VK_RIGHT As Long = &H27 Public Const VK_W As Long = &H57 Public Const VK_S As Long = &H53 Public Const VK_A As Long = &H41 Public Const VK_D As Long = &H44 Public Const VK_SHIFT As Long = &H10 Public Const VK_RETURN As Long = &HD Public Const VK_CONTROL As Long = &H11 ```Now in modInput find: ``` If GetAsyncKeyState(VK_UP) >= 0 Then DirUp = False If GetAsyncKeyState(VK_DOWN) >= 0 Then DirDown = False If GetAsyncKeyState(VK_LEFT) >= 0 Then DirLeft = False If GetAsyncKeyState(VK_RIGHT) >= 0 Then DirRight = False If GetAsyncKeyState(VK_CONTROL) >= 0 Then ControlDown = False If GetAsyncKeyState(VK_SHIFT) >= 0 Then ShiftDown = False ``` Add W, A, S, D here, like so: ``` If GetAsyncKeyState(VK_UP) >= 0 Then DirUp = False If GetAsyncKeyState(VK_DOWN) >= 0 Then DirDown = False If GetAsyncKeyState(VK_LEFT) >= 0 Then DirLeft = False If GetAsyncKeyState(VK_RIGHT) >= 0 Then DirRight = False If GetAsyncKeyState(VK_W) >= 0 Then DirUp = False If GetAsyncKeyState(VK_S) >= 0 Then DirDown = False If GetAsyncKeyState(VK_A) >= 0 Then DirLeft = False If GetAsyncKeyState(VK_D) >= 0 Then DirRight = False If GetAsyncKeyState(VK_CONTROL) >= 0 Then ControlDown = False If GetAsyncKeyState(VK_SHIFT) >= 0 Then ShiftDown = False ```Now right under, in Sub CheckInputKeys find: ``` 'Move Up If GetKeyState(vbKeyUp) < 0 Then DirUp = True DirDown = False DirLeft = False DirRight = False Exit Sub Else DirUp = False End If 'Move Right If GetKeyState(vbKeyRight) < 0 Then DirUp = False DirDown = False DirLeft = False DirRight = True Exit Sub Else DirRight = False End If 'Move down If GetKeyState(vbKeyDown) < 0 Then DirUp = False DirDown = True DirLeft = False DirRight = False Exit Sub Else DirDown = False End If 'Move left If GetKeyState(vbKeyLeft) < 0 Then DirUp = False DirDown = False DirLeft = True DirRight = False Exit Sub Else DirLeft = False End If ``` Add the W, A, S, D Keys here as shown: ``` 'Move Up If GetKeyState(vbKeyUp) < 0 Or GetKeyState(vbKeyW) < 0 Then DirUp = True DirDown = False DirLeft = False DirRight = False Exit Sub Else DirUp = False End If 'Move Right If GetKeyState(vbKeyRight) < 0 Or GetKeyState(vbKeyD) < 0 Then DirUp = False DirDown = False DirLeft = False DirRight = True Exit Sub Else DirRight = False End If 'Move down If GetKeyState(vbKeyDown) < 0 Or GetKeyState(vbKeyS) < 0 Then DirUp = False DirDown = True DirLeft = False DirRight = False Exit Sub Else DirDown = False End If 'Move left If GetKeyState(vbKeyLeft) < 0 Or GetKeyState(vbKeyA) < 0 Then DirUp = False DirDown = False DirLeft = True DirRight = False Exit Sub Else DirLeft = False End If ```To reverse the "Run" and "Attack/ Interact" Keys, in modGameLogic find: ``` ' Check if player has the shift key down for running If ShiftDown Then Player(MyIndex).Moving = MOVING_RUNNING Else Player(MyIndex).Moving = MOVING_WALKING End If ``` Then change ShiftDown to ControlDown, like so: (Also change the comment to say "control" instead of "shift") ``` ' Check if player has the control key down for running If ControlDown Then Player(MyIndex).Moving = MOVING_RUNNING Else Player(MyIndex).Moving = MOVING_WALKING End If ``` Then find in Sub CheckAttack: ``` If ControlDown Then If InEvent = True Then Exit Sub Select Case Player(MyIndex).Dir Case DIR_UP X = GetPlayerX(MyIndex) Y = GetPlayerY(MyIndex) - 1 Case DIR_DOWN X = GetPlayerX(MyIndex) Y = GetPlayerY(MyIndex) + 1 Case DIR_LEFT X = GetPlayerX(MyIndex) - 1 Y = GetPlayerY(MyIndex) Case DIR_RIGHT X = GetPlayerX(MyIndex) + 1 Y = GetPlayerY(MyIndex) End Select ``` Then change ControlDown to ShiftDown as shown: ``` If ShiftDown Then If InEvent = True Then Exit Sub Select Case Player(MyIndex).Dir Case DIR_UP X = GetPlayerX(MyIndex) Y = GetPlayerY(MyIndex) - 1 Case DIR_DOWN X = GetPlayerX(MyIndex) Y = GetPlayerY(MyIndex) + 1 Case DIR_LEFT X = GetPlayerX(MyIndex) - 1 Y = GetPlayerY(MyIndex) Case DIR_RIGHT X = GetPlayerX(MyIndex) + 1 Y = GetPlayerY(MyIndex) End Select ``` That should be all you have to do! Compile before saving to test if you like the changes or not. Save after testing if you like your changes. && Most of all; ENJOY! ![](http://www.touchofdeathforums.com/community/public/style_emoticons/default/biggrin.png) ~*(Please comment what you think of the Tutorial, Source Mod. & any Bugs/ Glitches/ Problems you find)*~
  4. Possibly in ``` Sub DrawAnimatedInvItems() ``` Just ya' know, no "Blt." (Damnit, now I want a BLT!!)
  5. modGeneral *cough* took me a whole 2 seconds dude…
  6. EDIT:``` Call MultiClient ``` on top of Sub Main(). You add it just under/ in it. (as that's sort of confusing) EDIT: I get the error saying my client is already running even if it isn't. Could some one explain this tutorial better? I've tried a few different things to make it work and I can't wrap my head around it I guess. Has any one gotten it to work?
  7. DEV/ Forum Mod. learning a new language as I haven't really taken anything in school yet lol. Trying to but it's expensive… Got an old VB6 book with a CD; and when I saw this it just made sense. *shrugs* It was the only major problem I could see in the long run. I haven't used 3.0, so I dun'no if it's fixed. Thought I would point it out and hope someone saw it... >.>
  8. I'm not exactly new to the forums, but I finally made an account to post with. So, this is my FIRST post! (Howdy lolz) Anyways, to the point. I've searched around the forums and can't seem to find any solutions to why when, Example: I set an event to take away 25 gold, it will process the event even if my player doesn't have 25 gold. I looked at the conditions and can't figure out any way around this besides only taking a single item away. (make a condition that I have a certain item and then take it away) I HAVE NOT used VB6 to try and figure out a solution as I'm very new to programming (I'm using Eclipse to learn) and have no idea where to look for this. (some things yes, but not this >..< EDIT: It works! Thank you!
×
×
  • Create New...