часть 4
Code:
#================================================#
#  ОБЩИЕ ПРОЦЕДУРЫ                               #
#================================================#
;
Sub CharDead()
   WriteLog( 'CHAR IS DEAD!!!', 0 )
   WriteLog( '                  coordinates is ' + str(UO.GetX()) + ', ' + str(UO.GetY()), 0 )
   WriteLog( '                  I go to ressurect' )
   If UO.GetGlobal( 'ModeOfScript' ) <> 5 AND UO.GetGlobal( 'ModeOfScript' ) <> 6 Then
      UO.Msg( '.goankh' )
      wait(1000)
      CheckLag()
   Endif
   ;
   ; ТУТ НАДО БУДЕТ СДЕЛАТЬ АВТОРЕС ЧАРА
   ;
   UO.Exec( 'terminate all' )
endsub
;
Sub MultiRecall( nom )
   If nom == 1 Then
      Recalling( UO.GetGlobal( 'RunbookTile' ), UO.GetGlobal( 'Wall1Rune' ) )
      return
   Endif
   If nom == 2 Then
      Recalling( UO.GetGlobal( 'RunbookTile' ), UO.GetGlobal( 'Wall2Rune' ) )
      return
   Endif
   If nom == 3 Then
      Recalling( UO.GetGlobal( 'RunbookTile' ), UO.GetGlobal( 'Wall3Rune' ) )
      return
   Endif
   If nom == 4 Then
      Recalling( UO.GetGlobal( 'RunbookTile' ), UO.GetGlobal( 'Wall4Rune' ) )
      return
   Endif
   If nom == 5 Then
      Recalling( UO.GetGlobal( 'RunbookTile' ), UO.GetGlobal( 'Wall5Rune' ) )
      return
   Endif
   If nom == 6 Then
      Recalling( UO.GetGlobal( 'RunbookTile' ), UO.GetGlobal( 'Wall6Rune' ) )
      return
   Endif
   If nom == 7 Then
      Recalling( UO.GetGlobal( 'RunbookTile' ), UO.GetGlobal( 'Wall7Rune' ) )
      return
   Endif
   If nom == 8 Then
      Recalling( UO.GetGlobal( 'RunbookTile' ), UO.GetGlobal( 'Wall8Rune' ) )
      return
   Endif
Endsub
;
Sub GetInstrum( typ )
   VAR Instrum
   If typ == 'pickaxe' Then
      Instrum = UO.GetGlobal( 'Pickaxe' )
   Endif
   If typ == 'hatchet' Then
      Instrum = UO.GetGlobal( 'Hatchet' )
   Endif
   If UO.GetGraphic( UO.ObjAtLayer( 'Lhand' ) ) <> Instrum Then
      UO.FindType( Instrum )
      If UO.FindCount() == 0 Then
         return 0
      Endif
      UO.Equipt( 'Lhand', Instrum )
      repeat
         wait(100)
      until UO.GetGraphic( UO.ObjAtLayer( 'Lhand' ) ) == Instrum
      return 1
   Endif
   return 1
endsub
;
Sub SetMassive( nom )
   VAR TypPatch
   If UO.GetGlobal( 'ModeOfScript' ) == '1' Then
      TypPatch = 'walls'
   Endif
   If UO.GetGlobal( 'ModeOfScript' ) == '2' Then
      TypPatch = 'floor'
   Endif
   If UO.GetGlobal( 'ModeOfScript' ) == '3' Then
      TypPatch = 'trees'
   Endif
   If UO.GetGlobal( 'ModeOfScript' ) == '5' Then
      TypPatch = 'vipmi'
   Endif
   If UO.GetGlobal( 'ModeOfScript' ) == '6' Then
      TypPatch = 'vipla'
   Endif
   If UO.GetGlobal( 'ModeOfScript' ) == '5' OR UO.GetGlobal( 'ModeOfScript' ) == '6' Then
      If nom == 1 Then
         UO.SetGlobal( 'NumberPatch', TypPatch + '1' )
         return 2
      Else
         UO.SetGlobal( 'NumberPatch', TypPatch + '2' )
         return 1
      Endif
   Else
      If nom == 8 Then
         UO.SetGlobal( 'NumberPatch', TypPatch + '8' )
         return 1
      Else
         UO.SetGlobal( 'NumberPatch', TypPatch + str(nom) )
         nom = nom + 1
         return nom
      Endif
   Endif
