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

tslusny

Members
  • Posts

    1878
  • Joined

  • Last visited

    Never

Everything posted by tslusny

  1. tslusny

    File Host

    > Unsupported file format .exe Just pack it up ![:)](http://www.touchofdeathforums.com/community/public/style_emoticons//smile.png) Imo allowing .exes are not good idea Off-topic: In your signature it should unload, not load ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons//biggrin.png)
  2. > ![](http://img202.imageshack.us/img202/7357/dreamworldr.png) > > **_News_** > > I stand firm in programming the events system ![:P](http://www.touchofdeathforums.com/community/public/style_emoticons//tongue.png). I finished the part of the commands, now just add them e.e > > ![](http://img515.imageshack.us/img515/5771/semttulobwl.png) > > > >! ^^ Obrigado Great, you are following my idea of global event editor, and not JC´s (and RPG Makers) map tile events ![:)](http://www.touchofdeathforums.com/community/public/style_emoticons//smile.png)
  3. > thanx for replying mate, I'll test that out in a sec. > > next problem I have is the different spawn rates, how would I check if its a rare or common encounter? > > and care to explain why its 200 and not 100, that way I understand the code, instead of just copy paste :-) > > ``` > > Dim Y As Long, Z As Long > > 'Y = Format(Rnd * 200, "0.00") > > Y = Random(1, 200) > > 'Z = Format(18.75 / 1.25, "0.00") > > Z = 187.5 / 1.25 > > If Y >= Z Then > > PlayerMsg Index, "very rare encounter!", BrightRed > > PlayerMsg Index, "Y = " & Y, BrightGreen > > PlayerMsg Index, "Z = " & Z, BrightGreen > > Else > > 'Z = Format(18.75 / 3.33, "0.00") > > Z = 187.5 / 3.33 > > If Y >= Z Then > > PlayerMsg Index, "rare encounter!", BrightRed > > PlayerMsg Index, "Y = " & Y, BrightGreen > > PlayerMsg Index, "Z = " & Z, BrightGreen > > Else > > 'Z = Format(18.75 / 6.75, "0.00") > > Z = 187.5 / 6.75 > > If Y >= Z Then > > PlayerMsg Index, "semi-rare encounter!", BrightRed > > PlayerMsg Index, "Y = " & Y, BrightGreen > > PlayerMsg Index, "Z = " & Z, BrightGreen > > Else > > 'Z = Format(18.75 / 8.5, "0.00") > > Z = 187.5 / 8.5 > > If Y >= Z Then > > PlayerMsg Index, "common encounter!", BrightRed > > PlayerMsg Index, "Y = " & Y, BrightGreen > > PlayerMsg Index, "Z = " & Z, BrightGreen > > Else > > 'Z = Format(18.75 / 10, "0.00") > > Z = 187.5 / 10 > > If Y >= Z Then > > PlayerMsg Index, "very common encounter!", BrightRed > > PlayerMsg Index, "Y = " & Y, BrightGreen > > PlayerMsg Index, "Z = " & Z, BrightGreen > > Else > > 'no encounter > > PlayerMsg Index, "Y = " & Y, BrightGreen > > PlayerMsg Index, "Z = " & Z, BrightGreen > > End If > > End If > > End If > > End If > > End If > ``` > > this is what i currently have… Use Select Case ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons//biggrin.png)
  4. > Yes but EO3's pathfinding really sucks. reverting it back to eo3 standard and seeing how bad it does. if you see i put an an if to turn it on an off > > the eo3 standard seems to be processor heavy and inefficient. hence my report to you the other day of going from 50-80 cps to 500-900 cps wit just the code change.. granted the pathfinding in eo3 standard does FIND the target better > > EDIT > > well turns out neither yours OR eo3s pathfinding pays attention to blocks that were put inplace using the directional blocks…. IT only works if i use attribute based blocks... > > Now that i know this i will go back to trying both yours and the default and see what one is better on server load. You can define them in Sub Pathfinding, you can easily add there check for directional block. I think it is in Sub CreatePathMatrix
  5. Wait… You imlemented it to EO 3.0? There is already pathfinding (so it will overlay)
  6. > Deathbeam removed his event system to add jcsnier's, this shows deathbeam's event system is inferior to JC Denton Denton's so if Ricardo ever adds an event system i believe it should be JC Denton Denton's. > > Apart from that great work Ricardo, keep it up. I removed it only from MC, becouse i wanted to have more RPG Maker´s feeling. But still, my event system is better opinion that JC´s, althrought it is very limited. But i think Ricardo will make his own.
  7. Hmm so i must first finish my game to be added here ![:(](http://www.touchofdeathforums.com/community/public/style_emoticons//sad.png) You know, there isn´t much finished and running Eclipse games here.
  8. 2(A), 2(B1), 3(B2), 4(A) I do not know if i understanded it right. And i do not put anything into 1 becouse i do not like that New Fantasy thing ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons//biggrin.png)
  9. > Wow. Advertising your programming skills on someone _else's_ programming shop. Using… someone else's fame to benefit yourself? Dude, no offense, I know I'm probably being a douche, but... > > _**Make a topic.**_ Lol, i am Deathbeam, i just changed my name ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons//biggrin.png)
  10. Gonna update OP with additional things, and gonna remove prices. We can discuss them in PMs or on Skype
  11. Just bumping this out. I am still available. My coding things improved and i have alot more things in my repertoary. Feel free to PM me or reply here if you wanna something for your game. I will do it for cheapest as possible (it´s holidays ![:)](http://www.touchofdeathforums.com/community/public/style_emoticons//smile.png) ). I also finally installed Skype, so you can message me also my skype acc ([email protected]).
  12. ![](http://www.freemmorpgmaker.com/files/imagehost/pics/02bea575383260c52a9ae2f68793aa3e.png) NEW VERSION (v1.1.3) Finnaly proper pathfinding in Eclipse engine ![;)](http://www.touchofdeathforums.com/community/public/style_emoticons//wink.png) * * * **Changes:** ================================ Miracle Classic v1.1.2 -> v1.1.3 ================================ • Added advanced bug reporting (Credits: Player Worlds) • Replaced stock VB6 MsgBox with custom AlertMsg what will let game process when it appears. • Added A+ search algorithm. Now NPCs are alot smarter and they have finally pathfinding ![:)](http://www.touchofdeathforums.com/community/public/style_emoticons//smile.png) (Credits: Herbert Glarner) • Now events are cached also in client-side map data, so this will decrease loading time of maps with events • Removed 1 useless calculation when loading surface • Added Whisper command to right-click menu • Optimized engine (now clsZlib and clsINI is created only when needed and not at start of engine)
  13. Donated 200 points ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons//biggrin.png)
  14. > Wait, people get bots in their games? I had bots probably in my game.
  15. > Still not defined… Becouse you put it in wrong sub…. Read tutorial carefully. > is this done o-o just watchin since up up and bored.. Yea this tut is 100% working.
  16. RandomString function: ``` Public Function RandomString( _ ByVal length As Long, _ Optional charset As String = "abcdefghijklmnopqrstuvwxyz0123456789" _ ) As String Dim chars() As Byte, value() As Byte, chrUprBnd As Long, i As Long If length > 0& Then Randomize chars = charset chrUprBnd = Len(charset) - 1& length = (length * 2&) - 1& ReDim value(length) As Byte For i = 0& To length Step 2& value(i) = chars(CLng(chrUprBnd * Rnd) * 2&) Next End If RandomString = value End Function ```
  17. > i fixed put one of the things in the wrong place good job Death! I am glad that it is working ![:)](http://www.touchofdeathforums.com/community/public/style_emoticons//smile.png)
  18. > Ain't the ability to cause damage if the person is behind something the biggest plus point of magic? No, i hate that thing in EO ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons//biggrin.png)
  19. What this does? It will simply disable casting spells throught walls or from corners. It is unreal when you can cast spell on someone who is for example behind castle wall, isn´t it? This is only **server side** edit: First, add this sub at bottom of modGameLogic: ``` Public Function isPathCleared(ByVal Index As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long) As Boolean Dim DirX As Integer Dim DirY As Integer Dim IsXDirRight As Integer ' Yeah, it just makes it easier Dim IsYDirDown As Integer Dim CurX As Long Dim CurY As Long Dim XInSquare As Single ' Fraction of the square we're looking at, CurX,CurY Dim YInSquare As Single Dim TestX As Single ' TestX is the X value when Y = 0 or Y = 1, whichever is important Dim TestY As Single Dim slope As Single ' How much y for 1 x CurX = x1 CurY = y1 XInSquare = 0.5 ' Middle of x1 YInSquare = 0.5 ' Middle of y1 If x1 = x2 Then If y1 = y2 Then isPathCleared = True Exit Function End If End If If x2 - x1 = 0 Then ' Would be divide by zero ' Vertical only DirX = 0 IsXDirRight = 0 If y2 > y1 Then DirY = 1 IsYDirDown = 1 Else DirY = -1 IsYDirDown = 0 End If Do ' Move to the next square CurY = CurY + DirY ' Check new square If CurY = y2 Then Exit Do ' ====== ElseIf Map(GetPlayerMap(Index)).Tile(CurX, CurY).Type = TILE_TYPE_BLOCKED Or Map(GetPlayerMap(Index)).Tile(CurX, CurY).Type = TILE_TYPE_RESOURCE Then ' ElseIf Blocked(CurX, CurY) Then ' /===== isPathCleared = False Exit Function End If Loop While (CurY y2) ElseIf y2 - y1 = 0 Then ' Horiz only DirY = 0 IsYDirDown = 0 If x2 > x1 Then DirX = 1 IsXDirRight = 1 Else DirX = -1 IsXDirRight = 0 End If Do ' Move to the next square CurX = CurX + DirX ' Check new square If CurX = x2 Then Exit Do ' ====== ElseIf Map(GetPlayerMap(Index)).Tile(CurX, CurY).Type = TILE_TYPE_BLOCKED Or Map(GetPlayerMap(Index)).Tile(CurX, CurY).Type = TILE_TYPE_RESOURCE Then ' ElseIf Blocked(CurX, CurY) Then ' /===== isPathCleared = False Exit Function End If Loop Else ' Some sort of diagonal If x2 > x1 Then DirX = 1 IsXDirRight = 1 Else DirX = -1 IsXDirRight = 0 End If If y2 > y1 Then DirY = 1 IsYDirDown = 1 Else DirY = -1 IsYDirDown = 0 End If slope = (y2 - y1) / (x2 - x1) Do ' Move to the next square If IsXDirRight Then TestY = (1 - XInSquare) * slope + YInSquare Else TestY = -XInSquare * slope + YInSquare End If If IsYDirDown Then TestX = (1 - YInSquare) / slope + XInSquare Else TestX = -YInSquare / slope + XInSquare End If If (TestX > 0 And TestX < 1) Then ' Go up or down CurY = CurY + DirY ' set the coords for the new square XInSquare = TestX YInSquare = 1 - IsYDirDown ElseIf (TestY > 0 And TestY < 1) Then ' Go left or right CurX = CurX + DirX ' set the coords for the new square XInSquare = 1 - IsXDirRight YInSquare = TestY Else ' Go diagonally CurX = CurX + DirX CurY = CurY + DirY ' set the coords for the new square XInSquare = 1 - IsXDirRight YInSquare = 1 - IsYDirDown End If ' Check new square If CurX = x2 And CurY = y2 Then Exit Do ' ====== ElseIf Map(GetPlayerMap(Index)).Tile(CurX, CurY).Type = TILE_TYPE_BLOCKED Or Map(GetPlayerMap(Index)).Tile(CurX, CurY).Type = TILE_TYPE_RESOURCE Then ' ElseIf Blocked(CurX, CurY) Then ' /===== isPathCleared = False Exit Function End If Loop End If isPathCleared = True End Function ``` Then search for Sub CastSpell and in this sub search for this: ``` Case 1, 3 ' self-cast AOE & targetted AOE If SpellCastType = 1 Then x = GetPlayerX(Index) y = GetPlayerY(Index) ElseIf SpellCastType = 3 Then If TargetType = 0 Then Exit Sub If target = 0 Then Exit Sub If TargetType = targetPlayer Then x = GetPlayerX(target) y = GetPlayerY(target) Else x = MapNpc(MapNum).Npc(target).x y = MapNpc(MapNum).Npc(target).y End If If Not isInRange(Range, GetPlayerX(Index), GetPlayerY(Index), x, y) Then PlayerMsg Index, "Target not in range.", BrightRed SendClearSpellBuffer Index End If ``` And add this **under** it: ``` If Not isPathCleared(Index, GetPlayerX(Index), GetPlayerY(Index), x, y) Then PlayerMsg Index, "Can not reach target.", BrightRed SendClearSpellBuffer Index Exit Sub End If ``` Now search for this: ``` Case 2 ' targetted If TargetType = 0 Then Exit Sub If target = 0 Then Exit Sub If TargetType = targetPlayer Then x = GetPlayerX(target) y = GetPlayerY(target) Else x = MapNpc(MapNum).Npc(target).x y = MapNpc(MapNum).Npc(target).y End If If Not isInRange(Range, GetPlayerX(Index), GetPlayerY(Index), x, y) Then PlayerMsg Index, "Target not in range.", BrightRed SendClearSpellBuffer Index Exit Sub End If ``` and add this **under** it: ``` If Not isPathCleared(Index, GetPlayerX(Index), GetPlayerY(Index), x, y) Then PlayerMsg Index, "Can not reach target.", BrightRed SendClearSpellBuffer Index Exit Sub End If ```
  20. > They are to BFS, Breadth-Fast-Search which is slow and Best-Fast-Search which is actually comparatively faster than A* But A* is da best ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons//biggrin.png) Btw for everyone: This pathfinding is real pathfinding, Ryoku just tested wrong snippet ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons//biggrin.png)
  21. > What I tested was that i set Each AI to seek out food/resources using the 2 different path finding solutions… BFS found the food .. your's didn't. But in my game (RoM) that NPCs will always found me ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons//biggrin.png) Ok nevermind, right now i found real A* pathfinding code, so i will try to implement ti ![:)](http://www.touchofdeathforums.com/community/public/style_emoticons//smile.png)
  22. So my pathfinding is not working? I do not understand what you are trying to show in that video ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons//biggrin.png) But it is searching for shortest path imo. But i tested it only on small map, so i can be wrong and maybe NPCs are just walking around blocked tiles.
  23. > Deathbeam your script is causing NPCs to jump from tile to tile instead of moving smoothly when in pursuit in EO3 > > I installed this shortly after you posted was this one of the bugs found? > > is anyone else having this issue? > > my code contains this (eo3) > > EDIT- I commented out the following and all of its paired end ifs and elses.. seems to do the trick but not sure if it broke somthing else. > > So far seems good.. If any one who knows more then me( SO ANYONE) thinks this should be left in please let me know > > "'Gonna make the npcs smarter.. Implementing a pathfinding algorithm.. we shall see what happens. > > ' If IsOneBlockAway(TargetX, TargetY, CLng(MapNpc(MapNum).NPC(x).x), CLng(MapNpc(MapNum).NPC(x).y)) = False Then > > ' If PathfindingType = 1 Then" > > this is also above " ' 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" > > could this be the issue i see no mention of this line in your tut In EO 3.0 there is already pathfinding lol ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons//biggrin.png) But this one is better, so i recommend replacing it. > Just started working on this for one of my projects, saved me bunch of time thanks I'll let know when what I think of it/any bugs I may find when I get around to adding it. Good ![:)](http://www.touchofdeathforums.com/community/public/style_emoticons//smile.png) > I just applied this (the logic of it) to a VB.net project I was working on, I'll report back the results once i collect sufficient data to prove this works well with a mass swarm. In VB.net? Wow ![:)](http://www.touchofdeathforums.com/community/public/style_emoticons//smile.png) > Be sure to give a clear explination of what this does, not everyone knows what it is excluding myself. But make it noob friendly. It´s pathfinding, i think everyone will got what it is ![:D](http://www.touchofdeathforums.com/community/public/style_emoticons//biggrin.png)
  24. I hate this. Game is looking good from informations, but no screenies ![:(](http://www.touchofdeathforums.com/community/public/style_emoticons//sad.png) I am not going to download anything without seeing any screenies of it.
×
×
  • Create New...