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

aeronx

Members
  • Posts

    54
  • Joined

  • Last visited

    Never

Posts posted by aeronx

  1. @'Azizele':

    > @aeronx The NPC's do have a cast time, they just don't play the casting animation. To test this for yourself just set the cast time to about 10s and attack an NPC. After a few seconds they will just stand completely still for 10s and then you'll be hit by the spell.

    Actually, on skywyre engine, thats not true. They keep moving and then they just use the spell. I've tested with 15 sec cast, and nothing. Tested it on a raw version of skywyre
    and it happens the same. NPCs dont have casting time for spells.

    Anyway to fix it skywyre? Thanks!
  2. I've found this on the code..

    Is there anyway to work something like this for NPCs?
    ```
    Function GetDirAwayFromPlayer(playerID As Long, mapnum As Long, eventID As Long) As Long
    Dim i As Long, x As Long, y As Long, x1 As Long, y1 As Long, didwalk As Boolean, WalkThrough As Long, distance As Long
    'This does not work for global events so this MUST be a player one....
    'This Event returns a direction, 5 is not a valid direction so we assume fail unless otherwise told.
    If playerID <= 0 Or playerID > Player_HighIndex Then Exit Function
    If mapnum <= 0 Or mapnum > MAX_MAPS Then Exit Function
    If eventID <= 0 Or eventID > TempPlayer(playerID).EventMap.CurrentEvents Then Exit Function

    x = GetPlayerX(playerID)
    y = GetPlayerY(playerID)
    x1 = TempPlayer(playerID).EventMap.EventPages(eventID).x
    y1 = TempPlayer(playerID).EventMap.EventPages(eventID).y

    i = DIR_RIGHT

    If x - x1 > 0 Then
    If x - x1 > distance Then
    i = DIR_LEFT
    distance = x - x1
    End If
    ElseIf x - x1 < 0 Then
    If ((x - x1) * -1) > distance Then
    i = DIR_RIGHT
    distance = ((x - x1) * -1)
    End If
    End If

    If y - y1 > 0 Then
    If y - y1 > distance Then
    i = DIR_UP
    distance = y - y1
    End If
    ElseIf y - y1 < 0 Then
    If ((y - y1) * -1) > distance Then
    i = DIR_DOWN
    distance = ((y - y1) * -1)
    End If
    End If

    GetDirAwayFromPlayer = i
    End Function

    ```
  3. Hello everybody! Over the last month i've been working on a project, alone, which is quite
    time consuming.

    After a month, using Skywyre engine and the help from many from this community I have
    an engine nearly good to start a game.

    The only thing missing is a combat change. Now, the combat system is pretty basic. You get
    close or run(if you use ranged), cast spells and press CTRL. If you have enough dmg and defense
    you survive, otherwise, you dont. Easy.

    The last things im looking for are:
    #Diagonal attacks for players and npcs.
     -Why this? Because with the linear spells, you can stay diagonal to dodge their spells and you need
    to pay more attention, becoming more challenging.

    #NPC_BEHAVIOUR_RUN
     -For exemple, if you have a NPC that uses arrows or spells, i want them to run from the player, so you
    have to chase them and you will probably run into more npcs, becoming harder.

    I've been trying to mess with pathfinding, adding a new behaviour, changing the X Y for diagonal attacks
    but nothing seems to work.

    So, im looking for some help here in the community, and to point me out a way, because i think this will
    help many people and it would be a perfect addition to any game. I'll gladly accept any help! If someone
    wants a part in my game, im more than happy to have your help, and i'll share the engine with the changes
    once its done, since im not looking to make cash, i just want to people enjoy my work. And after all, this is a
    community to share and show your work!

    Thanks for reading and expecting the best of you all! Thanks for your time!
  4. Thanks all for your help.

    I've tried something like this, but now if you face a blocked tile from 3 tiles, but it has range 4\. The spell wont cast, even if there is a NPC on the way.
    I've been trying some diferent ways but i havent been successfull.

    This is what i have now. (Doesnt work right)

    ```

    Case DIR_UP

                           Calculate = GetPlayerY(index) - Linear
                           If Calculate <= 0 Then
                           DidCast = True
                           GoTo theEnd
                           End If
                           Exit Sub
                           If Map(GetPlayerMap(index)).Tile(GetPlayerX(index), GetPlayerY(index) - Linear).Type = TILE_TYPE_BLOCKED Then
                           DidCast = True
                           GoTo theEnd
                           End If
                           Exit Sub
    theEnd:
                           If DidCast Then
                           SendAnimation GetPlayerMap(index), Spell(SpellNum).SpellAnim, GetPlayerX(index), GetPlayerY(index) - Linear
                           IsUseLinear index, SpellNum, Vital, GetPlayerMap(index), GetPlayerX(index), GetPlayerY(index) - Linear
                           End If

    ```
  5. @'Adrian':

    > @'aeronx':
    >
    > > Hello Sky. Wonder if you know a fix or do you intend to fix the move-stop-move-stop movement from NPC?
    > > Please let me know! Thanks
    > >
    > > Keep it up.
    >
    > Aeronx, I am not sure if this is what you mean but you can try increasing the NPC's Movement speed in the NPC Editor and you should see it animate properly.

    That doesnt do much, it just make the npc move faster throgh the tile, the gettickcount + 500 its the same on the serverloop. (That the time the game uses to do something).
    But lowering the 500 to under 350, make the npc blinky and faster than light, regardless the movement speed.
    Expecting any other solution xD

    * * *

    @'Xepher002':

    > Are there any tutorials on Eclipse Skywyre yet? It really looks amazing, and I'm currently figuring it out.

    Ask whatever you need, ill try to answer, but not an expert.
  6. Hello everybody! Looking on other forums, I found this script, working pretty neat, so i thought i share it.

    Note: Tested on skywyre engine, works fine Perfect! (Fixed by: **[abhi2011](http://www.eclipseorigins.com/user-35814.html)** )

    ~~ Client Side~~

    Search for:

    ```
    Public Const SPELL_TYPE_WARP As Byte = 4
    ```
    After it add:

    ```
    Public Const SPELL_TYPE_LINEAR As Byte = 5 ' or your next spell_type number
    ```
    Open FrmEditor_Spell, click on cmbType and blow this:

    ```
    Spell(EditorIndex).Type = cmbType.ListIndex
    ```
    Add this:

    ```

    If cmbType.text = "Linear" Then

    scrlRange.Value = 0
    chkAOE.Value = 1
    End If

    ```
    Click cmbType properties and add Linear to the list

    Client side done.

    ~~Server Side~~

    At Sub Public Sub CastSpell search for:

    ```
    Dim x As Long
    Dim y As Long

    ```
    Under it add:

    ```
    Dim Linear, Calculate As Long
    ```
    At the same sub look for:

    ```
    Case 2 ' targetted
    ```
    On the End Select above Case 2, above it add:

    ```

    Case SPELL_TYPE_LINEAR

    DidCast = True
    Linear = 1
    Do While Linear < Spell(spellnum).AoE

    Select Case GetPlayerDir(index)

                            Case DIR_UP

                            Calculate = GetPlayerY(index) - Linear
                            If Calculate <= 0 Then
                            DidCast = True
                            GoTo theEnd
                            End If
                            If Map(GetPlayerMap(index)).Tile(GetPlayerX(index), GetPlayerY(index) - Linear).Type = TILE_TYPE_BLOCKED Then
                            DidCast = True
                            GoTo theEnd
                            End If
                            SendAnimation GetPlayerMap(index), Spell(SpellNum).SpellAnim, GetPlayerX(index), GetPlayerY(index) - Linear
                            IsUseLinear index, SpellNum, Vital, GetPlayerMap(index), GetPlayerX(index), GetPlayerY(index) - Linear

                            Case DIR_DOWN
                            Calculate = GetPlayerY(index) + Linear
                            If Calculate <= 0 Then
                            DidCast = True
                            GoTo theEnd
                            End If
                            If Map(GetPlayerMap(index)).Tile(GetPlayerX(index), GetPlayerY(index) + Linear).Type = TILE_TYPE_BLOCKED Then
                            DidCast = True
                            GoTo theEnd
                            End If
                            SendAnimation GetPlayerMap(index), Spell(SpellNum).SpellAnim, GetPlayerX(index), GetPlayerY(index) + Linear
                            IsUseLinear index, SpellNum, Vital, GetPlayerMap(index), GetPlayerX(index), GetPlayerY(index) + Linear

                            Case DIR_LEFT
                            Calculate = GetPlayerX(index) - Linear
                            If Calculate <= 0 Then
                            DidCast = True
                            GoTo theEnd
                            End If
                            If Map(GetPlayerMap(index)).Tile(GetPlayerX(index) - Linear, GetPlayerY(index)).Type = TILE_TYPE_BLOCKED Then
                            DidCast = True
                            GoTo theEnd
                            End If
                            SendAnimation GetPlayerMap(index), Spell(SpellNum).SpellAnim, GetPlayerX(index) - Linear, GetPlayerY(index)
                            IsUseLinear index, SpellNum, Vital, GetPlayerMap(index), GetPlayerX(index) - Linear, GetPlayerY(index)

                            Case DIR_RIGHT
                            Calculate = GetPlayerX(index) + Linear
                            If Calculate <= 0 Then
                            DidCast = True
                            GoTo theEnd
                            End If
                            If Map(GetPlayerMap(index)).Tile(GetPlayerX(index) + Linear, GetPlayerY(index)).Type = TILE_TYPE_BLOCKED Then
                            DidCast = True
                            GoTo theEnd
                            End If
                            SendAnimation GetPlayerMap(index), Spell(SpellNum).SpellAnim, GetPlayerX(index) + Linear, GetPlayerY(index)
                            IsUseLinear index, SpellNum, Vital, GetPlayerMap(index), GetPlayerX(index) + Linear, GetPlayerY(index)

    End Select
    Linear = Linear + 1
    Loop

    ```
    At the end of CastSpell sub find:
    ```
    If DidCast then
    ```
    Above it, add:
    ```
    theEnd:
    ```

    After whole Public Sub StunNPC add:
    ```
    Function IsUseLinear(ByVal index As Integer, ByVal spellnum As Integer, ByVal Vital As Long, ByVal Mapa As Integer, ByVal x As Byte, ByVal y As Byte)

    Dim i As Long

    'Loop Global Npc
    For i = 1 To MAX_MAP_NPCS
    If MapNpc(Mapa).NPC(i).Num > 0 And MapNpc(Mapa).NPC(i).x = x And MapNpc(Mapa).NPC(i).y = y And MapNpc(Mapa).NPC(i).Vital(HP) > 0 Then PlayerAttackNpc index, i, Vital, spellnum
    Next

    'Loop Global Player
    For i = 1 To Player_HighIndex
    If GetPlayerMap(i) = Mapa And GetPlayerX(i) = x And GetPlayerY(i) = y Then PlayerAttackPlayer index, i, Vital, spellnum
    Next
    End Function

    ```
    After:

    ```
    Public Const SPELL_TYPE_WARP As Byte = 4
    ```
    Add:

    ```
    Public Const SPELL_TYPE_LINEAR As Byte = 5 'or whatever number you need
    ```
    Aaand you are done!

    You just now need to create a new spell, set the animation, vital and range (from AOE range) and you have it.

    Thanks! I wish it helps somebody.
×
×
  • Create New...