Author Topic: Спасите! Помогите!  (Read 6981 times)

0 Members and 1 Guest are viewing this topic.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Спасите! Помогите!
« on: March 13, 2022, 09:19:47 PM »
Ребят, у меня в одной игре скрипт перестал ловить один момент, который происходит редко. Сидеть и визуально ловить этот момент, чтобы его отскринить и посмотреть - что там не так, мне в лом... Я надумал, чтобы скрипт на каждом своем кругу делал скрин игрового клиента и сохранял его в папку, но чтобы папка эта сильно не раздуалась, скрипт должен удалять первые скрины в папке, если скринов накопилось энное количество. И все бы хорошо - дело плевое.
Я накидал кусок кода для этого на коленке практически:

Code: (clickermann) [Select]
GETSCREEN ($x,$y, $x+$width-1,$y+$height-1)
COLORMODE (6, $x,$y, $x+$width-1,$y+$height-1)

IF(FExists(STRCONCAT("скрины\история"))=0)
   FCREATE (STRCONCAT("скрины\история"))
END_IF

GETFILELIST ($arr, "скрины\история\*.bmp")
IF(ARRSIZE($arr) > 0)
   $name = $arr[ARRSIZE($arr)-1]
   strseparate($name, ".", $ass)
   $name = $ass[0]+1
   UNDEFINE($ass)
   
   WHILE(ARRSIZE($arr) > 49)
      FDelete(STRCONCAT("скрины\история\",$arr[0]))
      UNDEFINE($arr)
      GETFILELIST ($arr, "скрины\история\*.bmp")
   END_CYC
else
   $name = "0"
END_IF
UNDEFINE($arr)

SCREENSHOTFIX($x,$y, $x+$width-1,$y+$height-1, STRCONCAT("скрины\история\",$name,".bmp"), 0)

Но вся эта балалайка работает до тех пор, пока в папке не появится скрин под названием - 10.bmp
В папке все эти скрины лежат по порядку - от 0 до 10, а вот в массив они переводятся так - 0,1,10,2 и так далее... И в итоге, после скрина под названием 10.bmp, скрипт вновь сохраняет скрин под названием этим же.
Ребят, если честно, я немного выпил... Ну, не удержался... Я последние пол года чуток раком приболел и 4 месяца из этих пол года просто подыхал. Последние два месяца я отходил от куматоза и вот только-только начинаю ощущать какие-то вкусы. Вот и не сдержался - выпиваю и закусываю с наслаждением, хоть и не ощущаю еще вкусы полностью. И вот я к чему все это... Простите меня. Наверняка вопрос мой плевый и пораскинув мозгами, я мог бы его решить, не дергая вас, но вот так уж вышло...) Помогите решить проблемку )
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Спасите! Помогите!
« Reply #1 on: March 13, 2022, 09:26:46 PM »
Сижу... Жду ответа...

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

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Спасите! Помогите!
« Reply #2 on: March 13, 2022, 10:26:59 PM »
Самый простой выход, начни нумерацию с 10, тебе ведь не важен номер, важен порядок.

Ну, а если хочешь по красоте, то просто номера 1-9 сохраняй в именах, как 01 - 09.


Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Спасите! Помогите!
« Reply #3 on: March 13, 2022, 10:53:09 PM »
Самый простой выход, начни нумерацию с 10, тебе ведь не важен номер, важен порядок.
Не поможет. На 100 история повторится.

Ну, а если хочешь по красоте, то просто номера 1-9 сохраняй в именах, как 01 - 09.
Не поможет. При - $name = $ass[0]+1, даст имя без первичных нолей.
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Спасите! Помогите!
« Reply #4 on: March 13, 2022, 11:13:50 PM »
Я кажется придумал... Дублировать названия файлов в текстовый файл построчно. Так себе костыль конечно, но ничего другого пока не придумал...
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Спасите! Помогите!
« Reply #5 on: March 13, 2022, 11:26:33 PM »
Допился! Вот так пока придумал...

Code: (clickermann) [Select]
GETSCREEN ($x,$y, $x+$width-1,$y+$height-1)
COLORMODE (6, $x,$y, $x+$width-1,$y+$height-1)

IF(FExists(STRCONCAT("скрины\история"))=0)
   FCREATE (STRCONCAT("скрины\история"))
END_IF

GETFILELIST ($arr, "скрины\история\*.bmp")
IF(ARRSIZE($arr) > 0)
   $name = INIREAD("ini\variables.ini", "номер скрина", "слежка")+1
   INIWRITE("ini\variables.ini", "номер скрина", $name, "слежка")
   
   WHILE(ARRSIZE($arr) > 49)
      FDelete(STRCONCAT("скрины\история\",$arr[0]))
      UNDEFINE($arr)
      GETFILELIST ($arr, "скрины\история\*.bmp")
   END_CYC
else
   $name = 0
   IF(FExists(STRCONCAT("ini"))=0)
      FCREATE (STRCONCAT("ini"))
   END_IF
   INIWRITE("ini\variables.ini", "номер скрина", $name, "слежка")
END_IF
UNDEFINE($arr)

SCREENSHOTFIX($x,$y, $x+$width-1,$y+$height-1, STRCONCAT("скрины\история\",$name,".bmp"), 0)

WAITMS(50)

Не очень красиво, но уже что-то...
« Last Edit: March 13, 2022, 11:28:36 PM by Hito »
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Спасите! Помогите!
« Reply #6 on: March 13, 2022, 11:41:05 PM »
Чего опять не так-то...?

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

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Спасите! Помогите!
« Reply #7 on: March 14, 2022, 12:04:01 AM »
Пилять... Он же удаляет их тоже не в алфавитном порядке... Или наоборот - в алфавитном, а не в порядковом...
« Last Edit: March 14, 2022, 12:06:03 AM by Hito »
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Спасите! Помогите!
« Reply #8 on: March 14, 2022, 12:49:13 AM »
Во!

Code: (clickermann) [Select]
IF(FExists(STRCONCAT("скрины\история"))=0)
   FCREATE (STRCONCAT("скрины\история"))
END_IF

GETFILELIST ($arr, "скрины\история\*.bmp")
IF(ARRSIZE($arr) > 0)
   $num_st = TFCOUNT ("скрины\история\нумерация.txt")
   IF($num_st > 49)
      $name = STRREADLN ("скрины\история\нумерация.txt", 1)
      FDELETE (STRCONCAT("скрины\история\",$name,".bmp"))
      TFDELETE ("скрины\история\нумерация.txt", 1)
      $num_st = TFCOUNT ("скрины\история\нумерация.txt")
   END_IF
   $name = STRREADLN ("скрины\история\нумерация.txt", $num_st)+1
else
   $name = 0
   TFCLEAR("скрины\история\нумерация.txt", 0)
   TFWRITE("скрины\история\нумерация.txt", $name)
END_IF
UNDEFINE($arr)

SCREENSHOTFIX($x,$y, $x+$width-1,$y+$height-1, STRCONCAT("скрины\история\",$name,".bmp"), 0)
TFWRITE("скрины\история\нумерация.txt", $name)

WAITMS(50)
« Last Edit: March 14, 2022, 01:02:56 AM by Hito »
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Спасите! Помогите!
« Reply #9 on: March 14, 2022, 01:49:59 AM »
Ну, надо ж предупреждать, что сцука это колесико появляется там, где курсор мышки находится! А я где его впервые увидел, там и прописал ему координаты в скрипте. Вот тут без пазыря же точно не разберешься...!
Всё! Отлов капчи восстановлен - я пошел спать...
Я не ду... Потому и не бу...

Oblie1968

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Re: Спасите! Помогите!
« Reply #10 on: March 14, 2022, 10:59:48 AM »
Элементарно же лидирующие нолики добавляются.
Code: (clickermann) [Select]
$name="1"         // куда добавлять нолики
$newlen=5        // нужный размер (длина) $name
$name=strconcat(strcut("000000000000",1,$newlen-strlen($name)),$name)
// "1" => "00001"

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Спасите! Помогите!
« Reply #11 on: March 14, 2022, 12:40:20 PM »
Элементарно же лидирующие нолики добавляются.
Code: (clickermann) [Select]
$name="1"         // куда добавлять нолики
$newlen=5        // нужный размер (длина) $name
$name=strconcat(strcut("000000000000",1,$newlen-strlen($name)),$name)
// "1" => "00001"
Я знал, что на трезвую голову намного лучше!  ;D Где ж ты вчера был...? ))) Ну, в принципе и сегодня норм, но я уже вроде как на своем варианте остановился...)))
Ааа... Сейчас почетче взглянул на твой вариант и понял, что после 0000000000009 будет не 0000000000010, а 00000000000010. Не анализировал пока - как это скажется на дальнейшей работе скрипта (возможно никак - я опять бухаю  :) ), но вот такая штука получается...))
« Last Edit: March 14, 2022, 12:43:54 PM by Hito »
Я не ду... Потому и не бу...

Oblie1968

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Re: Спасите! Помогите!
« Reply #12 on: March 14, 2022, 01:00:00 PM »
Ааа... Сейчас почетче взглянул на твой вариант и понял, что после 0000000000009 будет не 0000000000010, а 00000000000010. Не анализировал пока - как это скажется на дальнейшей работе скрипта (возможно никак - я опять бухаю  :) ), но вот такая штука получается...))
Ок, такой вариант:
Code: (clickermann) [Select]
$name="1"         // куда добавлять нолики
$newlen=100500    // нужный размер (длина) $name
while (strlen($name)<$newlen)
  $name=strconcat("0",$name)
