Author Topic: Помогите сократить скрипт  (Read 4040 times)

0 Members and 3 Guests are viewing this topic.

NStra

  • Освоившийся
  • **
  • Posts: 45
  • Подпись под аватаром.
    • View Profile
Помогите сократить скрипт
« on: March 22, 2015, 02:26:27 PM »
Здравствуйте. Я составил скрипт, но он получился слишком большим. Помогите мне пожалуйста его сократить...
Описание:
1 Скрипт считывает нужные строки в файле.
2 Скрипт перезаписывает первые 3-и записи.
Код:
Code: [Select]
IF($12=1)
 if((iskeydown(#ALT)=1)and(iskeydown(#0)=1))
 waitms(500)
 $f12=0
 $f2=1
 a1()
 End_if
 If(((TFCOUNT("system/LandP.txt"))>3)
 if((iskeydown(#ALT)=1)and(iskeydown(#1)=1))
 waitms(500)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 4),1)
TFDELETE("system/LandP.txt", 2)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 5),2)
TFDELETE("system/LandP.txt", 3)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 6),3)
TFDELETE("system/LandP.txt", 4)
 $f12=0
 $f1=1
 a1()
End_if
 End_if
 If(((TFCOUNT("system/LandP.txt"))>6)
 if((iskeydown(#ALT)=1)and(iskeydown(#2)=1))
 waitms(500)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 7),1)
TFDELETE("system/LandP.txt", 2)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 8),2)
TFDELETE("system/LandP.txt", 3)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 9),3)
TFDELETE("system/LandP.txt", 4)
 $f12=0
 $f1=1
 a1()
End_if
 End_if
 If(((TFCOUNT("system/LandP.txt"))>9)
 if((iskeydown(#ALT)=1)and(iskeydown(#3)=1))
 waitms(500)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 10),1)
TFDELETE("system/LandP.txt", 2)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 11),2)
TFDELETE("system/LandP.txt", 3)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 12),3)
TFDELETE("system/LandP.txt", 4)
 $f12=0
 $f1=1
 a1()
End_if
 End_if
 If(((TFCOUNT("system/LandP.txt"))>12)
 if((iskeydown(#ALT)=1)and(iskeydown(#4)=1))
 waitms(500)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 13),1)
TFDELETE("system/LandP.txt", 2)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 14),2)
TFDELETE("system/LandP.txt", 3)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 15),3)
TFDELETE("system/LandP.txt", 4)
 $f12=0
 $f1=1
 a1()
End_if
 End_if
 If(((TFCOUNT("system/LandP.txt"))>15)
 if((iskeydown(#ALT)=1)and(iskeydown(#5)=1))
 waitms(500)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 16),1)
TFDELETE("system/LandP.txt", 2)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 17),2)
TFDELETE("system/LandP.txt", 3)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 18),3)
TFDELETE("system/LandP.txt", 4)
 $f12=0
 $f1=1
 a1()
End_if
 End_if
 If(((TFCOUNT("system/LandP.txt"))>18)
 if((iskeydown(#ALT)=1)and(iskeydown(#6)=1))
 waitms(500)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 19),1)
TFDELETE("system/LandP.txt", 2)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 20),2)
TFDELETE("system/LandP.txt", 3)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 21),3)
TFDELETE("system/LandP.txt", 4)
 $f12=0
 $f1=1
 a1()
End_if
 End_if
 If(((TFCOUNT("system/LandP.txt"))>21)
 if((iskeydown(#ALT)=1)and(iskeydown(#7)=1))
 waitms(500)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 22),1)
TFDELETE("system/LandP.txt", 2)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 23),2)
TFDELETE("system/LandP.txt", 3)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 24),3)
TFDELETE("system/LandP.txt", 4)
 $f12=0
 $f1=1
 a1()
End_if
 End_if
 If(((TFCOUNT("system/LandP.txt"))>24)
 if((iskeydown(#ALT)=1)and(iskeydown(#8)=1))
 waitms(500)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 25),1)
TFDELETE("system/LandP.txt", 2)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 26),2)
TFDELETE("system/LandP.txt", 3)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 27),3)
TFDELETE("system/LandP.txt", 4)
 $f12=0
 $f1=1
 a1()
End_if
 End_if
 If(((TFCOUNT("system/LandP.txt"))>27)
 if((iskeydown(#ALT)=1)and(iskeydown(#9)=1))
 waitms(500)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 28),1)
TFDELETE("system/LandP.txt", 2)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 29),2)
TFDELETE("system/LandP.txt", 3)
TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 30),3)
TFDELETE("system/LandP.txt", 4)
 $f12=0
 $f1=1
 a1()
End_if
End_if
END_IF
Тут должна быть подпись...

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите сократить скрипт
« Reply #1 on: March 22, 2015, 03:50:54 PM »
А не слишком ли там где TFCOUNT много скобок у тебя?! Уж точно есть лишние.

