Наследство от Edred-а

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
SLAK
Posts: 182
Joined: 2005-08-19 16:12:23
Contact:

Post by SLAK »

StealthOCS wrote: свой шард.

АОС?
StealthOCS
Posts: 32
Joined: 2006-03-24 02:40:24
Location: Odintsovo, Russia
Contact:

Post by StealthOCS »

SLAK wrote:
StealthOCS wrote: свой шард.

АОС?

AOS. Middle-Earth ( http://www.middle-earth.ru или http://middle-earth.netron.ru )
Qui quaerit, reperit
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Проверь содержание файлов Resource_Map.dat и Resource_Static.dat. Чем черт не шутит, я на АоСе очень давно играл, может там другие типы тайлов у вас в шахтах... Я и АГРС эти файлы на Сфере делали, на Цитадели и на ДРВ.
SLAK
Posts: 182
Joined: 2005-08-19 16:12:23
Contact:

Post by SLAK »

StealthOCS wrote:AOS. Middle-Earth ( http://www.middle-earth.ru или http://middle-earth.netron.ru )

Пример:
number asmMapGetTile(number X, number Y, number Map)
последний параметр "number Map" у тя в примере равен нулю, а это обычно миры Фелюка и Траммел, поиграйся с этим параметром :wink: Мне в свое время помогло...
StealthOCS
Posts: 32
Joined: 2006-03-24 02:40:24
Location: Odintsovo, Russia
Contact:

Post by StealthOCS »

У меня как раз Felucca или Trammel. Пробую в Миноке :(

Code: Select all

UO.Print(STR(UO.asmMapGetTile(INT(x), INT(y), 0)))
- пишет номер (Dec), соответственно в Resource.map он есть (hex).
А вот

Code: Select all

if UO.asmWaitTargetMapTile( 'rock ',INT(x), INT(y) , 0 ) then
   uo.Print('ok')
   endif
- никогда не поисходит :(
Вот мой пример:

Code: Select all

sub Test()
var x,y
While true
   UO.asmTLMapClear()
   UO.asmTLMapOpen('Resource_Map.dat')
   UO.asmTLStaticClear()
   x=UO.GetX()
   y=UO.GetY()
   UO.Print(STR(UO.asmMapGetTile(INT(x), INT(y), 0)))
   if UO.asmWaitTargetMapTile( 'rock ',INT(x), INT(y) , 0 ) then
     uo.Print('ok')
   endif

   While UO.GetX()==x and UO.GetY()==y
    if uo.InJournal('stop') then
      DeleteJournal('stop')
     end if
      Wait(500)
   Wend

Wend
end sub
Qui quaerit, reperit
omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

На RunUO фокус с Z равный 0 не проходит, указывай настоящее значение Z. Это не Сфера.
StealthOCS
Posts: 32
Joined: 2006-03-24 02:40:24
Location: Odintsovo, Russia
Contact:

Post by StealthOCS »

Пробую вот такую конструкцию:

Code: Select all

uo.print((UO.asmTLMapGetLogic(UO.asmMapGetTile(INT(x), INT(y), 0))))

в той же процедуре (см.выше) - пишет, что rock, но if UO.asmWaitTargetMapTile( 'rock',INT(x), INT(y) , 0 ) then - все равно не срабатывает :(

Вторая ночь - разбор полета :(
Qui quaerit, reperit
SLAK
Posts: 182
Joined: 2005-08-19 16:12:23
Contact:

Post by SLAK »

А какая у тебя версия АСМа? Там в некоторых версиях кажись эти команды не пашут... попробуй версию 412.25 чтоли.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Code: Select all

if UO.asmWaitTargetMapTile( 'rock ',INT(x), INT(y) , 0 ) then


А почему 'rock '? Пробел-то зачем тут? :shock: Ты две ночи не можешь найти пробел??? :shock: :shock: :shock: :shock:
StealthOCS
Posts: 32
Joined: 2006-03-24 02:40:24
Location: Odintsovo, Russia
Contact:

Post by StealthOCS »

Без пробела :)
Это при редактировании видимо пробел нажал :)
Qui quaerit, reperit
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Ну что ж, мне нужна статистика. На АоС я не пойду, клиент ставить не хочу, но все же хотел бы услышать еще от кого-нибудь, работает ли у него новая длл-ка с файлами карты. На других клиентах. Насчет АоСа передам АГРСу, но тут решения быстрее всего просто не будет, так что экспериментируй, пробуй.
StealthOCS
Posts: 32
Joined: 2006-03-24 02:40:24
Location: Odintsovo, Russia
Contact:

Post by StealthOCS »

Жаль, но у меня не работает именно UO.asmWaitTargetMapTile( 'rock',INT(x), INT(y) , 0 ).
:(
У кого нить это работает???
Qui quaerit, reperit
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

StealthOCS wrote:Жаль, но у меня не работает именно UO.asmWaitTargetMapTile( 'rock',INT(x), INT(y) , 0 ).
:(
У кого нить это работает???


Я лично еще последнюю длл не тестил. Обязательно буду, но когда - вот в чем вопрос. Времени не хватает катастрофически... :cry:

ЗЫ: Попробуй аналогичную команду на статику, в лесу, в простом скрипте на ламбер. Просто интересно, это все кардинально или только с картой связано.
Fransua
Posts: 20
Joined: 2004-09-19 06:19:12
Contact:

Post by Fransua »

Такаяже проблема возникла и у меня, на дрв. Пробовал и скартой и со статикой.

Code: Select all

 UO.Print(STR(UO.asmMapGetTile(INT(x), INT(y), 0))) 

Выдаёт всё нормально, совпадает с тем что есть в Resource_map.dat(конечно после перевода в hex).
А вот

Code: Select all

 UO.asmWaitTargetMapTile( 'rock',INT(x), INT(y) , 0 ). 

и

Code: Select all

UO.asmWaitTargetStaticTile('tree', X, Y, 0) 

Выдают 0.
StealthOCS
Posts: 32
Joined: 2006-03-24 02:40:24
Location: Odintsovo, Russia
Contact:

Post by StealthOCS »

Вот, вот...
Я не один :(
Qui quaerit, reperit
Diablik
Posts: 11
Joined: 2005-04-03 11:15:40
Contact:

Post by Diablik »

Сам макрос запускается, но работает ужасно медленно и деревья не видит. Шаг, 10 секунд пауза.
omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

Edred wrote:
StealthOCS wrote:Жаль, но у меня не работает именно UO.asmWaitTargetMapTile( 'rock',INT(x), INT(y) , 0 ).
:(
У кого нить это работает???


Я лично еще последнюю длл не тестил. Обязательно буду, но когда - вот в чем вопрос. Времени не хватает катастрофически... :cry:

ЗЫ: Попробуй аналогичную команду на статику, в лесу, в простом скрипте на ламбер. Просто интересно, это все кардинально или только с картой связано.



Это не баг, это фича...


Дополнительные ловушки прицелов:
В ASM реализованы несколько дополнительных ловушек прицелов. Практически все их можно заменить громоздкими функциями, но делать это следует только в том случае если вас не устраивает их функциональность. Такое может быть на некоторых шардах. Но лучше не быть эгоистом и предварительно обсудить со мной возможности их модернизации.

number asmWaitTragetMapTile(string LogicType, number X, number Y, number Map)
Если ячейка карты Map в координатах X,Y принадлежит логическому типу LogicType по таблице карты, функция установит ловушку прицела UO.WaitTargetTile('0',STR(X),STR(Y),STR(UO.asmMapGetZ(X,Y))) и вернет 1. В противном случае функция вернет 0.
Функция не будет работать в тех местах, где персонаж находится ниже уровня карты и всегда будет возвращать 0. Например в шахтах. Это сделано для вашей собственной безопасности, поскольку ни один трезвый ГМ не пройдет мимо персонажа, копающего потолок в шахте.

number asmWaitTragetStaticTile(string LogicType, number X, number Y, number Map)
Если на карте Map в координатах X,Y есть статичный объект, принадлежащий логическому типу LogicType по таблице статики, функция установит на него ловушку прицела UO.WaitTargetTile(***) и вернет 1. В противном случае функция вернет 0.


Code: Select all

if UO.asmTLMapGetLogic(UO.asmMapGetTile(X,Y,0))=='water' then; Если у нас тут водичка
   UO.WaitTargetTile(STR(0),STR(X),STR(Y),STR(UO.asmMapGetZ(X,Y)); Устанавливаем на нее прицел
   UO.UseType(FishingPole); Используем удочку
   wait(5000); Ждем клева :)
endif
Koh
Posts: 30
Joined: 2006-03-10 19:24:12

Post by Koh »

так когда появится долгожданная версия асма???
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Koh wrote:так когда появится долгожданная версия асма???


Это ты про что? Версию, которой можно пользоваться, я выложил, работу с ини-файлами она поддерживает. Теперь собираю статистику работы по ней, сам буду еще тестить. Потом все замечания передам АГРСу, он поправит и тогда уже будет релиз. Чем меньше вы даете инфы о том, что работает или не работает, тем позже будет финальная версия.
StealthOCS
Posts: 32
Joined: 2006-03-24 02:40:24
Location: Odintsovo, Russia
Contact:

Post by StealthOCS »

Приношу свои извинения по поводу поста о неработающих функциях в АСМ'е!!!
Все решилось после написания следующего кода (см.ниже)
1. Необходимо удалить лишние пробелы в файлах с ресурсами - и все встает на свои места.
2. MapGetTile смотрит на тайл находящийся на высоте MapGetZ, т.е. если вы в пещере - то он смотрит на верх горы (грубо говоря)
3. А amsWaitTargetMapTile, как я понял смотрит не на высоту MapGetZ, а на текущую, из-за этого хоть и TLMapGetLogic возвращает 'rock', но прицел не устанавливается.

ВСЕМ ОГРОМНОЕ СПАСИБО

Code: Select all

sub testMAP()
    var X,Y,dx,dy,mgz,mgt,CanMine,nmap
    UO.asmTLMapOpen('Resource_Map.dat')
    UO.asmTLStaticOpen('Resource_Static.dat')
    While not uo.Dead()
    X=UO.GetX()
    Y=uo.GetY()
    dx=uo.GetX()
    dy=uo.GetY()
    mgz=uo.asmMapGetZ( X, Y, 0)
    mgt=uo.asmMapGetTile( X, Y, 0)
    UO.Print('--------------------------------')
    UO.Print('asmMapGetZ = '+str(mgz))
    UO.Print('asmMapGetTile = '+str(mgt))
    UO.Print('asmTLMapGetLogic = -'+uo.asmTLMapGetLogic(mgt)+'-')
        For nmap=0 to 3
            CanMine=UO.asmWaitTargetMapTile('rock',UO.GetX(),UO.GetY(),nmap)
                if CanMine Then
                    uo.Print('!asmWaitTargetMapTile'+str(nmap)+' - Ok')
                    uo.canceltarget()
                else
                    ;uo.Print('asmWaitTargetMapTile'+str(nmap)+' - Error')
                endif
            CanMine=UO.asmWaitTargetMapTile('rock ',UO.GetX(),UO.GetY(),nmap)
                if CanMine Then
                    uo.Print('!asmWaitTargetMapTile with space'+str(nmap)+' - Ok')
                    uo.canceltarget()
                else
                    ;uo.Print('asmWaitTargetMapTile with space'+str(nmap)+' - Error')
                endif
            CanMine=UO.asmWaitTargetStaticTile('rock',UO.GetX(),UO.GetY(),nmap)
               if CanMine Then
                    uo.Print('!!asmWaitTargetStaticTile'+str(nmap)+' - Ok')
                    uo.canceltarget()
                else
                    ;uo.Print('asmWaitTargetStaticTile'+str(nmap)+' - Error')
                endif
            CanMine=UO.asmWaitTargetStaticTile('rock ',UO.GetX(),UO.GetY(),nmap)
               if CanMine Then
                    uo.Print('!!asmWaitTargetStaticTile with space'+str(nmap)+' - Ok')
                    uo.canceltarget()
                else
                    ;uo.Print('asmWaitTargetStaticTile with space'+str(nmap)+' - Error')
                endif
        Next
    UO.Print('--------------------------------')
        while dx==X and dy==Y
        wait(100)
        dx=uo.GetX()
        dy=uo.GetY()
        WEnd
    WEnd


end sub
Qui quaerit, reperit
Post Reply