Author Topic: Можно ли программно создать строку имени скрипта?  (Read 3439 times)

0 Members and 1 Guest are viewing this topic.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Ребят, доброго времени суток! Вопрос такой... Я в нескольких окнах качаю целую гильдию персов в одной игре. Окна меж собой "общаются" с помощью ini. В принципе это не столь важно. Дело в том, что для всех окон и персов скрипт один, но чтобы этот скрипт "понимал" - "кто" он и как ему действовать, ему нужно "знать" имя перса, за которого он "отвечает", и потому, при запуске скрипта, кликер спрашивает посредством радиобокса - за какого перса собственно запускается этот скрипт. Так вот как бы мне еще сделать так, чтобы имя выбранного перса еще и автоматом добавлялось в строку - #name "Ник"? Пока работаю с hsettext($h, $pers), заменяя строку в названии кликера, но так ник перса не отображается в названии окна, когда кликер свернут и чтобы найти нужный кликер, приходится разворачивать все... Можно что-то сделать?
Я не ду... Потому и не бу...

i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
правильно понял, нужно, чтобы при наведении на иконку кликера в трее всплывало изменяемое из кода скрипта название?
это меня тоже интересует (хоть бы и костылём, сам напишу, но некогда копать, если кто знает - помогите)

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
правильно понял, нужно, чтобы при наведении на иконку кликера в трее всплывало изменяемое из кода скрипта название?
Да - именно. hsettext($h, $pers) так не получается, а вот - #name "Ник", очень хорошо справляется с этим. Но как программно вместо "Ник" подставить $pers, и так, чтобы работало - я хз...
Я не ду... Потому и не бу...

i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
очевидно, что из кликермана - только когда Джонни сделает. пока только извне костылём

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Пробовал даже так:
Code: (clickermann) [Select]
$res = RADIOBOX("Выберите перса:", "Ник1", "Ник2", "Ник3")
SWITCH($res)
   CASE(1)
      #name "Nick1"
   CASE(2)
      #name "Nick2"
   CASE(3)
      #name "Nick3"
END_SWITCH

Но так даже просто при вставке скрипта в кликер, имя скрипта получается просто последнее - Nick3. Хоть что выбирай...
Я не ду... Потому и не бу...

i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
разумеется. директивы обрабатываются при запуске первыми и безусловно одна за другой

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
разумеется. директивы обрабатываются при запуске первыми и безусловно одна за другой
Ну, я просто думал, что может быть им нужно быть активными, чтобы они обработались...)
Видимо придется какой-то костыль опять на delphi мутить...
Я не ду... Потому и не бу...

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
На счет костылей...

Создай для каждого ника свой скрипт по типу
Code: (clickermann) [Select]
#name "Nick1"

$res = "Nick1" // параметр настройки основного скрипта

#include "Основной_скрипт.cms"



Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
На счет костылей...

Создай для каждого ника свой скрипт по типу
Code: (clickermann) [Select]
#name "Nick1"

$res = "Nick1" // параметр настройки основного скрипта

#include "Основной_скрипт.cms"

Идея
Я не ду... Потому и не бу...

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile


вот что я придумал
Code: (clickermann) [Select]
$res = RADIOBOX("Выберите перса:", "Ник1", "Ник2", "Ник3")

TFWRITE("Основной_скрипт.cms", STRCONCAT ("#name ", char(34),"ник", $res, char(34)), TFCOUNT("Основной_скрипт.cms")+1 )

EXECUTE ("Основной_скрипт.cms")

halt(1)

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile


вот что я придумал
Code: (clickermann) [Select]
$res = RADIOBOX("Выберите перса:", "Ник1", "Ник2", "Ник3")

TFWRITE("Основной_скрипт.cms", STRCONCAT ("#name ", char(34),"ник", $res, char(34)), TFCOUNT("Основной_скрипт.cms")+1 )

EXECUTE ("Основной_скрипт.cms")

halt(1)

Практически решена проблема  ;D
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Ура!
Первый скрипт:
Code: (clickermann) [Select]
$res = RADIOBOX("Выберите перса:", "Бла", "Туруту", "Перс")
SWITCH($res)
   CASE(1)
      $pers="Бла"
   CASE(2)
      $pers="Туруту"
   CASE(3)
      $pers="Перс"
END_SWITCH

TFDELETE ("1.cms", 2)
TFWRITE("1.cms", STRCONCAT ("#name ",char(34),$pers,char(34),), 2 )
TFDELETE ("1.cms", 3)
TFWRITE("1.cms", STRCONCAT ("$pers=",char(34),$pers,char(34),), 3 )
EXECUTE ("1.cms")

halt(1)