Endsub
;
Sub DropSomeLogs()
   ; В тестовом ламбере сбрасываем обычные логи под ноги и заносим их кол-во
   ; в счетчики
   VAR clrlog = '0x0000'
   VAR typlog = '0x1BDD'
   VAR tmp1, kolvo
   UO.FindType( typlog, clrlog, 'backpack' )
   If UO.FindCount() > 0 Then
      kolvo = UO.GetQuantity( 'finditem' )
      WriteLog( 'I drop ' + str( kolvo ) + ' logs', 0 )
      tmp1 = GetNameLogs( clrlog, kolvo )
      UO.DropHere( 'finditem' )
      wait(1000)
      CheckLag()
   Endif
endsub
;
; на основании цвета определяем название руды
;
Sub GetNameLogs( clr, add )
   VAR nam, res
   If clr == '0x0000' Then
      nam = 'logs'
      res = val( UO.GetGlobal( 'Logs' ) ) + add
      UO.SetGlobal( 'Logs', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'LogCount', 'TreeLogs', str(res) )
      return nam
   Endif
   If clr == '0x0BB3' Then
      nam = 'ancient logs'
      res = val( UO.GetGlobal( 'AncientLogs' ) ) + add
      UO.SetGlobal( 'AncientLogs', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'LogCount', 'AncientLogs', str(res) )
      return nam
   Endif
   If clr == '0x0BB4' Then
      nam = 'sturdy logs'
      res = val( UO.GetGlobal( 'SturdyLogs' ) ) + add
      UO.SetGlobal( 'SturdyLogs', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'LogCount', 'SturdyLogs', str(res) )
      return nam
   Endif
   If clr == '0x04E8' Then
      nam = 'steel logs'
      res = val( UO.GetGlobal( 'SteelLogs' ) ) + add
      UO.SetGlobal( 'SteelLogs', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'LogCount', 'SteelLogs', str(res) )
      return nam
   Endif
   If clr == '0x048B' Then
      nam = 'neitral logs'
      res = val( UO.GetGlobal( 'NeitralLogs' ) ) + add
      UO.SetGlobal( 'NeitralLogs', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'LogCount', 'NeitralLogs', str(res) )
      return nam
   Endif
   If clr == '0x04E7' Then
      nam = 'order logs'
      res = val( UO.GetGlobal( 'OrderLogs' ) ) + add
      UO.SetGlobal( 'OrderLogs', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'LogCount', 'OrderLogs', str(res) )
      return nam
   Endif
   If clr == '0x0486' Then
      nam = 'chaos logs'
      res = val( UO.GetGlobal( 'ChaosLogs' ) ) + add
      UO.SetGlobal( 'ChaosLogs', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'LogCount', 'ChaosLogs', str(res) )
      return nam
   Endif
   If clr == '0x0BB5' Then
      nam = 'titanic logs'
      res = val( UO.GetGlobal( 'TitanicLogs' ) ) + add
      UO.SetGlobal( 'TitanicLogs', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'LogCount', 'TitanicLogs', str(res) )
      return nam
   Endif
   If clr == '0x062A' Then
      nam = 'elvin logs'
      res = val( UO.GetGlobal( 'ElvinLogs' ) ) + add
      UO.SetGlobal( 'ElvinLogs', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'LogCount', 'ElvinLogs', str(res) )
      return nam
   Endif
   UO.SetGlobal( 'Itog', str( 0 ) )
   return 'other logs'
