Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Majestio

Pages: [1]
1
Предложения / Re: Скорость клика
« on: April 06, 2023, 12:58:24 AM »
Если нужно во всём скрипте, в чём проблема сделать свою функцию? Весь "костыль" пишется за 30 секунд.
Vint, на счет редкого использования ... да, ты где-то прав. Пеплом посыпаю голову - а про функции я-то и забыл, ппц :o

P.S. Заходил вчера пошариться по сайту из ссылки. Когда-то тоже была идея сделать типа блога-заметок на память. Но я ленивая жопа и до этого не дошло, так и использую текстовые файлы с заметками по определённым темам.
С появлением облачных хранилищ отпала потребность самому обеспечивать доступ к заметкам из любого места через интернет. Да, оформление отстой, но создание занимает меньше времени, а объёмы гораздо больше. Даже боюсь подумать, сколько бы я тратил на красивое оформление html версии.
Ну а я слепил интерфейс себе на MODX Revolution. В качестве разметки статей использую markdown - спецом поставил парсер под это дело. Теперь делать записи в 100500 раз быстрее  :)

2
Предложения / Re: Скорость клика
« on: March 30, 2023, 04:47:35 AM »
И смысл задавать значения по умолчанию, если разные клики в одном скрипте могут быть нужны с разной длительностью.
В том то и дело, что для одного скрипта может понадобиться единожды в начале переопределить скорость клика, ну чтобы скрипт вообще там работал. Вместо этого ты предлагаешь оставить как есть, и применять тот "костыль", который я использовал (три функции вместо одной). Сорян, но я с тобой не согласен.

3
Предложения / Скорость клика
« on: March 29, 2023, 11:56:57 AM »
В браузерной игрухе Arkheim никак не мог добиться клика по кнопке тамошнего интерфейса, LCLICK просто не срабатывал (вернее срабатывал 1 раз из 10). Де жа вю .... когда-то еще с таким сталкивался, но сейчас не упомню. Сейчас опытным путем проблему решил, а именно LCLICK заменил на LDOWN WAITMS(350) LUP. Начало работать как часы.

Просьба, если это не сложно - добавить возможность программно менять "длительность" кликов для различных клавиш мыши. Изменением "встроенного" значения программно. Параметром функций - это ИМХО лишнее.

Спасибо.

4
Всем привет!

Собственно, сабж. Я не знаю в чем дело, раньше все точно работало.

Вот код скрипта:

Code: [Select]
// 26.09.2018
#name "Send ENTER key to Windows"

$VK_RETURN  = 0x0D
$WM_KEYDOWN = 0x100
$WM_KEYUP   = 0x101

$hwnd[0]  = 393974

sendmessage($hwnd[0], $WM_KEYDOWN, $VK_RETURN, 0)
waitms(50)
sendmessage($hwnd[0], $WM_KEYUP, $VK_RETURN, 0)
waitms(100)

Прогу запускал с правами админа - не помогает. Microsoft Windows [Version 10.0.17763.2237]

Пробовал 4.12 x32 и 4.13 x64.

5
Циклы более 2ого уровня уже исправлены, жди нового релиза. Зачем какой-то Lua? Все необходимые функции в кликере присутствуют, нужно только довести их до ума.

Ну это дело вкуса разработчика конечно. Некоторые свои программы вообще пишут с возможностью поддержки WSH, а там вообще полное раздолье, подключаемых скриптовых языков море. Но как я уже описал в теме, это всего лишь одно из предложений.

6
Использование / Lineage God
« on: December 03, 2012, 12:27:16 AM »
Решил вот по доброте душевной вылить на паблик свое детище :)

Этим скриптом и Кликерманом 4.5 откачано 3 персонажа с 1 по 86 лвл на руофе, пока фрост вусмерть не задолбал. Да и запал немного пропал ... а так ваще ниче, бодрячком.

Скрипт тут:

Code: [Select]
// ====================================================================
//  Супер-cкрипт божественного фарма v.1.947 epsilon
//  Копировать Направо (С) Majestio (majestio@ya.ru)
// 
//  Скрипт для автоматического фарма в игрухе LINEAGE используя
//  замечательный движок Clickermann v.4.5 (http://clickermann.tk)
//
//  Пользуйтесь, если сможете ... скрипт бесплатен!
//  Техподдержка бесплатна только для участников ВОВ и боевых действий
// ====================================================================