Верный код.
Code: (clickermann) [Select]
IF($12=1)
   if((iskeydown(#ALT)=1)&(iskeydown(#0)=1))
      waitms(500)
      $f12=0
      $f2=1
      a1()
   End_if
   If(TFCOUNT("system/LandP.txt")>3)
      if((iskeydown(#ALT)=1)&(iskeydown(#1)=1))
         waitms(500)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 4),1)
         TFDELETE("system/LandP.txt", 2)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 5),2)
         TFDELETE("system/LandP.txt", 3)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 6),3)
         TFDELETE("system/LandP.txt", 4)
         $f12=0
         $f1=1
         a1()
      End_if
   End_if
   If(TFCOUNT("system/LandP.txt")>6)
      if((iskeydown(#ALT)=1)&(iskeydown(#2)=1))
         waitms(500)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 7),1)
         TFDELETE("system/LandP.txt", 2)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 8),2)
         TFDELETE("system/LandP.txt", 3)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 9),3)
         TFDELETE("system/LandP.txt", 4)
         $f12=0
         $f1=1
         a1()
      End_if
   End_if
   If(TFCOUNT("system/LandP.txt")>9)
      if((iskeydown(#ALT)=1)&(iskeydown(#3)=1))
         waitms(500)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 10),1)
         TFDELETE("system/LandP.txt", 2)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 11),2)
         TFDELETE("system/LandP.txt", 3)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 12),3)
         TFDELETE("system/LandP.txt", 4)
         $f12=0
         $f1=1
         a1()
      End_if
   End_if
   If(TFCOUNT("system/LandP.txt")>12)
      if((iskeydown(#ALT)=1)&(iskeydown(#4)=1))
         waitms(500)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 13),1)
         TFDELETE("system/LandP.txt", 2)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 14),2)
         TFDELETE("system/LandP.txt", 3)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 15),3)
         TFDELETE("system/LandP.txt", 4)
         $f12=0
         $f1=1
         a1()
      End_if
   End_if
   If(TFCOUNT("system/LandP.txt")>15)
      if((iskeydown(#ALT)=1)&(iskeydown(#5)=1))
         waitms(500)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 16),1)
         TFDELETE("system/LandP.txt", 2)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 17),2)
         TFDELETE("system/LandP.txt", 3)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 18),3)
         TFDELETE("system/LandP.txt", 4)
         $f12=0
         $f1=1
         a1()
      End_if
   End_if
   If(TFCOUNT("system/LandP.txt")>18)
      if((iskeydown(#ALT)=1)&(iskeydown(#6)=1))
         waitms(500)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 19),1)
         TFDELETE("system/LandP.txt", 2)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 20),2)
         TFDELETE("system/LandP.txt", 3)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 21),3)
         TFDELETE("system/LandP.txt", 4)
         $f12=0
         $f1=1
         a1()
      End_if
   End_if
   If(TFCOUNT("system/LandP.txt")>21)
      if((iskeydown(#ALT)=1)&(iskeydown(#7)=1))
         waitms(500)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 22),1)
         TFDELETE("system/LandP.txt", 2)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 23),2)
         TFDELETE("system/LandP.txt", 3)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 24),3)
         TFDELETE("system/LandP.txt", 4)
         $f12=0
         $f1=1
         a1()
      End_if
   End_if
   If(TFCOUNT("system/LandP.txt")>24)
      if((iskeydown(#ALT)=1)&(iskeydown(#8)=1))
         waitms(500)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 25),1)
         TFDELETE("system/LandP.txt", 2)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 26),2)
         TFDELETE("system/LandP.txt", 3)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 27),3)
         TFDELETE("system/LandP.txt", 4)
         $f12=0
         $f1=1
         a1()
      End_if
   End_if
   If(TFCOUNT("system/LandP.txt")>27)
      if((iskeydown(#ALT)=1)&(iskeydown(#9)=1))
         waitms(500)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 28),1)
         TFDELETE("system/LandP.txt", 2)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 29),2)
         TFDELETE("system/LandP.txt", 3)
         TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", 30),3)
         TFDELETE("system/LandP.txt", 4)
         $f12=0
         $f1=1
         a1()
      End_if
   End_if
END_IF

А нужно ли сокращать? Куски вроде бы повторяются но у тебя там еще и клавиши анализируются, а это осложняет дело. Проще оставить в таком виде.

NStra

  • Освоившийся
  • **
  • Posts: 45
  • Подпись под аватаром.
    • View Profile
Re: Помогите сократить скрипт
« Reply #2 on: March 22, 2015, 04:43:36 PM »
Действительно, скобочек многовато...Спасибо.
Тут должна быть подпись...

NStra

  • Освоившийся
  • **
  • Posts: 45
  • Подпись под аватаром.
    • View Profile
Re: Помогите сократить скрипт
« Reply #3 on: March 23, 2015, 05:37:42 AM »
А такую строку можно сократить?
В примере  1/4 всей строки...Смысл-выполнять условие если все переменные равны 0.
IF(($f1=0)&($f12=0)&($f13=0)&($f2=0)&($f22=0)&($f23=0)&($f222=0)&($f223=0))
Тут должна быть подпись...

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Помогите сократить скрипт
« Reply #4 on: March 23, 2015, 09:48:06 AM »
судя по примеру отсюда http://crapware.aidf.org/forum/index.php?topic=1134.msg6742#msg6742 , то можно
IF(($f1&$f2&$f4&$f6&$f5&$f9)=0) , и вроде работает как надо. да и простейше даже не зная этого можно IF(($f1+$f2+$f4+$f6+$f5+$f9)=0)