end_cyc

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Спасите! Помогите!
« Reply #13 on: March 14, 2022, 03:38:48 PM »
Ааа... Сейчас почетче взглянул на твой вариант и понял, что после 0000000000009 будет не 0000000000010, а 00000000000010. Не анализировал пока - как это скажется на дальнейшей работе скрипта (возможно никак - я опять бухаю  :) ), но вот такая штука получается...))
Ок, такой вариант:
Code: (clickermann) [Select]
$name="1"         // куда добавлять нолики
$newlen=100500    // нужный размер (длина) $name
while (strlen($name)<$newlen)
  $name=strconcat("0",$name)
end_cyc

В общем сломал уже голову, как сделать твой вариант рабочим. Ты хоть сам проверяй уже прежде, чем показать )) Я понимаю, что ты свою голову грузить не хочешь )))) А пока только мой вариант работает, как часики, хоть и не особо красивый он...
« Last Edit: March 14, 2022, 03:40:51 PM by Hito »
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Спасите! Помогите!
« Reply #14 on: March 14, 2022, 07:12:55 PM »
Ураааа! Получилось!  ;D

Code: (clickermann) [Select]
$var = 0
IF($name ! "")
   FOR($i=1,$i<strlen($name)+1)
      IF(STRCUT($name, $i, 1) ! 0)
         $var = STRCUT ($name, $i, strlen($name)-$i+1)
         $i=strlen($name)+1
      END_IF
   END_CYC
   INC($var, 1)
   $n = strlen($var)
   FOR($i=1,$i<strlen($name)-$n+1)
      $var = STRCONCAT("0",$var)
   END_CYC
   $name = $var
else
   $name="0000000"
END_IF

LOGWRITE ("$name=",$name)


WAITMS(50)
Я не ду... Потому и не бу...