// ********************************************************************
// НАСТРОЙКИ Использования:
// ********************************************************************

// Макросы таргета прописываются в ячейках панелей:
// 4-1/12  - бафы
// 3-10-12 - бафы с предварительным выбором таргета (3-8,3-9)
// 3-1/4   - таргеты на монстров монстры
// 3-5     - next target
// 1-1     - атакующий скилл
// 1-8     - обычная атака
// 1-2     - свип
// 1-9     - поднять дроп
// 1-10    - баночка с хилом, или баф хила (см. IsaHeal)

// --------------------------------------------------------------------

$Count     = 1   // Кол-во перебираемых таргетов (макросы на мобов из 3-1/4)
$Sweep     = 0   // Нужен ли свип
$Bow       = 0   // Нужно ли перекидывать лук, если моб х3 где-то вверху
$Skil      = 0   // Бить только скилом (1-1)
$Delay     = 0   // Задержка на респ мобов
$CastDelay = 0   // Задержка между кастами
$Drop      = 0   // Нужно ли подбегать к дропу
$IsaHeal   = 0   // Сперва таргет на себя, потом хил
$Run       = 25  // Количество полу-секунд добежать до монстра и нанести удар
$WaitSkil  = 0   // Ждать каста 1-го скила (секунд, если 0 - не ждать)

// ********************************************************************
// НАСТРОЙКИ Бафа:
// ********************************************************************

$Buf1      = 1200
$Buf2      = 1200
$Buf3      = 1200
$Buf4      = 1200
$Buf5      = 1200      // 1100 карамелька
$Buf6      = 1200      // 75 карамелька
$Buf7      = 1200
$Buf8      = 1200
$Buf9      = 1200
$BufA      = 150
$BufB      = 150
$BufC      = 150
$Har11     = 0
$Har12     = 1200     // 1100 карамелька
$Har13     = 0
$Har21     = 0
$Har22     = 0
$Har23     = 0

// ********************************************************************
// Дальше настроек нет и править только с разрешения Папы Римского!
// ********************************************************************

$Attack     = 0 // Вид атаки
$Target     = 0 // Текущий номер таргета
$Next       = 0 // Нужна ли атака ближайшего?
$TargetOk   = 0 // До цели добежали?

$LastBuff1  = $_time_t
$LastBuff2  = $LastBuff1
$LastBuff3  = $LastBuff1
$LastBuff4  = $LastBuff1
$LastBuff5  = $LastBuff1
$LastBuff6  = $LastBuff1
$LastBuff7  = $LastBuff1
$LastBuff8  = $LastBuff1
$LastBuff9  = $LastBuff1
$LastBuffA  = $LastBuff1
$LastBuffB  = $LastBuff1
$LastBuffC  = $LastBuff1
$LastHarm11 = $LastBuff1
$LastHarm12 = $LastBuff1
$LastHarm13 = $LastBuff1
$LastHarm21 = $LastBuff1
$LastHarm22 = $LastBuff1
$LastHarm23 = $LastBuff1

// ********************************************************************
// Алгоритм
// ********************************************************************
// 1. Выбираем очередной таргет (ближайший, потом по списку)
// 2. Выбираем вид атаки
// 3. Атакуем
// 4. Определяем достижимость (добежали и стукнули)
// 5. Определяем убийство (добили до минимума)
// 6. Свип и дроп
// 7. Прыг в п.1
// ********************************************************************

MOVE(534,68)
WAITMS(500)
LCLICK(534,68)
WAITMS(1000)
LCLICK(534,68)
WAITMS(1000)

GETSCREEN
$Col_1 = PXL(549,54)
$Col_2 = PXL(549,52)
$Col_3 = PXL(54,82)
$Col_4 = PXL(54,84)
$Col_5 = PXL(691,54)
$Col_6 = PXL(691,52)
$Col_7 = PXL(152,72)
$Col_8 = PXL(152,74)
$Col_S = PXL(407,754)