Основной скрипт:
Code: (clickermann) [Select]
#autorun
#name "Перс"
$pers="Перс"
// Далее нужный скрипт
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
В общем если надо будет кому...
Устанавливаем песочницу Sandboxie. Устанавливаем браузер Safari (Safari не прячется от привязки кликера. Может еще какие не прячутся - я выбрал этот.) В Sandboxie настраиваем песочницы для каждого перса так, чтобы в именах, запущенных в них браузеров, были ники персов. Далее запускаем браузеры с персами.

Скрипт запуска трех кликеров:
Code: (clickermann) [Select]
TFDELETE ($skript, 2) // Удаляем вторую строку в скрипте
TFWRITE($skript, STRCONCAT ("#name ",char(34),"Nick1",char(34),), 2) // Записываем во вторую строку скрипта имя скрипта
TFDELETE ($skript, 4) // Удаляем четвертую строку в скрипте
TFWRITE($skript, STRCONCAT ("$pers=",char(34),"Nick1",char(34),), 4) // Записываем в четвертую строку скрипта переменную с ником перса

INIWRITE("variables.ini", "zanyato", 1, "ekran") // Отмечаем в ini, что монитор занят
EXECUTE ($skript) // Запускаем кликер со скриптом для персого перса
WHILE (INIREAD("variables.ini", "zanyato", "ekran") > 0) // Ждем, пока запущенный кликер освободит экран
   WAITMS(50)
END_CYC



TFDELETE ($skript, 2)
TFWRITE($skript, STRCONCAT ("#name ",char(34),"Nick2",char(34),), 2)
TFDELETE ($skript, 4)
TFWRITE($skript, STRCONCAT ("$pers=",char(34),"Nick2",char(34),), 4)

INIWRITE("variables.ini", "zanyato", 1, "ekran")
EXECUTE ($skript)
WHILE (INIREAD("variables.ini", "zanyato", "ekran") > 0)
   WAITMS(50)
END_CYC



TFDELETE ($skript, 2)
TFWRITE($skript, STRCONCAT ("#name ",char(34),"Nick3",char(34),), 2)
TFDELETE ($skript, 4)
TFWRITE($skript, STRCONCAT ("$pers=",char(34),"Nick3",char(34),), 4)

INIWRITE("variables.ini", "zanyato", 1, "ekran")
EXECUTE ($skript)
WHILE (INIREAD("variables.ini", "zanyato", "ekran") > 0)
   WAITMS(50)
END_CYC

halt(1)
Можно было бы цикл намутить, но у персов же не будут действительно ники типа - Nik1... Но, можно запихнуть ники в текстовик и в цикле считать строки с никами - вариант. И еще кстати... Очень неплохо, если бы в кликере был некий чек, типа радиобокса. Только в радиобоксе можно один пункт выбрать, а в этом чеке можно было бы выбирать несколько пунктов. Это чтобы запустить, например, каких-нибудь трех персов из десяти.

Ну и скрипт запускаемый:
Code: (clickermann) [Select]
#autorun
#name "Ник, который вставит скрипт"

$pers="Ник, который вставит скрипт"

IF($kjgkjkj = 0)
   $check_okno = 0
   WHILE($check_okno = 0) // Запускаем цикл вывода нужного нам окна на передний план
      IF($time < $_time_t) // На случай сбоя (если браузер не выйдет на передний план)
         $h1=wndfind(STRCONCAT("[",$pers,"]")) // Ищем браузер нужного перса и считываем его id
         IF($h1 = 0) // Если такой браузер не запущен
            StrWriteln("log.txt", StrConcat($_date_d,": ",$_time_h,":",$_time_m,":",$_time_s," | Не нахожу ",$pers,"..."))
            EXECUTE("TASKKILL","/F /IM Clickermann.exe") // Убиваем процессы всех запущенных кликеров
         END_IF
         WNDBUMP ($h1) // Выводим браузер с нужным персом на передний план
         $time = $_time_t + 3
      END_IF
     
      $h2=hget(10,10) // Считываем id текущего окна, находящегося в координатах 10,10
      IF($h1 = $h2) // Сравниваем id нужного нам окна с тем, что находится в координатах 10,10
         $check_okno = 1 // Если id совпали, выходим из цикла
      END_IF
   END_CYC
   
   MOVE(720,450) // Передвигаем мышь на окно флеш-плеера с игрой
   WAITMS(50)
   $h = hget($_xmouse, $_ymouse) // Считываем id флеш-плеера
   hset($h, 1) // Привязываем кликер к флеш-плееру
   INIWRITE("variables.ini", "zanyato", 0, "ekran") // Отмечаем в ini, что монитор свободен
   
   $kjgkjkj = 1
END_IF

// Далее код
« Last Edit: June 20, 2018, 03:39:11 AM by Hito »
Я не ду... Потому и не бу...