tslusny Posted March 25, 2013 Author Share Posted March 25, 2013 When using this, you MUST include credits to: Herbert Glarner and if you are nice enought, then to me also ![:)](http://www.touchofdeathforums.com/community/public/style_emoticons/<#EMO_DIR#>/smile.png)Hello my little female dogs ![;)](http://www.touchofdeathforums.com/community/public/style_emoticons/<#EMO_DIR#>/wink.png)Guess what? This is epic thing. Why? Why not ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons/<#EMO_DIR#>/biggrin.png) So let´s begin…**NOTE:** This is only server side editFirst add attached modPathfinding to your server.Now search for this:```Call SetStatus("Creating map cache...")Call CreateFullMapCache```And add this under it:```For i = 1 To MAX_MAPSCreatePathMatrix iNext```**NOTE TO MIRACLE CLASSIC USERS**Add this at bottom of Sub Redimall```ReDim mapMatrix(1 To MAX_MAPS) As mapMatrixRec```**END NOTE**Now add this at bottom of Type MapNpcRec```' pathfindingarPath() As tPointhasPath As BooleanTargetX As LongTargetY As LongpathLoc As Long```Now search for this in Sub UpdateMapLogic:```If target_verify Then```And now add this under it:```' if map has a working matrix, use a* pathfindingIf mapMatrix(MapNum).created ThenIf GetPlayerX(target) <> MapNpc(MapNum).Npc(x).TargetX Or GetPlayerY(target) <> MapNpc(MapNum).Npc(x).TargetY Then' player has moved, re-find the pathMapNpc(MapNum).Npc(x).hasPath = APlus(MapNum, CLng(MapNpc(MapNum).Npc(x).x), CLng(MapNpc(MapNum).Npc(x).y), CLng(GetPlayerX(target)), CLng(GetPlayerY(target)), Void, MapNpc(MapNum).Npc(x).arPath)' set the npc's cur path locationIf MapNpc(MapNum).Npc(x).hasPath Then MapNpc(MapNum).Npc(x).pathLoc = UBound(MapNpc(MapNum).Npc(x).arPath)End If' if has path, follow itIf MapNpc(MapNum).Npc(x).hasPath Then' follow pathNpcMoveAlongPath MapNum, xdidwalk = TrueEnd IfEnd If```And now **remove** this code below it:```i = Int(Rnd * 5) ' Lets move the npc Select Case i Case 0 ' Up If MapNpc(mapnum).Npc(X).y > TargetY And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_UP) Then Call NpcMove(mapnum, X, DIR_UP, MOVING_WALKING) DidWalk = True End If End If ' Down If MapNpc(mapnum).Npc(X).y < TargetY And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_DOWN) Then Call NpcMove(mapnum, X, DIR_DOWN, MOVING_WALKING) DidWalk = True End If End If ' Left If MapNpc(mapnum).Npc(X).X > TargetX And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_LEFT) Then Call NpcMove(mapnum, X, DIR_LEFT, MOVING_WALKING) DidWalk = True End If End If ' Right If MapNpc(mapnum).Npc(X).X < TargetX And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_RIGHT) Then Call NpcMove(mapnum, X, DIR_RIGHT, MOVING_WALKING) DidWalk = True End If End If Case 1 ' Right If MapNpc(mapnum).Npc(X).X < TargetX And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_RIGHT) Then Call NpcMove(mapnum, X, DIR_RIGHT, MOVING_WALKING) DidWalk = True End If End If ' Left If MapNpc(mapnum).Npc(X).X > TargetX And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_LEFT) Then Call NpcMove(mapnum, X, DIR_LEFT, MOVING_WALKING) DidWalk = True End If End If ' Down If MapNpc(mapnum).Npc(X).y < TargetY And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_DOWN) Then Call NpcMove(mapnum, X, DIR_DOWN, MOVING_WALKING) DidWalk = True End If End If ' Up If MapNpc(mapnum).Npc(X).y > TargetY And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_UP) Then Call NpcMove(mapnum, X, DIR_UP, MOVING_WALKING) DidWalk = True End If End If Case 2 ' Down If MapNpc(mapnum).Npc(X).y < TargetY And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_DOWN) Then Call NpcMove(mapnum, X, DIR_DOWN, MOVING_WALKING) DidWalk = True End If End If ' Up If MapNpc(mapnum).Npc(X).y > TargetY And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_UP) Then Call NpcMove(mapnum, X, DIR_UP, MOVING_WALKING) DidWalk = True End If End If ' Right If MapNpc(mapnum).Npc(X).X < TargetX And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_RIGHT) Then Call NpcMove(mapnum, X, DIR_RIGHT, MOVING_WALKING) DidWalk = True End If End If ' Left If MapNpc(mapnum).Npc(X).X > TargetX And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_LEFT) Then Call NpcMove(mapnum, X, DIR_LEFT, MOVING_WALKING) DidWalk = True End If End If Case 3 ' Left If MapNpc(mapnum).Npc(X).X > TargetX And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_LEFT) Then Call NpcMove(mapnum, X, DIR_LEFT, MOVING_WALKING) DidWalk = True End If End If ' Right If MapNpc(mapnum).Npc(X).X < TargetX And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_RIGHT) Then Call NpcMove(mapnum, X, DIR_RIGHT, MOVING_WALKING) DidWalk = True End If End If ' Up If MapNpc(mapnum).Npc(X).y > TargetY And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_UP) Then Call NpcMove(mapnum, X, DIR_UP, MOVING_WALKING) DidWalk = True End If End If ' Down If MapNpc(mapnum).Npc(X).y < TargetY And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_DOWN) Then Call NpcMove(mapnum, X, DIR_DOWN, MOVING_WALKING) DidWalk = True End If End If End Select```And that´s all my friends. Easy tut for that complex thing ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons/<#EMO_DIR#>/biggrin.png) Link to comment Share on other sites More sharing options...
Alerd Posted March 25, 2013 Share Posted March 25, 2013 Delete this?```' Check if we can't move and if Target is behind something and if we can just switch dirs If Not DidWalk Then If MapNpc(mapnum).Npc(X).X - 1 = TargetX And MapNpc(mapnum).Npc(X).y = TargetY Then If MapNpc(mapnum).Npc(X).Dir <> DIR_LEFT Then Call NpcDir(mapnum, X, DIR_LEFT) End If``` Link to comment Share on other sites More sharing options...
tslusny Posted March 25, 2013 Author Share Posted March 25, 2013 > Delete this?> > ```> > ' Check if we can't move and if Target is behind something and if we can just switch dirs> > If Not DidWalk Then> > If MapNpc(mapnum).Npc(X).X - 1 = TargetX And MapNpc(mapnum).Npc(X).y = TargetY Then> > If MapNpc(mapnum).Npc(X).Dir <> DIR_LEFT Then> > Call NpcDir(mapnum, X, DIR_LEFT)> > End If> > ```No, that thing what has to do with NPC movement above it (with rand 1 to 5 number and select case). Updated post, if forgot to attach modPathfinding ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons/<#EMO_DIR#>/biggrin.png) Link to comment Share on other sites More sharing options...
Alerd Posted March 25, 2013 Share Posted March 25, 2013 This delete? srry for my noob question ; d```i = Int(Rnd * 5) ' Lets move the npc Select Case i Case 0 ' Up If MapNpc(mapnum).Npc(X).y > TargetY And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_UP) Then Call NpcMove(mapnum, X, DIR_UP, MOVING_WALKING) DidWalk = True End If End If ' Down If MapNpc(mapnum).Npc(X).y < TargetY And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_DOWN) Then Call NpcMove(mapnum, X, DIR_DOWN, MOVING_WALKING) DidWalk = True End If End If ' Left If MapNpc(mapnum).Npc(X).X > TargetX And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_LEFT) Then Call NpcMove(mapnum, X, DIR_LEFT, MOVING_WALKING) DidWalk = True End If End If ' Right If MapNpc(mapnum).Npc(X).X < TargetX And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_RIGHT) Then Call NpcMove(mapnum, X, DIR_RIGHT, MOVING_WALKING) DidWalk = True End If End If Case 1 ' Right If MapNpc(mapnum).Npc(X).X < TargetX And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_RIGHT) Then Call NpcMove(mapnum, X, DIR_RIGHT, MOVING_WALKING) DidWalk = True End If End If ' Left If MapNpc(mapnum).Npc(X).X > TargetX And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_LEFT) Then Call NpcMove(mapnum, X, DIR_LEFT, MOVING_WALKING) DidWalk = True End If End If ' Down If MapNpc(mapnum).Npc(X).y < TargetY And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_DOWN) Then Call NpcMove(mapnum, X, DIR_DOWN, MOVING_WALKING) DidWalk = True End If End If ' Up If MapNpc(mapnum).Npc(X).y > TargetY And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_UP) Then Call NpcMove(mapnum, X, DIR_UP, MOVING_WALKING) DidWalk = True End If End If Case 2 ' Down If MapNpc(mapnum).Npc(X).y < TargetY And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_DOWN) Then Call NpcMove(mapnum, X, DIR_DOWN, MOVING_WALKING) DidWalk = True End If End If ' Up If MapNpc(mapnum).Npc(X).y > TargetY And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_UP) Then Call NpcMove(mapnum, X, DIR_UP, MOVING_WALKING) DidWalk = True End If End If ' Right If MapNpc(mapnum).Npc(X).X < TargetX And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_RIGHT) Then Call NpcMove(mapnum, X, DIR_RIGHT, MOVING_WALKING) DidWalk = True End If End If ' Left If MapNpc(mapnum).Npc(X).X > TargetX And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_LEFT) Then Call NpcMove(mapnum, X, DIR_LEFT, MOVING_WALKING) DidWalk = True End If End If Case 3 ' Left If MapNpc(mapnum).Npc(X).X > TargetX And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_LEFT) Then Call NpcMove(mapnum, X, DIR_LEFT, MOVING_WALKING) DidWalk = True End If End If ' Right If MapNpc(mapnum).Npc(X).X < TargetX And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_RIGHT) Then Call NpcMove(mapnum, X, DIR_RIGHT, MOVING_WALKING) DidWalk = True End If End If ' Up If MapNpc(mapnum).Npc(X).y > TargetY And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_UP) Then Call NpcMove(mapnum, X, DIR_UP, MOVING_WALKING) DidWalk = True End If End If ' Down If MapNpc(mapnum).Npc(X).y < TargetY And Not DidWalk Then If CanNpcMove(mapnum, X, DIR_DOWN) Then Call NpcMove(mapnum, X, DIR_DOWN, MOVING_WALKING) DidWalk = True End If End If End Select``` Link to comment Share on other sites More sharing options...
tslusny Posted March 25, 2013 Author Share Posted March 25, 2013 > This delete? srry for my noob question ; d> > ```> > i = Int(Rnd * 5)> > ' Lets move the npc> > Select Case i> > Case 0> > ' Up> > If MapNpc(mapnum).Npc(X).y > TargetY And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_UP) Then> > Call NpcMove(mapnum, X, DIR_UP, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Down> > If MapNpc(mapnum).Npc(X).y < TargetY And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_DOWN) Then> > Call NpcMove(mapnum, X, DIR_DOWN, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Left> > If MapNpc(mapnum).Npc(X).X > TargetX And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_LEFT) Then> > Call NpcMove(mapnum, X, DIR_LEFT, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Right> > If MapNpc(mapnum).Npc(X).X < TargetX And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_RIGHT) Then> > Call NpcMove(mapnum, X, DIR_RIGHT, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > Case 1> > ' Right> > If MapNpc(mapnum).Npc(X).X < TargetX And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_RIGHT) Then> > Call NpcMove(mapnum, X, DIR_RIGHT, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Left> > If MapNpc(mapnum).Npc(X).X > TargetX And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_LEFT) Then> > Call NpcMove(mapnum, X, DIR_LEFT, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Down> > If MapNpc(mapnum).Npc(X).y < TargetY And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_DOWN) Then> > Call NpcMove(mapnum, X, DIR_DOWN, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Up> > If MapNpc(mapnum).Npc(X).y > TargetY And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_UP) Then> > Call NpcMove(mapnum, X, DIR_UP, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > Case 2> > ' Down> > If MapNpc(mapnum).Npc(X).y < TargetY And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_DOWN) Then> > Call NpcMove(mapnum, X, DIR_DOWN, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Up> > If MapNpc(mapnum).Npc(X).y > TargetY And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_UP) Then> > Call NpcMove(mapnum, X, DIR_UP, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Right> > If MapNpc(mapnum).Npc(X).X < TargetX And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_RIGHT) Then> > Call NpcMove(mapnum, X, DIR_RIGHT, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Left> > If MapNpc(mapnum).Npc(X).X > TargetX And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_LEFT) Then> > Call NpcMove(mapnum, X, DIR_LEFT, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > Case 3> > ' Left> > If MapNpc(mapnum).Npc(X).X > TargetX And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_LEFT) Then> > Call NpcMove(mapnum, X, DIR_LEFT, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Right> > If MapNpc(mapnum).Npc(X).X < TargetX And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_RIGHT) Then> > Call NpcMove(mapnum, X, DIR_RIGHT, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Up> > If MapNpc(mapnum).Npc(X).y > TargetY And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_UP) Then> > Call NpcMove(mapnum, X, DIR_UP, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Down> > If MapNpc(mapnum).Npc(X).y < TargetY And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_DOWN) Then> > Call NpcMove(mapnum, X, DIR_DOWN, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > End Select> > ```Yea ![:)](http://www.touchofdeathforums.com/community/public/style_emoticons/<#EMO_DIR#>/smile.png) Gonna add it to tut to help other people ![:)](http://www.touchofdeathforums.com/community/public/style_emoticons/<#EMO_DIR#>/smile.png) Thx Adiif, i already deleted this thing in my source, so i wasn´t able to post what to delete ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons/<#EMO_DIR#>/biggrin.png) Link to comment Share on other sites More sharing options...
Alerd Posted March 25, 2013 Share Posted March 25, 2013 Variable not defined```TileWalkable```In```Public Sub CreatePathMatrix(ByVal MapNum As Long)``` Link to comment Share on other sites More sharing options...
Wortel Angels Posted March 25, 2013 Share Posted March 25, 2013 > Variable not defined> > ```> > TileWalkable> > ```> In> > ```> > Public Sub CreatePathMatrix(ByVal MapNum As Long)> > ```Change to```TILE_TYPE_WALKABLE``` Link to comment Share on other sites More sharing options...
Dzastin Posted March 25, 2013 Share Posted March 25, 2013 Error 9 when start server:```ReDim mapMatrix(MapNum).gaeGrid(0 To Map(MapNum).MaxX, 0 To Map(MapNum).MaxY) As eCell``` Link to comment Share on other sites More sharing options...
Alerd Posted March 25, 2013 Share Posted March 25, 2013 Change all sub```Public Sub CreatePathMatrix(ByVal MapNum As Long)```to```Public Sub CreatePathMatrix(ByVal MapNum As Long)Dim x As Long, y As Long ReDim mapMatrix(MapNum).gaeGrid(0 To Map(MapNum).MaxX, 0 To Map(MapNum).MaxY) As eCell For x = 0 To Map(MapNum).MaxX For y = 0 To Map(MapNum).MaxY If Map(MapNum).Tile(x, y).Type <> TILE_TYPE_WALKABLE And Map(MapNum).Tile(x, y).Type <> TILE_TYPE_ITEM And Map(MapNum).Tile(x, y).Type <> TILE_TYPE_NPCSPAWN Then mapMatrix(MapNum).gaeGrid(x, y) = Obstacle Else mapMatrix(MapNum).gaeGrid(x, y) = Void End If Next Next mapMatrix(MapNum).created = True Exit SuberrorHandler: mapMatrix(MapNum).created = FalseEnd Sub``` Link to comment Share on other sites More sharing options...
tslusny Posted March 25, 2013 Author Share Posted March 25, 2013 Ok i have here some things left from Miracle Classic, gonna update tut ![;)](http://www.touchofdeathforums.com/community/public/style_emoticons/<#EMO_DIR#>/wink.png) Link to comment Share on other sites More sharing options...
Alerd Posted March 25, 2013 Share Posted March 25, 2013 Variable not defined..```DirectionUPDirectionDOWNDirectionLEFTDirectionRIGHT``` Link to comment Share on other sites More sharing options...
tslusny Posted March 25, 2013 Author Share Posted March 25, 2013 Updated post, now there are 2 versions of modPathfinding, one for latest Miracle Classic and one for other engines. Adiif use that for other engines . Link to comment Share on other sites More sharing options...
Alerd Posted March 25, 2013 Share Posted March 25, 2013 Constant expression required```Public mapMatrix(1 To MAX_MAPS) As mapMatrixRec```….. Link to comment Share on other sites More sharing options...
tslusny Posted March 25, 2013 Author Share Posted March 25, 2013 > Constant expression required> > ```> > Public mapMatrix(1 To MAX_MAPS) As mapMatrixRec> > ```> > …..Remove that 1 to MAX_MAPS Link to comment Share on other sites More sharing options...
Alerd Posted March 25, 2013 Share Posted March 25, 2013 Good?```Public mapMatrix() As mapMatrixRec```Variable not defined```PlayerWalking```Please Fix this all Pathfinding Link to comment Share on other sites More sharing options...
tslusny Posted March 25, 2013 Author Share Posted March 25, 2013 > Good?> > ```> > Public mapMatrix() As mapMatrixRec> > ```> > Variable not defined> > ```> > PlayerWalking> > ```> > Please Fix this all PathfindingUploaded new modPathfindingThat your 1 to MAX_MAPS issue are still here, so just repeat what you did, becouse you have older MC so you do not have MAX_MAPS constant Link to comment Share on other sites More sharing options...
Dzastin Posted March 25, 2013 Share Posted March 25, 2013 Change to MOVING_WALKING Link to comment Share on other sites More sharing options...
Wortel Angels Posted March 25, 2013 Share Posted March 25, 2013 xD adiif i know its good to report bugs but… please think a bit and write direct the fix then make one post with all bugs and not 100 Link to comment Share on other sites More sharing options...
Alerd Posted March 25, 2013 Share Posted March 25, 2013 I can create a topic with all fix in a heapif the DeathBeam will Link to comment Share on other sites More sharing options...
Wortel Angels Posted March 25, 2013 Share Posted March 25, 2013 Not an Topic…Search the Bugs, Fix them if you can an then write an POST with all them here ;-) Link to comment Share on other sites More sharing options...
tslusny Posted March 25, 2013 Author Share Posted March 25, 2013 I think all bugs are fixed (thx to Adiif for reporting them) so i hope everything is working ![:)](http://www.touchofdeathforums.com/community/public/style_emoticons/<#EMO_DIR#>/smile.png) Link to comment Share on other sites More sharing options...
Wortel Angels Posted March 25, 2013 Share Posted March 25, 2013 For me its working but the NPC most just stand and wait what makes easy to run away xD Link to comment Share on other sites More sharing options...
tslusny Posted March 25, 2013 Author Share Posted March 25, 2013 > For me its working but the NPC most just stand and wait what makes easy to run away xDAnd do you deleted this?> This delete? srry for my noob question ; d> > ```> > i = Int(Rnd * 5)> > ' Lets move the npc> > Select Case i> > Case 0> > ' Up> > If MapNpc(mapnum).Npc(X).y > TargetY And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_UP) Then> > Call NpcMove(mapnum, X, DIR_UP, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Down> > If MapNpc(mapnum).Npc(X).y < TargetY And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_DOWN) Then> > Call NpcMove(mapnum, X, DIR_DOWN, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Left> > If MapNpc(mapnum).Npc(X).X > TargetX And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_LEFT) Then> > Call NpcMove(mapnum, X, DIR_LEFT, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Right> > If MapNpc(mapnum).Npc(X).X < TargetX And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_RIGHT) Then> > Call NpcMove(mapnum, X, DIR_RIGHT, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > Case 1> > ' Right> > If MapNpc(mapnum).Npc(X).X < TargetX And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_RIGHT) Then> > Call NpcMove(mapnum, X, DIR_RIGHT, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Left> > If MapNpc(mapnum).Npc(X).X > TargetX And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_LEFT) Then> > Call NpcMove(mapnum, X, DIR_LEFT, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Down> > If MapNpc(mapnum).Npc(X).y < TargetY And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_DOWN) Then> > Call NpcMove(mapnum, X, DIR_DOWN, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Up> > If MapNpc(mapnum).Npc(X).y > TargetY And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_UP) Then> > Call NpcMove(mapnum, X, DIR_UP, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > Case 2> > ' Down> > If MapNpc(mapnum).Npc(X).y < TargetY And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_DOWN) Then> > Call NpcMove(mapnum, X, DIR_DOWN, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Up> > If MapNpc(mapnum).Npc(X).y > TargetY And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_UP) Then> > Call NpcMove(mapnum, X, DIR_UP, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Right> > If MapNpc(mapnum).Npc(X).X < TargetX And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_RIGHT) Then> > Call NpcMove(mapnum, X, DIR_RIGHT, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Left> > If MapNpc(mapnum).Npc(X).X > TargetX And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_LEFT) Then> > Call NpcMove(mapnum, X, DIR_LEFT, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > Case 3> > ' Left> > If MapNpc(mapnum).Npc(X).X > TargetX And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_LEFT) Then> > Call NpcMove(mapnum, X, DIR_LEFT, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Right> > If MapNpc(mapnum).Npc(X).X < TargetX And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_RIGHT) Then> > Call NpcMove(mapnum, X, DIR_RIGHT, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Up> > If MapNpc(mapnum).Npc(X).y > TargetY And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_UP) Then> > Call NpcMove(mapnum, X, DIR_UP, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > ' Down> > If MapNpc(mapnum).Npc(X).y < TargetY And Not DidWalk Then> > If CanNpcMove(mapnum, X, DIR_DOWN) Then> > Call NpcMove(mapnum, X, DIR_DOWN, MOVING_WALKING)> > DidWalk = True> > End If> > End If> > End Select> > ``` Link to comment Share on other sites More sharing options...
Wortel Angels Posted March 25, 2013 Share Posted March 25, 2013 Yes :-)I know how to do an Tutorial haha but still walking not much or most just wait till i get in the way of them Link to comment Share on other sites More sharing options...
tslusny Posted March 25, 2013 Author Share Posted March 25, 2013 > Yes :-)> > I know how to do an Tutorial haha but still walking not much or most just wait till i get in the way of themThis is pathfinding, not new NPC AI ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons/<#EMO_DIR#>/biggrin.png) They will be smart only when they will try to kill you, and not when they are hanging around 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