Begin:

// 1. Выбираем очередной таргет

GOSUB(SelectTarget)

// 2. Выбираем вид атаки

GOSUB(SelectAttack)

// 3. Атакуем

GOSUB(Attack)

// 4. Определяем достижимость

GOSUB(AttackOk)

if ($TargetOk = 0)
  GOTO(Begin)
end_if

// 5. Определяем убийство

GOSUB(DeathOk)

// 6. Свип и дроп

GOSUB(SweepDrop)

// 7. По циклу

GOTO(Begin)

// --------------------------------------------------------------
// SUB: SelectTarget - Выбор цели атаки
// --------------------------------------------------------------

sub(SelectTarget)
  $CountPause = 0
  loop1:
  GOSUB(Heal)
  GOSUB(Buff)
  GOSUB(Heal)
  // проверка наличия достижимого ближайшего
  if (($Next=1) & ($TargetOk=0))
    $Next = 0
    MOVE(855,380)
    WAITMS(500)
    RDOWN(855,380)
    MOVE(700,380)
    WAITMS(500)
    MOVE(600,380)
    WAITMS(500)
    MOVE(500,380)
    WAITMS(500)
    MOVE(400,380)
    WAITMS(500)
    RUP(400,380)
    MOVE(245,445)
    WAITMS(500)   
    LCLICK(245,445)
    WAITMS(1500)
    MOVE(550,139)
    WAITMS(500)
    LCLICK(550,139)
    WAITMS(3700)
    MOVE(700,160)
    WAITMS(500)
    LCLICK(700,160)
    WAITMS(3700)
    MOVE(688,39)
    WAITMS(500)
    LCLICK(688,39)
    WAITMS(700)
  end_if
  WAITMS(700)
  MOVE(555,660)
  WAITMS(500)
  LCLICK(555,660)
  WAITMS(800)
  GETSCREEN
  if( (PXL(549,54)=$Col_1) & (PXL(549,52)=$Col_2))
    $Next = 1
    GOTO(ret1)
  end_if
  // проверка следующего ------------------------------------------------------
  proc1:
  WAITMS($Delay+10) // проверка задержки на респ 
  INC($CountPause)
  if ($CountPause>10)
    $CountPause = 0
    WAITMS(1500)
  end_if

  INC($Target)
  if($Target>$Count)
    $Target = 1
  end_if
  $x = 400+($Target-1)*36
  MOVE($x,660)
  WAITMS(500)
  LCLICK($x,660)
  WAITMS(800)
  GETSCREEN
  if( (PXL(549,54)!$Col_1) | (PXL(549,52)!$Col_2))
    GOTO(loop1)
  end_if
  ret1:
end_sub

// --------------------------------------------------------------
// SUB : SelectAttack - Определение режима атаки
// --------------------------------------------------------------

sub(SelectAttack)
  $Attack = 0
  GETSCREEN
  if( (PXL(54,82)=$Col_3) & (PXL(54,84)=$Col_4))
    $Attack = 1
  end_if
end_sub

// --------------------------------------------------------------
// SUB: Attack - Выбор режима атаки и атака
// --------------------------------------------------------------

sub(Attack)
  if (($Attack = 1) | ($Skil = 1))
    $Attack = 0
    MOVE(400,748)
    WAITMS(200)
    LCLICK(400,748)
    WAITMS(300)
    GOSUB(WaitAttack)
  else
    MOVE(664,748)
    WAITMS(200)
    LCLICK(664,748)
    WAITMS(300)
  end_if
  if ($CastDelay > 0)
    WAITMS(($CastDelay+1)*1000)
  end_if
end_sub

// --------------------------------------------------------------
// SUB: AttackОк - Проверка первой атаки, прошла или нет
// --------------------------------------------------------------

