NTM_MoveTo problem

12/08/2010 17:27 aceofspades1984#1
ich will dass er von area 3 zu area2 wechselt

NTM_MoveTo(areaid, x, y, retry, clearpath);


NTM_MoveTo - ich bewegemich nach -> areaid
areaid - wo ich hin will (Areas-txt) 2 blood moor
x,y - coordinaten ???
retry - wie oft er versuchen soll dort hin zu kommen schätze ich
clearpath - ob er alles killen soll was auffem weg liegt schätze ich
soweit so gut

mein problem sind die coordinaten da ich nicht zu irgendwekchen speziellen coords will ich will nur in die are id und dann NTA_ClearLevel();
soweit ich dass weiß sind die coords eh immer anderst ist ja dynamische karte

im blood moor(2) könnte ich mich zu den den stairs bewegen wie es beim mausoleum skript gemacht wurde .....

würde ich aber gerne umgehen er darf ruhig anfangen zu killen sobald er im moor ist ...
12/08/2010 18:14 Muddy Waters#2
Quote:
Originally Posted by aceofspades1984 View Post
ich will dass er von area 3 zu area2 wechselt

NTM_MoveTo(areaid, x, y, retry, clearpath);


NTM_MoveTo - ich bewegemich nach -> areaid
areaid - wo ich hin will (Areas-txt) 2 blood moor
x,y - coordinaten ???
retry - wie oft er versuchen soll dort hin zu kommen schätze ich
clearpath - ob er alles killen soll was auffem weg liegt schätze ich
soweit so gut

mein problem sind die coordinaten da ich nicht zu irgendwekchen speziellen coords will ich will nur in die are id und dann NTA_ClearLevel();
soweit ich dass weiß sind die coords eh immer anderst ist ja dynamische karte

im blood moor(2) könnte ich mich zu den den stairs bewegen wie es beim mausoleum skript gemacht wurde .....

würde ich aber gerne umgehen er darf ruhig anfangen zu killen sobald er im moor ist ...
Du brauchst aber konkrete Koordinaten, ansonsten kann der Pfad nicht berechnet werden. ;)

Das machst du am geschicktesten, indem du einfach mal die Räume in der Zielebene durchgehst, dir den nächstliegenden raussucht und dich dann zu diesem hinbewegst.

Ich habe dir mal schnell eine Funktion runtergetippt, die dir die Koordinaten ausgibt als coord Objekt zurückgibt. Aber in jedem Fall überprüfen, ob du nicht den Nullpointer zurückbekommen hast, bevor die die Koordinaten an die NTM_MoveTo() Funktion verfütterst. ;)

Ungetestest, ich hoffe es sind keine Tippfehler drin:
Code:
function MW_GetClosestRoomCoord(dest)
{
    var _room = GetRoom(dest);
    var _rooms = new Array();
    var _mindist, _dist, _minIndex;

    _mindist = 1000000;
    
    if(_room)
    {
        do
        {
            _rooms.push([parseInt(_room.x * 5 + _room.xsize * 5 / 2), parseInt(_room.y * 5 + _room.ysize * 5 / 2)]):
        } while(_rooms.GetNext());
        
        for(var i = 0; i < _rooms.length; i++)
        {
            _dist = GetDistance(me.x, me.y, _rooms[i][0], _rooms[i][1]);
            
            if(_dist < _mindist)
            {
                _mindist = _dist;
                _minIndex = i;
            }
        }
        
        return new coord(_rooms[_minIndex][0], _rooms[_minIndex][1]);
    }
    
    return null;
}
Lg
Muddy