Скрипт с многопоточностью, ошибка...

Статус
В этой теме нельзя размещать новые ответы.

Smer4

Известный
Автор темы
425
51
Вот код, после нажатия на чек бокс создается поток в котором происходит флуд в чат когото сообщения которое но:
1. Похоже я неправильно передаю в поток значение переменой "С[1,2,3]", "D[1,2,3]".
2. Незнаю (
3. Сейчас заметил что в потоке стоит проверка на " state " значение которого поток знать не может.( Убрав их все равно ошибка. )
4. Нету return-ов, в условиях для убивания потока( в send-ах). Добавл, ошибка осталась.
5. После условий откл. скрипта добавил state-у присваивания знач. 1. Ошибка осталась.

Без исправления( не работает.)
Code =
Код:
#NoEnv
#Persistent
#UseHook, On
#Include AhkDllThread.ahk

state1 = 0 ;|
state2 = 0 ;| Сообщаем скрипту о там что в чек боксах пока что ничего не нажимали.
state3 = 0 ;|

Thread1 := AhkDllThread("AutoHotkey.dll") ; Подгрузка потоков.
Thread2 := AhkDllThread("AutoHotkey.dll")
Thread3 := AhkDllThread("AutoHotkey.dll")

Gui:
Gui, Font, S31 CRed, Verdana
Gui, Add, Text, x1 y0 w440 h80 , AutoCupt by Smer4
Gui, Font, S15 CRed, Verdana
Gui, Font, S25 CRed, Verdana
Gui, Add, Text, x682 y320 w130 h40 , Важно!
Gui, Font, S15 CBlack, Verdana
Gui, Add, Text, x562 y380 w350 h80 , Время флуда указывать строго по форме Час:Минута:Секунда 20:59:55 - 21:00:10
Gui, Add, Text, x22 y80 w30 h30 , C
Gui, Add, Text, x212 y80 w80 h30 , До
Gui, Add, Text, x530 y80 w99 h30, Задержка
Gui, Font, S10 CBlack, Verdana
;---------------------------------------------------------------------------------------
Gui, Add, Edit, x2 y120 w160 h30 vC1, 20:59:55 ; Начало флуда 1. ( С1 )
Gui, Add, Edit, x2 y160 w160 h30 vC2, 00:59:55 ; Начало флуда 2. ( С2 )
Gui, Add, Edit, x2 y200 w160 h30 vC3, 09:59:55 ; Начало флуда 3. ( C3 )
;----------------------------------------------------------------------------------------
Gui, Add, Edit, x532 y120 w160 h30 vZ1, В м.с  ; Задержка 1. ( Z1 )
Gui, Add, Edit, x532 y160 w160 h30 vZ2, В м.с  ; Задержка 2. ( Z2 )
Gui, Add, Edit, x532 y200 w160 h30 vZ3, В м.с  ; Задержка 3. ( Z3 )
;----------------------------------------------------------------------------------------
Gui, Add, Edit, x192 y120 w170 h30 vD1, 21:00:10 ; Окончание флуда 1. ( D1 )
Gui, Add, Edit, x192 y160 w170 h30 vD2, 01:00:10 ; Окончание флуда 2. ( D2 )
Gui, Add, Edit, x192 y200 w170 h30 vD3, 10:00:10 ;Окончание флуда 3. ( D3 )
;----------------------------------------------------------------------------------------
Gui, Add, Edit, x372 y120 w150 h30 vCom1, /capture ; Команда для флуда 1. ( Com1 )
Gui, Add, Edit, x372 y160 w150 h30 vCom2, /attack  ; Команда для флуда 2. ( Com2 )
Gui, Add, Edit, x372 y200 w150 h30 vCom3, /capture ; Команда для флуда 3. ( Com3 )
;----------------------------------------------------------------------------------------
Gui, Font, S20 CBlack, Verdana
Gui, Font, S15 CBlack, Verdana
Gui, Add, Text, x372 y60 w150 h50 , Команда для флуда
;----------------------------------------------------------------------------------------
Gui, Add, CheckBox, x700 y120 w160 h30 gSend1, ;Чек бокс 1  ( Send1 )
Gui, Add, CheckBox, x700 y160 w160 h30 gSend2, ; Чек бокс 2 ( Send2 )
Gui, Add, CheckBox, x700 y200 w160 h30 gSend3, ; Чек бокс 3 ( Send3 )
;----------------------------------------------------------------------------------------
Gui, Show, w947 h477, AutoCupt by SuSmer4cleo
return
;--------------------- SCRYPT/GUI INFO   ----------------------
; Чек боксы " Send "(1,2,3)
; Команды для флуда " Com " (1,2,3)
; Начало слуда " C "(1,2,3)
; Окончание флуда " D "(1,2,3)
; Задержка между отправляемыми сообщениями " Z "(1,2,3)
;----------------------------------------------------------
cb1 =
(
#include samp.ahk
    if state1 = 1
    {
        state1 = 0
        return
    }
Loop
{
    Time = %A_Hour%`:%A_Min%`:%A_Sec%
    if(C1 = Time)
    {
        SendChat( Com1)
        if(D1 = Time)
            break
        Sleep, %Z1%
    }
}
)

cb2 =
(
#include samp.ahk
    if state2 = 1
    {
        state2 = 0
        return
    }
Loop
{
    Time = %A_Hour%`:%A_Min%`:%A_Sec%
    if(C2 = Time)
    {
        SendChat( Com2)
        if(D2 = Time)
            break
        Sleep, %Z2%
    }
}
)

cb3 =
(
#include samp.ahk
C = 0
D = 0
Loop
{
    Time = %A_Hour%`:%A_Min%`:%A_Sec%
    if(C3 = Time)
    {
        SendChat( Com3)
        if(D3 = Time)
            break
        Sleep, %Z3%
    }
}
)
;--- Код отправки в потоки кода. ----------
Send1:
if state1 = 1 ; Завершаем поток если он активен
{
    state1 = 0
    Thread1.ahkTerminate()
}
GuiControlGet, C1
GuiControlGet, D1
GuiControlGet, Com1
GuiControlGet, Z1
Thread1.ahktextdll( cb1 )
Thread1.ahkassign( C1 )   ;|  Изминяем значение переменной C1,D1,Z1,Com1 в потоке
Thread1.ahkassign( D1 )   ;|
Thread1.ahkassign( Z1 )   ;|
Thread1.ahkassign( Com1 ) ;|

return

Send2:
if state2 = 1 ; Завершаем поток если он активен
{
    state2 = 0
    Thread2.ahkTerminate()
}
GuiControlGet, C2
GuiControlGet, D2
GuiControlGet, Com2
GuiControlGet, Z2
Thread2.ahktextdll( cb2 )
Thread2.ahkassign( C2 )   ;| Изминяем значение переменной C2,D2,Z2,Com2 в потоке
Thread2.ahkassign( D2 )   ;|
Thread2.ahkassign( Z2 )   ;|
Thread2.ahkassign( Com2 ) ;|
return

send3:
if state3 = 1 ; Завершаем поток если он активен
{
    state3 = 0
    Thread3.ahkTerminate()
}
GuiControlGet, C3
GuiControlGet, D3
GuiControlGet, Com3
GuiControlGet, Z3
Thread3.ahktextdll( cb3 )
Thread3.ahkassign( C3 )   ;| Изминяем значение переменной C3,D3,Z1, Com3 в потоке
Thread3.ahkassign( D3 )   ;|
Thread3.ahkassign( Z3 )   ;|
Thread3.ahkassign( Com3 ) ;|
return
;---------------------------------------------

с исправлениями( все равно не работает. )
Код:
#NoEnv
#Persistent
#UseHook, On
#Include AhkDllThread.ahk

state1 = 0 ;|
state2 = 0 ;| Сообщаем скрипту о там что в чек боксах пока что ничего не нажимали.
state3 = 0 ;|

Thread1 := AhkDllThread("AutoHotkey.dll") ; Подгрузка потоков.
Thread2 := AhkDllThread("AutoHotkey.dll")
Thread3 := AhkDllThread("AutoHotkey.dll")

Gui:
Gui, Font, S31 CRed, Verdana
Gui, Add, Text, x1 y0 w440 h80 , AutoCupt by Smer4
Gui, Font, S15 CRed, Verdana
Gui, Font, S25 CRed, Verdana
Gui, Add, Text, x682 y320 w130 h40 , Важно!
Gui, Font, S15 CBlack, Verdana
Gui, Add, Text, x562 y380 w350 h80 , Время флуда указывать строго по форме Час:Минута:Секунда 20:59:55 - 21:00:10
Gui, Add, Text, x22 y80 w30 h30 , C
Gui, Add, Text, x212 y80 w80 h30 , До
Gui, Add, Text, x530 y80 w99 h30, Задержка
Gui, Font, S10 CBlack, Verdana
;---------------------------------------------------------------------------------------
Gui, Add, Edit, x2 y120 w160 h30 vC1, 20:59:55 ; Начало флуда 1. ( С1 )
Gui, Add, Edit, x2 y160 w160 h30 vC2, 00:59:55 ; Начало флуда 2. ( С2 )
Gui, Add, Edit, x2 y200 w160 h30 vC3, 09:59:55 ; Начало флуда 3. ( C3 )
;----------------------------------------------------------------------------------------
Gui, Add, Edit, x532 y120 w160 h30 vZ1, В м.с  ; Задержка 1. ( Z1 )
Gui, Add, Edit, x532 y160 w160 h30 vZ2, В м.с  ; Задержка 2. ( Z2 )
Gui, Add, Edit, x532 y200 w160 h30 vZ3, В м.с  ; Задержка 3. ( Z3 )
;----------------------------------------------------------------------------------------
Gui, Add, Edit, x192 y120 w170 h30 vD1, 21:00:10 ; Окончание флуда 1. ( D1 )
Gui, Add, Edit, x192 y160 w170 h30 vD2, 01:00:10 ; Окончание флуда 2. ( D2 )
Gui, Add, Edit, x192 y200 w170 h30 vD3, 10:00:10 ;Окончание флуда 3. ( D3 )
;----------------------------------------------------------------------------------------
Gui, Add, Edit, x372 y120 w150 h30 vCom1, /capture ; Команда для флуда 1. ( Com1 )
Gui, Add, Edit, x372 y160 w150 h30 vCom2, /attack  ; Команда для флуда 2. ( Com2 )
Gui, Add, Edit, x372 y200 w150 h30 vCom3, /capture ; Команда для флуда 3. ( Com3 )
;----------------------------------------------------------------------------------------
Gui, Font, S20 CBlack, Verdana
Gui, Font, S15 CBlack, Verdana
Gui, Add, Text, x372 y60 w150 h50 , Команда для флуда
;----------------------------------------------------------------------------------------
Gui, Add, CheckBox, x700 y120 w160 h30 gSend1, ;Чек бокс 1  ( Send1 )
Gui, Add, CheckBox, x700 y160 w160 h30 gSend2, ; Чек бокс 2 ( Send2 )
Gui, Add, CheckBox, x700 y200 w160 h30 gSend3, ; Чек бокс 3 ( Send3 )
;----------------------------------------------------------------------------------------
Gui, Show, w947 h477, AutoCupt by SuSmer4cleo
return
;--------------------- SCRYPT/GUI INFO   ----------------------
; Чек боксы " Send "(1,2,3)
; Команды для флуда " Com " (1,2,3)
; Начало слуда " C "(1,2,3)
; Окончание флуда " D "(1,2,3)
; Задержка между отправляемыми сообщениями " Z "(1,2,3)
;----------------------------------------------------------
cb1 =
(
#include samp.ahk
C := 0
D := 0
Loop
{
    Time = %A_Hour%`:%A_Min%`:%A_Sec%
    if(C1 = Time)
    {
        SendChat( Com1)
        if(D1 = Time)
            break
        Sleep, %Z1%
    }
}
)

cb2 =
(
#include samp.ahk
C := 0
D := 0
Loop
{
    Time = %A_Hour%`:%A_Min%`:%A_Sec%
    if(C2 = Time)
    {
        SendChat( Com2)
        if(D2 = Time)
            break
        Sleep, %Z2%
    }
}
)

cb3 =
(
#include samp.ahk
C := 0
D := 0
Loop
{
    Time = %A_Hour%`:%A_Min%`:%A_Sec%
    if(C3 = Time)
    {
        SendChat( Com3)
        if(D3 = Time)
            break
        Sleep, %Z3%
    }
}
)
;--- Код отправки в потоки кода. ----------
Send1:
if state1 = 1 ; Завершаем поток если он активен
{
    state1 = 0
    Thread1.ahkTerminate()
    return
}
state1 = 1
GuiControlGet, C1
GuiControlGet, D1
GuiControlGet, Com1
GuiControlGet, Z1
Thread1.ahktextdll( cb1 )
Thread1.ahkassign( C1 )   ;|  Изминяем значение переменной C1,D1,Z1,Com1 в потоке
Thread1.ahkassign( D1 )   ;|
Thread1.ahkassign( Z1 )   ;|
Thread1.ahkassign( Com1 ) ;|

return

Send2:
if state2 = 1 ; Завершаем поток если он активен
{
    state2 = 0
    Thread2.ahkTerminate()
    return
}
state2 = 1
GuiControlGet, C2
GuiControlGet, D2
GuiControlGet, Com2
GuiControlGet, Z2
Thread2.ahktextdll( cb2 )
Thread2.ahkassign( C2 )   ;| Изминяем значение переменной C2,D2,Z2,Com2 в потоке
Thread2.ahkassign( D2 )   ;|
Thread2.ahkassign( Z2 )   ;|
Thread2.ahkassign( Com2 ) ;|
return

send3:
if state3 = 1 ; Завершаем поток если он активен
{
    state3 = 0
    Thread3.ahkTerminate()
    return
}
state3 = 1
GuiControlGet, C3
GuiControlGet, D3
GuiControlGet, Com3
GuiControlGet, Z3
Thread3.ahktextdll( cb3 )
Thread3.ahkassign( C3 )   ;| Изминяем значение переменной C3,D3,Z1, Com3 в потоке
Thread3.ahkassign( D3 )   ;|
Thread3.ahkassign( Z3 )   ;|
Thread3.ahkassign( Com3 ) ;|
return
;---------------------------------------------
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.