sub(AttackOk)
  $TargetOk = 0
  $Cnt = $Run
  GOSUB(Heal)
  loop2:
  if ($Cnt<1)
    GOTO(ret2)
  end_if
  GETSCREEN
  if( (PXL(691,54)!$Col_5) | (PXL(691,52)!$Col_6))
    $TargetOk = 1
    GOTO(ret2)
  else
    WAITMS(500)
    $Cnt = $Cnt - 1
    if ($Bow = 1)
      if ($Cnt=5)
        MOVE(436,704) // включили лук
        WAITMS(500)
        LCLICK(436,704)
        WAITMS(500)
        MOVE(664,748) // атаковали из лука
        WAITMS(500)
        LCLICK(664,748)
        WAITMS(2000)
        MOVE(400,704) // включили оружие
        WAITMS(500)
        LCLICK(400,704)
        WAITMS(500)
        MOVE(400,748) // атака1
        WAITMS(500)
        LCLICK(400,748)
        WAITMS(500)
      end_if
    end_if
    GOSUB(Attack)
    GOTO(loop2)
  end_if
  ret2:
end_sub

// --------------------------------------------------------------
// SUB: DeathОк - Определяем убийство монстра + 1сек
// --------------------------------------------------------------

sub(DeathOk)
  $CntDeath = 0
  loop3:
  GOSUB(Attack)
  GETSCREEN
  if( (PXL(549,54)!$Col_1) | (PXL(549,52)!$Col_2))
    WAITMS(500)
    GOSUB(Attack)
    GOTO(ret3)
  else
    WAITMS(500)
    INC($CntDeath)
    if ($CntDeath>30)
      GOTO(ret3)
    end_if
    GOTO(loop3)
  end_if
  ret3:
end_sub

// --------------------------------------------------------------
// SUB: SweepDrop - Свип и дроп с монстров
// --------------------------------------------------------------

sub(SweepDrop)
  if ($Drop = 1)
    MOVE(664,748)
    WAITMS(500)
    LCLICK(664,748)
    WAITMS(3000)
  end_if
  if ($Sweep = 1)
    MOVE(436,748)
    WAITMS(500)
    LCLICK(436,748)
    WAITMS(500)
  end_if
  MOVE(711,748)
  WAITMS(100)
  LCLICK(711,748)
  WAITMS(400)
  LCLICK(711,748)
  WAITMS(400)
  LCLICK(711,748)
  WAITMS(400)
  LCLICK(711,748)
  WAITMS(400)
  WAITMS(400)
  LCLICK(711,748)
  WAITMS(400)
  LCLICK(711,748)
  WAITMS(400)
  LCLICK(711,748)
  WAITMS(400)
end_sub

sub(Heal)
  GETSCREEN
  if( (PXL(152,72)!$Col_7) | (PXL(152,74)!$Col_8))
    if ($IsaHeal = 1)
      MOVE(47,41)
      WAITMS(500)
      LCLICK(47,41)
      WAITMS(500)
    end_if
    MOVE(750,750)
    WAITMS(500)
    LCLICK(750,750)
    WAITMS(500)
    if ($IsaHeal = 1)
      MOVE(558,662)
      WAITMS(500)
      LCLICK(558,662)
      WAITMS(500)
    end_if
  end_if
end_sub