Endsub
;
Sub GetNameOre( clr, add )
   VAR nam, res
   If clr == '0x0000' Then
      nam = 'Iron ore'
      res = val( UO.GetGlobal( 'Iron' ) ) + add
      UO.SetGlobal( 'Iron', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Iron', str(res) )
      return nam
   Endif
   If clr == '0x0455' Then
      nam = 'Damned ore'
      res = val( UO.GetGlobal( 'Damned' ) ) + add
      UO.SetGlobal( 'Damned', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Damned', str(res) )
      return nam
   Endif
   If clr == '0x0493' Then
      nam = 'Kreonit ore'
      res = val( UO.GetGlobal( 'Kreonit' ) ) + add
      UO.SetGlobal( 'Kreonit', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Kreonit', str(res) )
      return nam
   Endif
   If clr == '0x0B77' Then
      nam = 'Copper ore'
      res = val( UO.GetGlobal( 'Copper' ) ) + add
      UO.SetGlobal( 'Copper', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Copper', str(res) )
      return nam
   Endif
   If clr == '0x0488' Then
      nam = 'Bronze ore'
      res = val( UO.GetGlobal( 'Bronze' ) ) + add
      UO.SetGlobal( 'Bronze', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Bronze', str(res) )
      return nam
   Endif
   If clr == '0x07D1' Then
      nam = 'Walean ore'
      res = val( UO.GetGlobal( 'Walean' ) ) + add
      UO.SetGlobal( 'Walean', str( res ) )
      UO.SetGlobal( 'Walean', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Walean', str(res) )
      return nam
   Endif
   If clr == '0x08A5' Then
      nam = 'Golden ore'
      res = val( UO.GetGlobal( 'Golden' ) ) + add
      UO.SetGlobal( 'Golden', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Golden', str(res) )
      return nam
   Endif
   If clr == '0x05B2' Then
      nam = 'Silver ore'
      res = val( UO.GetGlobal( 'Silver' ) ) + add
      UO.SetGlobal( 'Silver', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Silver', str(res) )
      return nam
   Endif
   If clr == '0x0B5B' Then
      nam = 'Oceanite ore'
      res = val( UO.GetGlobal( 'Oceanite' ) ) + add
      UO.SetGlobal( 'Oceanite', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Oceanite', str(res) )
      return nam
   Endif
   If clr == '0x0B78' Then
      nam = 'Blood Rock ore'
      res = val( UO.GetGlobal( 'BloodRock' ) ) + add
      UO.SetGlobal( 'BloodRock', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'BloodRock', str(res) )
      return nam
   Endif
   If clr == '0x0B5A' Then
      nam = 'Sacred ore'
      res = val( UO.GetGlobal( 'Sacred' ) ) + add
      UO.SetGlobal( 'Sacred', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Sacred', str(res) )
      return nam
   Endif
   If clr == '0x04E8' Then
      nam = 'Brilliant ore'
      res = val( UO.GetGlobal( 'Brilliant' ) ) + add
      UO.SetGlobal( 'Brilliant', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Brilliant', str(res) )
      return nam
   Endif
   If clr == '0x04F7' Then
      nam = 'Order ore'
      res = val( UO.GetGlobal( 'Order' ) ) + add
      UO.SetGlobal( 'Order', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Order', str(res) )
      return nam
   Endif
   If clr == '0x0B56' Then
      nam = 'Chaos ore'
      res = val( UO.GetGlobal( 'Chaos' ) ) + add
      UO.SetGlobal( 'Chaos', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Chaos', str(res) )
      return nam
   Endif
   If clr == '0x04F6' Then
      nam = 'Neutral ore'
      res = val( UO.GetGlobal( 'Neutral' ) ) + add
      UO.SetGlobal( 'Neutral', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Neutral', str(res) )
      return nam
   Endif
   If clr == '0x0BA2' Then
      nam = 'Stardust ore'
      res = val( UO.GetGlobal( 'Stardust' ) ) + add
      UO.SetGlobal( 'Stardust', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Stardust', str(res) )
      return nam
   Endif
   If clr == '0x0BAF' Then
      nam = 'Citadel ore'
      res = val( UO.GetGlobal( 'Citadel' ) ) + add
      UO.SetGlobal( 'Citadel', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Citadel', str(res) )
      return nam
   Endif
   If clr == '0x0032' Then
      nam = 'Plaster ore'
      res = val( UO.GetGlobal( 'Plaster' ) ) + add
      UO.SetGlobal( 'Plaster', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Plaster', str(res) )
      return nam
   Endif
   If clr == '0x0031' Then
      nam = 'Sandstone ore'
      res = val( UO.GetGlobal( 'Sandstone' ) ) + add
      UO.SetGlobal( 'Sandstone', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Sandstone', str(res) )
      return nam
   Endif
   If clr == '0x08FD' Then
      nam = 'Stone ore'
      res = val( UO.GetGlobal( 'Stone' ) ) + add
      UO.SetGlobal( 'Stone', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Stone', str(res) )
      return nam
   Endif
   If clr == '0x0481' Then
      nam = 'Marble ore'
      res = val( UO.GetGlobal( 'Marble' ) ) + add
      UO.SetGlobal( 'Marble', str( res ) )
      UO.SetGlobal( 'Itog', str( res ) )
      UO.asmSetIniVar( 'mine&lumb.ini', 'OreCount', 'Marble', str(res) )
      return nam
   Endif
   nam = 'Unknown ore'
   return nam
endsub
;
Sub WriteLog( mes, mod )
   ; Стандартизированная общая функция помещения информации в лог
   ;
   ; Режимы работы:
   ;
   ; 0 - запись текстовой строки.
   ; 1 - старт скрипта. Делается отступ, пишется информация о старте скрипта.
   ;     переданный текст игнорируется.
   ; 2 - проверяется в журнале наличие соответствующих сообщений и пишется
   ;     в журнал итог копки в этой точке. В текстовой строке идут координаты
   ;     чара и координаты точки копки через пробел. Режим (копка или рубка)
   ;     проверяется через глобалку.
   ; 3 - Информация о разгрузке. Текст - чего и сколько выгружаем.
   ; 4 - Информация о доборе. Текст - чего и сколько добираем.
   ; 5 - Сброс информации о количестве добытого разрушившимся инструментом.
   ;     Счетчики берутся из глобальных переменных и потом обнуляются.
   ;     Текст - тип разрушившегося инструмента.
   ;
   ; Дата и время добавляются автоматически.
   ; Режимы 2, 3, 4 помещаются в лог только если включен режим "Подробный лог"
   ; Если "подробный лог" выключен - в пятом режиме счетчики не обнуляются.
   ;
   ; Информация помещается одновременно в текстовый файл и в текстовое окно. Строки
   ; текстового окна считаются и по достижении 100 строк окно очищается. Счетчик
   ; количества строк ведется в глобалке.
   ;
   VAR i, v
   VAR t = val( UO.GetGlobal( 'CountLineTextW' ) )
   VAR fil = UO.GetGlobal( 'LogFile' )
   VAR CurTim = UO.asmGetDate('dd/mm/yy') + ' ' + UO.asmGetTime('hh:nn:ss') + ' '
   If t > 99 Then
      UO.TextClear()
      t = 0
   Endif
   If mod == 0 Then
      UO.asmLogAdd( fil, CurTim + mes )
      UO.TextPrint( CurTim + mes )
      t = t + 1
   Endif
   If mod == 1 Then
      UO.TextOpen()
      UO.TextClear()
      t = 0
      For i = 1 To 3
         UO.asmLogAdd( fil, ' ' )
         UO.TextPrint( ' ' )
      Next
      UO.asmLogAdd( fil, '============================================================' )
      UO.asmLogAdd( fil, CurTim + 'Script started' )
      UO.TextPrint( CurTim + 'Script started' )
      UO.asmLogAdd( fil, '============================================================' )
      t = t + 4
   Endif
   If mod == 2 Then
      If UO.GetGlobal( 'ModeOfScript' ) == '1' OR UO.GetGlobal( 'ModeOfScript' ) == '2' OR UO.GetGlobal( 'ModeOfScript' ) == '5' Then
         v = GetJournalMes( 'pickaxe' )
      Else
         v = GetJournalMes( 'hatchet' )
      Endif
      UO.asmLogAdd( fil, CurTim + mes + ' ' + v )
      UO.TextPrint( CurTim + mes + ' ' + v )
      t = t + 1
   Endif
   If mod == 3 Then
      If UO.GetGlobal( 'CheckLog' ) == '1' Then
         UO.asmLogAdd( fil, CurTim + '========== Discharge ' + mes )
         UO.TextPrint( CurTim + '========== Discharge ' + mes )
         t = t + 1
      Endif
   Endif
   If mod == 4 Then
      If UO.GetGlobal( 'CheckLog' ) == '1' Then
         UO.asmLogAdd( fil, CurTim + '========== I get ' + mes )
         UO.TextPrint( CurTim + '========== I get ' + mes )
         t = t + 1
      Endif
   Endif
   If mod == 5 Then
      If mes == 'hatchet' Then
         UO.asmLogAdd( fil, '============================================================' )
         UO.asmLogAdd( fil, CurTim + 'Hatchet destroyed!' )
         UO.TextPrint( CurTim + 'Hatchet destroyed!' )
         UO.asmLogAdd( fil, '==============================' )
         UO.asmLogAdd( fil, 'Summary:' )
         UO.TextPrint( 'Summary:' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Logs' ) + ' logs' )
         UO.TextPrint( UO.GetGlobal( 'Logs' ) + ' logs' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'AncientLogs' ) + ' ancient logs' )
         UO.TextPrint( UO.GetGlobal( 'AncientLogs' ) + ' ancient logs' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'SturdyLogs' ) + ' sturdy logs' )
         UO.TextPrint( UO.GetGlobal( 'SturdyLogs' ) + ' sturdy logs' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'SteelLogs' ) + ' steel logs' )
         UO.TextPrint( UO.GetGlobal( 'SteelLogs' ) + ' steel logs' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'NeitralLogs' ) + ' neitral logs' )
         UO.TextPrint( UO.GetGlobal( 'NeitralLogs' ) + ' neitral logs' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'ChaosLogs' ) + ' chaos logs' )
         UO.TextPrint( UO.GetGlobal( 'ChaosLogs' ) + ' chaos logs' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'OrderLogs' ) + ' order logs' )
         UO.TextPrint( UO.GetGlobal( 'OrderLogs' ) + ' order logs' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'TitanicLogs' ) + ' titanic logs' )
         UO.TextPrint( UO.GetGlobal( 'TitanicLogs' ) + ' titanic logs' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'ElvinLogs' ) + ' elvin logs' )
         UO.TextPrint( UO.GetGlobal( 'ElvinLogs' ) + ' elvin logs' )
         UO.asmLogAdd( fil, '==============================' )
         t = t + 11
         If UO.GetGlobal( 'CheckLog' ) == '1' Then
            UO.SetGlobal( 'Logs', '0' )
            UO.SetGlobal( 'AncientLogs', '0' )
            UO.SetGlobal( 'SturdyLogs', '0' )
            UO.SetGlobal( 'SteelLogs', '0' )
            UO.SetGlobal( 'NeitralLogs', '0' )
            UO.SetGlobal( 'ChaosLogs', '0' )
            UO.SetGlobal( 'OrderLogs', '0' )
            UO.SetGlobal( 'TitanicLogs', '0' )
            UO.SetGlobal( 'ElvinLogs', '0' )
         Endif
      Endif
      If mes == 'pickaxe' Then
         UO.asmLogAdd( fil, '============================================================' )
         UO.asmLogAdd( fil, CurTim + 'Pickaxe destroyed!' )
         UO.TextPrint( CurTim + 'Pickaxe destroyed!' )
         UO.asmLogAdd( fil, '==============================' )
         UO.asmLogAdd( fil, 'Summary:' )
         UO.TextPrint( 'Summary:' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Iron' ) + ' iron' )
         UO.TextPrint( UO.GetGlobal( 'Iron' ) + ' iron' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Damned' ) + ' damned' )
         UO.TextPrint( UO.GetGlobal( 'Damned' ) + ' damned' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Kreonit' ) + ' kreonit' )
         UO.TextPrint( UO.GetGlobal( 'Kreonit' ) + ' kreonit' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Copper' ) + ' copper' )
         UO.TextPrint( UO.GetGlobal( 'Copper' ) + ' copper' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Bronze' ) + ' bronze' )
         UO.TextPrint( UO.GetGlobal( 'Bronze' ) + ' bronze' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Walean' ) + ' walean' )
         UO.TextPrint( UO.GetGlobal( 'Walean' ) + ' walean' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Golden' ) + ' golden' )
         UO.TextPrint( UO.GetGlobal( 'Golden' ) + ' golden' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Silver' ) + ' silver' )
         UO.TextPrint( UO.GetGlobal( 'Silver' ) + ' silver' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Oceanite' ) + ' oceanite' )
         UO.TextPrint( UO.GetGlobal( 'Oceanite' ) + ' oceanite' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'BloodRock' ) + ' bloodrock' )
         UO.TextPrint( UO.GetGlobal( 'BloodRock' ) + ' bloodrock' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Sacred' ) + ' sacred' )
         UO.TextPrint( UO.GetGlobal( 'Sacred' ) + ' sacred' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Brilliant' ) + ' brilliant' )
         UO.TextPrint( UO.GetGlobal( 'Brilliant' ) + ' brilliant' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Order' ) + ' order' )
         UO.TextPrint( UO.GetGlobal( 'Order' ) + ' order' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Chaos' ) + ' chaos' )
         UO.TextPrint( UO.GetGlobal( 'Chaos' ) + ' chaos' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Neutral' ) + ' neutral' )
         UO.TextPrint( UO.GetGlobal( 'Neutral' ) + ' neutral' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Stardust' ) + ' stardust' )
         UO.TextPrint( UO.GetGlobal( 'Stardust' ) + ' stardust' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Citadel' ) + ' citadel' )
         UO.TextPrint( UO.GetGlobal( 'Citadel' ) + ' citadel' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Plaster' ) + ' plaster' )
         UO.TextPrint( UO.GetGlobal( 'Plaster' ) + ' plaster' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Sandstone' ) + ' sandstone' )
         UO.TextPrint( UO.GetGlobal( 'Sandstone' ) + ' sandstone' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Stone' ) + ' stone' )
         UO.TextPrint( UO.GetGlobal( 'Stone' ) + ' stone' )
         UO.asmLogAdd( fil, UO.GetGlobal( 'Marble' ) + ' marble' )
         UO.TextPrint( UO.GetGlobal( 'Marble' ) + ' marble' )
         UO.asmLogAdd( fil, '==============================' )
         t = t + 23
         If UO.GetGlobal( 'CheckLog' ) == '1' Then
            UO.SetGlobal( 'Iron', '0' )
            UO.SetGlobal( 'Damned', '0' )
            UO.SetGlobal( 'Kreonit', '0' )
            UO.SetGlobal( 'Copper', '0' )
            UO.SetGlobal( 'Bronze', '0' )
            UO.SetGlobal( 'Walean', '0' )
            UO.SetGlobal( 'Golden', '0' )
            UO.SetGlobal( 'Silver', '0' )
            UO.SetGlobal( 'Oceanite', '0' )
            UO.SetGlobal( 'BloodRock', '0' )
            UO.SetGlobal( 'Sacred', '0' )
            UO.SetGlobal( 'Brilliant', '0' )
            UO.SetGlobal( 'Order', '0' )
            UO.SetGlobal( 'Chaos', '0' )
            UO.SetGlobal( 'Neutral', '0' )
            UO.SetGlobal( 'Stardust', '0' )
            UO.SetGlobal( 'Citadel', '0' )
            UO.SetGlobal( 'Plaster', '0' )
            UO.SetGlobal( 'Sandstone', '0' )
            UO.SetGlobal( 'Stone', '0' )
            UO.SetGlobal( 'Marble', '0' )
         Endif
      Endif
   Endif
   UO.SetGlobal( 'CountLineTextW', str( t ) )
endsub
;
Sub GetJournalMes( typ )
   VAR ms1, ms2, ms3, ms4, ms5, ms6, ms7, ms8, ms9, i, s, d
   If typ == 'pickaxe' Then
      ms1 = "There is no ore here to mine"
      ms2 = "Это не копается."
      ms3 = "in your pack."
      ms4 = "You fail to find any useable ore"
      ms5 = "Далеко. Не дотянуться."
      ms6 = "Try mining in rock"
      ms7 = "Хм... Не вижу.. Где копать то?."
      ms8 = "is destroyed*"
      ms9 = "ore at your feet."
   Else
      ms1 = "There are no logs here to chop"
      ms2 = "You can't use"
      ms3 = "You put the"
      ms4 = "You fail to produce any useable wood"
      ms5 = "You are too far away"
      ms6 = "It appears immune to your blow"
      ms7 = "You can't see that"
      ms8 = "is destroyed*"
      ms9 = "ore at your feet."
   Endif
   If UO.InJournal( ms1 ) Then
      If typ == 'pickaxe' Then
         return 'Нет руды'
      Else
         return 'Нет логов'
      Endif
   Endif
   If UO.InJournal( ms2 ) Then
      return 'Не могу'
   Endif
   i = UO.InJournal( ms3 )
   If i Then
      If typ == 'pickaxe' Then
         s = UO.Journal( i - 1 )
         d = len( s )
         s = left( s, d - 13 )
         s = right( s, d - 25 )
         return s
      Else
         return UO.Journal( i - 1 )
      Endif
   Endif
   If UO.InJournal( ms4 ) Then
      return 'Физл'
   Endif
   If UO.InJournal( ms5 ) Then
      return 'Далеко'
   Endif
   If UO.InJournal( ms6 ) Then
      return 'Невозможно'
   Endif
   If UO.InJournal( ms7 ) Then
      return 'Не вижу'
   Endif
   If UO.InJournal( ms8 ) Then
      return 'Инструмент накрылся медным тазом'
   Endif
   If UO.InJournal( ms9 ) Then
      return 'Elemental!'
   Endif
   return ''
endsub
;