Jump to content

Recommended Posts

Posted (edited)

hello everyone merry christmas. maybe one of you smart ones can help me and give me a tip where in (java/j2r/gameserver/ai) can i change the distance between monster and player?

 

  my problem is, almost all monsters run into the player before they start attacking, so they are practically in the same place as the player.

 

  I would like to have all the monsters stick to the attack range... and don't run into the player. does anyone have any good advice/tips?

 

is it this ,found at code line 1255

 

                final L2Character target = getAttackTarget();
                if (target != null)
                {
                    if (target.isMoving())
                    {
                        range -= 100;
                    }
                    // moveToPawn(target, Math.max(range, 5));
                    moveTo(target.getLocation());
                }
            }
            return;

Edited by Vision
Posted
14 hours ago, HyperBlown said:

can you give us more information? All monsters should go to player first before attacking. (attacking will auto path to player if not in range...)

hello, yes the monsters run to the player and then they attack, that works fine. only they run into the player, so they are far too close to the player. you only see a bunch of monsters standing inside each other in the same place as the player. I would like to change that, that the monsters stop just in front of the player and don't run into him.

Posted
moveTo goes on the exact same spot than X/Y/Z. It uses MoveToLocation packet, which got no specific content about offset. Use moveToPawn to set and handle an offset.

If you can't use moveToPawn (for no reason, but let's say you can't), edit updatePosition in order to handle offset and call a stopMove if you reached the place (if offset > 0 and dist < offset return true). It's definitively not what L2OFF is supposed to do, but it will work.

Without proper offset calculation/handling, everything like bows etc will make you melee.
Posted
3 hours ago, Tryskell said:

moveTo goes on the exact same spot than X/Y/Z. It uses MoveToLocation packet, which got no specific content about offset. Use moveToPawn to set and handle an offset.

If you can't use moveToPawn (for no reason, but let's say you can't), edit updatePosition in order to handle offset and call a stopMove if you reached the place (if offset > 0 and dist < offset return true). It's definitively not what L2OFF is supposed to do, but it will work.

Without proper offset calculation/handling, everything like bows etc will make you melee.

many thanks for your tips. The problem is that I don't know anything about writing code. if you would be so kind and give me an example of how the code you gave me as a tip should look like, i would be extremely grateful.

Posted
Movement is a complex (not the hardest, but still) code, unfortunately giving you an "exemple" would be basically coding it for you. And launching yourself on such thing without experience is bad aswell.

Eventually, read old L2J code, movement is working "ok" - at least it doesn't have your type of issue. Try to mimic what exists, on whatever pack the feature is working on.

You can begin to quote moveTo and unquote moveToPawn and figure if it works better or not.
Posted
7 hours ago, Tryskell said:

Movement is a complex (not the hardest, but still) code, unfortunately giving you an "exemple" would be basically coding it for you. And launching yourself on such thing without experience is bad aswell.

Eventually, read old L2J code, movement is working "ok" - at least it doesn't have your type of issue. Try to mimic what exists, on whatever pack the feature is working on.

You can begin to quote moveTo and unquote moveToPawn and figure if it works better or not.

ok thanks for your help. I am going to try it.

Posted

final L2Character target = getAttackTarget();
                if (target != null)
                {
                    if (target.isMoving())
                    {
                        range -= 100;
                    }
                    // moveToPawn(target, Math.max(range, 5)); -- delete the "//"  

"//" if is if front of a code line , the compiler wont use that line in your code. so you can try with movetopawn and it should work normal.
                    moveTo(target.getLocation());     --- delete this line at all
                } 
            }

 

 

===============================================

final L2Character target = getAttackTarget();
                if (target != null)
                {
                    if (target.isMoving())
                    {
                        range -= 100;
                    }

                    moveTo(target.getLocation());   

if (!this.isInsideRadius(worldPosition.getX(), worldPosition.getY(), (int) (10+ target.getCollisionRadius()), false))
        {

            
            int x = target.getX();
            int y = target.getY();
            
            double dx = worldPosition.getX() - x;
            double dy = worldPosition.getY() - y;
            
            double dist = Math.sqrt(dx * dx + dy * dy);
            
            double sin = dy / dist;
            double cos = dx / dist;
            
            dist -= offset - 5;
            
            x += (int) (dist * cos);
            y += (int) (dist * sin);
            
            moveTo(x, y, worldPosition.getZ());
            
        }

                } 
            }

 