sub(Buff)
  $Flag = 0 
  if ($Buf1 > 0)
    if (($_time_t - $LastBuff1) > $Buf1)
      $LastBuff1 = $_time_t
      MOVE(404,615)
      WAITMS(100)
      LCLICK(404,615)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($Buf2 > 0)
    if (($_time_t - $LastBuff2) > $Buf2)
      $LastBuff2 = $_time_t
      MOVE(440,615)
      WAITMS(100)
      LCLICK(440,615)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($Buf3 > 0)
    if (($_time_t - $LastBuff3) > $Buf3)
      $LastBuff3 = $_time_t
      MOVE(476,615)
      WAITMS(100)
      LCLICK(476,615)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($Buf4 > 0)
    if (($_time_t - $LastBuff4) > $Buf4)
      $LastBuff4 = $_time_t
      MOVE(512,615)
      WAITMS(100)
      LCLICK(512,615)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($Buf5 > 0)
    if (($_time_t - $LastBuff5) > $Buf5)
      $LastBuff5 = $_time_t
      MOVE(557,615)
      WAITMS(100)
      LCLICK(557,615)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($Buf6 > 0)
    if (($_time_t - $LastBuff6) > $Buf6)
      $LastBuff6 = $_time_t
      MOVE(592,615)
      WAITMS(100)
      LCLICK(592,615)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($Buf7 > 0)
    if (($_time_t - $LastBuff7) > $Buf7)
      $LastBuff7 = $_time_t
      MOVE(632,615)
      WAITMS(100)
      LCLICK(632,615)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($Buf8 > 0)
    if (($_time_t - $LastBuff8) > $Buf8)
      $LastBuff8 = $_time_t
      MOVE(670,615)
      WAITMS(100)
      LCLICK(670,615)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($Buf9 > 0)
    if (($_time_t - $LastBuff9) > $Buf9)
      $LastBuff9 = $_time_t
      MOVE(710,615)
      WAITMS(100)
      LCLICK(710,615)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($BufA > 0)
    if (($_time_t - $LastBuffA) > $BufA)
      $LastBuffA = $_time_t
      MOVE(751,615)
      WAITMS(100)
      LCLICK(751,615)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($BufB > 0)
    if (($_time_t - $LastBuffB) > $BufB)
      $LastBuffB = $_time_t
      MOVE(785,615)
      WAITMS(100)
      LCLICK(785,615)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($BufC > 0)
    if (($_time_t - $LastBuffC) > $BufC)
      $LastBuffC = $_time_t
      MOVE(823,615)
      WAITMS(100)
      LCLICK(823,615)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($Har11 > 0)     
    if (($_time_t - $LastHarm11) > $Har11)
      $LastHarm11 = $_time_t
      MOVE(670,658)
      WAITMS(100)
      LCLICK(670,658)
      WAITMS(500)
      MOVE(751,658)
      WAITMS(100)
      LCLICK(751,658)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($Har12 > 0)     
    if (($_time_t - $LastHarm12) > $Har12)
      $LastHarm12 = $_time_t
      MOVE(670,658)
      WAITMS(100)
      LCLICK(670,658)
      WAITMS(500)
      MOVE(785,658)
      WAITMS(100)
      LCLICK(785,658)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($Har13 > 0)     
    if (($_time_t - $LastHarm13) > $Har13)
      $LastHarm13 = $_time_t
      MOVE(670,658)
      WAITMS(100)
      LCLICK(670,658)
      WAITMS(500)
      MOVE(823,658)
      WAITMS(100)
      LCLICK(823,658)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($Har21 > 0)     
    if (($_time_t - $LastHarm21) > $Har21)
      $LastHarm21 = $_time_t
      MOVE(710,658)
      WAITMS(100)
      LCLICK(710,658)
      WAITMS(500)
      MOVE(751,658)
      WAITMS(100)
      LCLICK(751,658)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($Har22 > 0)     
    if (($_time_t - $LastHarm22) > $Har22)
      $LastHarm22 = $_time_t
      MOVE(710,658)
      WAITMS(100)
      LCLICK(710,658)
      WAITMS(500)
      MOVE(785,658)
      WAITMS(100)
      LCLICK(785,658)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($Har23 > 0)     
    if (($_time_t - $LastHarm23) > $Har23)
      $LastHarm23 = $_time_t
      MOVE(710,658)
      WAITMS(100)
      LCLICK(710,658)
      WAITMS(500)
      MOVE(823,658)
      WAITMS(100)
      LCLICK(823,658)
      WAITMS(700)
      $Flag = 1
    end_if
  end_if
  if ($Flag = 1)
    WAITMS(700)
    MOVE(555,660)
    WAITMS(500)
    LCLICK(555,660)
    WAITMS(800)
  end_if
end_sub

sub(WaitAttack)
  if ($WaitSkil > 0)
    $CntWait = 0
    loopwait: 
    GETSCREEN
    LOGWRITE(PXL(407,754))
    if(PXL(407,754) = $Col_S)
      WAITMS(10)
      INC($CntWait)
      if ($CntWait < $WaitSkil*100)
        GOTO(loopwait)
      end_if
    end_if   
  end_if
end_sub

Хорошо подходит для:

  • Спойла
  • Файтеров с бафами "наставника"
  • Шаманчиков на дрэйнах
  • Иса соло