я читал пару раз про эти битовые операции , так ниче и не понял, а хотелось бы чтоб в такомже духе работало IF(($f1|$f2|$f4|$f6|$f5|$f9)=0). но, фига мне в ответ.......

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите сократить скрипт
« Reply #5 on: March 23, 2015, 01:06:07 PM »
судя по примеру отсюда http://crapware.aidf.org/forum/index.php?topic=1134.msg6742#msg6742 , то можно
IF(($f1&$f2&$f4&$f6&$f5&$f9)=0) , и вроде работает как надо. да и простейше даже не зная этого можно IF(($f1+$f2+$f4+$f6+$f5+$f9)=0)




я читал пару раз про эти битовые операции , так ниче и не понял, а хотелось бы чтоб в такомже духе работало IF(($f1|$f2|$f4|$f6|$f5|$f9)=0). но, фига мне в ответ.......


С плюсованием будет правильно. В битовых операциях сравниваются числа в бинарном виде.
Code: (clickermann) [Select]
LOGCLEAR


$f1 = 0
$f2 = 3
$f3 = 0
$f4 = 0
$f5 = 0
$f6 = 0

$bit = $f1&$f2&$f3&$f4&$f5&$f6
LOGWRITE ($bit)


IF(($f1&$f2&$f3&$f4&$f5&$f6)=0)
   LOGWRITE ("Верно 1")
ELSE
   LOGWRITE ("Не верно 1")
END_IF

IF(($f1+$f2+$f3+$f4+$f5+$f6)=0)
   LOGWRITE ("Верно 2")
ELSE
   LOGWRITE ("Не верно 2")
END_IF

HALT

NStra

  • Освоившийся
  • **
  • Posts: 45
  • Подпись под аватаром.
    • View Profile
Re: Помогите сократить скрипт
« Reply #6 on: March 23, 2015, 01:15:37 PM »
Спасибо dramster. Это то, что мне нужно. Отдельное спасибо за хорошую ссылку, так как я нуждался в переключателе.  Спасибо  Oraven-у за подробное объяснение...
« Last Edit: March 23, 2015, 01:19:10 PM by NStra »
Тут должна быть подпись...

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите сократить скрипт
« Reply #7 on: March 23, 2015, 03:56:09 PM »
Здравствуйте. Я составил скрипт, но он получился слишком большим. Помогите мне пожалуйста его сократить...
Описание:
1 Скрипт считывает нужные строки в файле.
2 Скрипт перезаписывает первые 3-и записи.
...

По первому посту
Code: (clickermann) [Select]
IF($12=1)
   If((iskeydown(#ALT)=1)and(iskeydown(#0)=1))
      waitms(500)
      $f12=0
      $f2=1
      a1()
   End_if
   FOR($n=1, $n < 10)
      If((TFCOUNT("system/LandP.txt")) > $n*3)
         if((iskeydown(#ALT)=1)and(iskeydown($n+48)=1))
            waitms(500)
            TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", $n*3 + 1),1)
            TFDELETE("system/LandP.txt", 2)
            TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", $n*3 + 2),2)
            TFDELETE("system/LandP.txt", 3)
            TFWRITE("system/LandP.txt",TFREAD("system/LandP.txt", $n*3 + 3),3)
            TFDELETE("system/LandP.txt", 4)
            $f12=0
            $f1=1
            a1()
         End_if
      End_if
   END_CYC
END_IF


NStra

  • Освоившийся
  • **
  • Posts: 45
  • Подпись под аватаром.
    • View Profile
Re: Помогите сократить скрипт
« Reply #8 on: March 23, 2015, 05:28:21 PM »
Vint. Я не знаю почему, но в скрипте не выполняется условие...
$f12=1
IF($f12=1)
PRINT("Условие выполнено")
//КОД
END_IF
Тут должна быть подпись...

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите сократить скрипт
« Reply #9 on: March 23, 2015, 06:00:29 PM »
Всё выполняется. См. скриншот.

По поводу имён, у меня нет опечатки, такие имена переменных были в скрипте из сообщения №1. Хотя такие имена и неправильно делать, ошибку не выбивает, поэтому не трогал, думал это другая переменная... Это же часть скрипта, не?

Если бы этот код был оформлен как цикл, я бы обратил внимание. А простое условие вырванное из контекста большого скрипта. ХЗ что там может быть.
« Last Edit: March 23, 2015, 06:04:38 PM by Vint »


NStra

  • Освоившийся
  • **
  • Posts: 45
  • Подпись под аватаром.
    • View Profile
Re: Помогите сократить скрипт
« Reply #10 on: March 23, 2015, 06:03:05 PM »
Опечатку исправил. Все работает. Спасибо вам большое.
Тут должна быть подпись...