try this maybe is bullshit maybe works , you can check how a raidboss and minions not colide into eachother and addapt or maybe just use movetopawn best but probably someone added "//" bcs he know smth we don't.

Posted
On 12/27/2022 at 4:37 PM, LoVe+ said:

final L2Character target = getAttackTarget();
                if (target != null)
                {
                    if (target.isMoving())
                    {
                        range -= 100;
                    }
                    // moveToPawn(target, Math.max(range, 5)); -- delete the "//"  

"//" if is if front of a code line , the compiler wont use that line in your code. so you can try with movetopawn and it should work normal.
                    moveTo(target.getLocation());     --- delete this line at all
                } 
            }

 

 

===============================================

final L2Character target = getAttackTarget();
                if (target != null)
                {
                    if (target.isMoving())
                    {
                        range -= 100;
                    }

                    moveTo(target.getLocation());   

if (!this.isInsideRadius(worldPosition.getX(), worldPosition.getY(), (int) (10+ target.getCollisionRadius()), false))
        {

            
            int x = target.getX();
            int y = target.getY();
            
            double dx = worldPosition.getX() - x;
            double dy = worldPosition.getY() - y;
            
            double dist = Math.sqrt(dx * dx + dy * dy);
            
            double sin = dy / dist;
            double cos = dx / dist;
            
            dist -= offset - 5;
            
            x += (int) (dist * cos);
            y += (int) (dist * sin);
            
            moveTo(x, y, worldPosition.getZ());
            
        }

                } 
            }

 

try this maybe is bullshit maybe works , you can check how a raidboss and minions not colide into eachother and addapt or maybe just use movetopawn best but probably someone added "//" bcs he know smth we don't.

hi thank you very much for your code example and your time. I just did it with, moveToPawn(target, Math.max(range, 50)); instead of (range, 5)) and it works perfectly.

 

you seem to know your way around the code extremely well....perhaps you can help me with a problem that's really nagging at me. I do a lot of client modding and bring new monsters into the game,...with the UE2003, and with every new monster I noticed that the spine_rotation_animation is missing with a normal hit. do you perhaps know what the error could be,..or is it in the class_uc_file?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • Thank you for sharing this with us!   
    • Server L2 Reborn x1 C4 Signature   I am looking to buy a client modification, such as l2.ini or other possible files on the server The server uses SmartGuard protection, but as far as I understand, not all files are checked before launch   Сервер L2 Reborn x1 C4 Signature Ищу возможность приобрести модификацию клиента, например l2.ini или других возможных файлов на сервере. На сервере установлена защита SmartGuard, но, насколько я понимаю, не все файлы проверяются перед запуском. _______________________________________________________________ https://join.skype.com/invite/C72FPnumKn7e - Skype https://t.me/rebornclient - Telegram  
    • 🎉 The Big Moment Has Arrived! 🎉   Tomorrow is the day we've all been waiting for! L2KvN is opening its gates again, and we are waiting for you all to start this epic journey together! 🌟   🗓️ Date: November 17, 2024 ⏰ Time: 20:00 Greece (Athens), Russia (Moscow), Lithuania 18:00 United Kingdom 13:00 USA (Eastern Time), Argentina 10:00 AM US (Pacific Time) 14:00 Brazil 05:00 Russia (Vladivostok) ✨ What awaits you: ⚔️ Unique gameplay and intense PvP encounters 🎁 Exclusive events and rich rewards 👥 Live community and instant support 📈 Continuous upgrades for the ultimate experience 💬 Bring your friends, organize your teams, and get ready to conquer the world of L2KvN! 📢 Don't forget: We are here to help you! If you are a Clan Leader or Streamer, please contact us to become a part of this great community. 🛡️ The countdown is over – tomorrow we start! The game is just beginning… again! 💪   🌍 Dating in the world of L2KvN!
    • Very cool.   Unfortunately, I can't afford this fee.
    • DISCORD : utchiha_market telegram : https://t.me/utchiha_market SELLIX STORE : https://utchihamkt.mysellix.io/ Join our server for more products : https://discord.gg/hood-services https://campsite.bio/utchihaamkt  
  • Topics

×
×
  • Create New...