В скрипте написал и тут повторюсь - бесплатной техподдержки не оказываю. Прежде чем запускать, разберитесь с настройками и геометрией игрового окна, расположением панелей и индикаторов здоровья персонажа и таргета. Читайте скрипт и осознавайте что он делает, и будет вам Благодать Божыя  ;D

ЗЫ: За подпрограмму Buff ногами не бить - знаю что криво, но работает норм. Инфа 100%

7
Да, отличные идеи. Со всем согласен!
Но вот луа по моему - уже лишние. Сейчас уже есть скриптовой язык и он потихоньку совершенствуется. Каждая доработка имеет при этом обратную совместимость.
А добавлять ещё один - зря перегружать программу.

Lua ... дело в том что "циклы более 2-х вложений ...." и тд. и тп. ... Есть вполне работающий язык с отчасти адекватной семантикой. Зачем тратить время на совершенствование еще одного парсера? С академической точки зрения - это конечно интересно. А с практической? Думаю, это было бы оправдано, если бы парсер выносился в отдельный встраиваемый язык, который бы покрывал существенные недостатки существующих. А этого увы нет.

По поводу п.1 ....

Хотя, по п.1, думаю, все совсем не просто - наверняка драйвер мыши только передает  "перемещения" мыши, а уже ядро винды само вычисляет будущие координаты (исходя из установленной в нем же чувствительности и пр настроек). А вот с клавой имхо будет проще - наверняка там скэнкоды передаются в каком то виде. Наверняка  :o


8
Доброго времени суток!

Кликермэном пользуюсь уже достаточно давно, однако "застрял" на версии 4.5, но не суть. Речь пойдет не об удобстве, а о принципиальной возможности использования при наличии различных "защит" типа фроста. Последний до некоторого времени можно было победить Кернель Детективом. Сейчас фрост палит все восстановленные хуки и рвет связь. Нам, добросовестным пользователям кликермэна, это не нравится 8)

Чего бы хотелось ...

1. Эмуляцию мыши и клавы не посредствм посылки виндовых сообщений, а через драйвера мыши и клавы

В данном случае палево будет минимальным, или не будет вообще, если предпринять ряд дополнительных мер. Однако написание дров - дело крайне непростое. Поэтому предлагаю пока просто дать возможность в будущем релизе это мочь осуществить. Навскидку - с помощью плагина. Разделить функционал Кликермэна примерно так:

основная_прога + плагин-1.dll (где, плагин-1.dll - либа, которая управляет мышой и клавой посредством вин-сообщений)

возможный вариант:

основная_прога + плагин-2.dll + плагин.sys (где, плагин-2.dll - либа, которая управляет мышой и клавой посредством коммуникации с драйвером клавиатуры/мыши плагин.sys)

А вопрос только в том, чтобы вызовы по управлению мышой и клавой вынести в отдельный плагин, предоставить API, ну и дать возможность другим повозицца с дровами. Я бы попробовал, просто ради интереса.

2. Возможность Кликермэну получче прятаться

Вариантов не много, да и много не надо ...

1) Возможность рэндомного изменения названия окна Кликермэна из списка (например WinAmp, WinWord ...)
2) Возможность полиморфного изменения исполняемого файла и библиотек, дабы по CRC/MD5 не палился
3) Возможность указания в командной строке каталога со структурой, т.е. отделить исполняемый файл от своих данных
4) Убрать все текстовые данные из ресурсов исполняемого файла, содержащие "Clickermann", сайт, автора ... и заменить их изображениями

3. Встроенный язык скриптов lua

Понимаю, что на вкус и цвет - фломастеры разные. Но как аргумент "за" - как встраиваемый язык, lua достаточно обкатан, хотя и синтаксис (особенно его комменты) не сильно красив, зато полнота реализации подкупает. 

4. http и/или telnet управление

Когда разновсяческие фросты отключают нафик все хоткеи ... а управлять Кликермэном всеж хочется, было бы неплохо засылать на порт управляющие команды. Веб-морда - это конечно уже излишество, но если даже всякие модемы и роутеры это имеют ... почему бы кликермэну не показать свою бицуху :)

Такие дела  8)

Pages: [1]