#SingleInstance Force
#Persistent
#NoEnv
#Include udf.ahk
#IfWinActive GTA:SA:MP
global Array := []
global pauseScr := 0
global chatActive := 0
Settimer, CheckPay, On
Settimer, WaitingGame, On
return
; ######## TEST HOTKEY's ########
; ######## LABEL's ########
CheckPay:
if findMessage("^\[(\d{2}):(\d{2}):(\d{2})\] ([A-Za-z_]+) {269BD8}передал Вам {33AA33}\$(\d{1,4})$", ArrayOutputAccrual, 5, 0, 1, 1) and (ArrayOutputAccrual[5] >= 10) and (ArrayOutputAccrual[4] <> "Emilio_Armstrong")
{
Chour := ArrayOutputAccrual[1]
Cmin := ArrayOutputAccrual[2]
Csek := ArrayOutputAccrual[3]
Cnick := ArrayOutputAccrual[4]
Ccash := ArrayOutputAccrual[5]
Ctime := 3600*Chour + 60*Cmin + Csek
newAccrual := [Cnick, Ccash, Ctime]
if !find(Array, newAccrual) and !equal(newAccrual,lastAccrual)
{
Array.Insert(newAccrual)
addchatmessageEx("FF5F10" , "• {CCCCCC}Зафиксирован перевод " Ccash "$ от " Cnick " [time: " Ctime "] [" Chour ":" Cmin ":" Csek "] [" Array.Length() " в очереди]")
}
}
return
WaitingGame:
if (pauseScr = 0) and (chatActive = 0) and !empty(Array)
{
gosub CheckPay
chatActive := 1
nick := Array[1][1]
nickRP := RegExReplace(nick, "_", " ")
id := getPlayeridByName(nick)
cash := Array[1][2]
lastAccrual := Array[1]
Array := remf(Array,Array[1])
goto StartGame
}
return
StartGame:
sleep 1000
gosub CheckPay
SendChat("Начинаю игру на " cash "$ с " nickRP ".")
sleep 2500
gosub CheckPay
RepeatTry:
SendChat("/try подбросив кости выпало число в пользу " nickRP)
gosub CheckPay
if findMessage("^ " getUsername() " подбросив кости выпало число в пользу " nickRP " \| {(.*)}", ArrayOutput, 4, 700, 0, 1)
{
sleep 1500
gosub CheckPay
if (ArrayOutput[1] = "33AA33")
{
cash := round(cash*1.6)
SendChat("Поздравляю " nickRP ", вы выиграли и получаете " cash "$.")
sleep 1000
gosub CheckPay
if (cash > 5000)
{
SendChat("/pay " id " 5000")
sleep 700
SendChat("/pay " id " " cash-5000)
}
else
{
SendChat("/pay " id " " cash)
}
}
else if (ArrayOutput[1] = "FF0000")
{
SendChat("К сожалению " nickRP ", вы проиграли.")
sleep 1500
gosub CheckPay
SendChat("Попробуйте ещё и удача обязательно пойдёт к вам навстречу!")
}
}
else
{
sleep 500
goto RepeatTry
}
sleep 1000
gosub CheckPay
chatActive := 0
return
; ######## HOTKEY's ########
!F12::
addChatMessageEx("FFFFFF","• {B22222}[AHK] {FFFFFF}Cкрипт был деактивирован.")
ExitApp
Return
F12::
addChatMessageEx("FFFFFF","• {00CC00}[AHK] {FFFFFF}Cкрипт был перезагружен.")
Reload
sleep 500
Return
F11::
if (chatActive = 1)
{
addChatMessageEx("FFFFFF","• {FFC800}[AHK] {FFFFFF}Дождитесь окончения процесса игры.")
gosub CheckPay
}
else
{
chatActive := 1
SendChat("Дамы и господа, cпешите проявить свою удачу в азартной игре на деньги!")
sleep 1500
gosub CheckPay
SendChat("Для того, чтобы сыграть, необходимо передать деньги на ставку от 10$ до 5000$.")
sleep 1500
gosub CheckPay
SendChat("Далее я кидаю кости и если они упадут в вашу пользу, ставка практически удваивается!")
sleep 1000
gosub CheckPay
chatActive := 0
}
return
F10::
if (chatActive = 1)
{
addChatMessageEx("FFFFFF","• {FFC800}[AHK] {FFFFFF}Дождитесь окончения процесса игры.")
gosub CheckPay
}
else
{
chatActive := 1
Random, rand, 1, 3
if rand = 1
SendChat("Чтобы сыграть в игру нужно поставить ставку от 10$ до 5000$ (Передать деньги мне)")
else if rand = 2
SendChat("Чтобы сыграть со мной в игру, передайте от 10$ до 5000$ на ставку!")
else if rand = 3
SendChat("Чтобы сыграть в игру, необходимо передать мне от 10$ до 5000$ на ставку!")
sleep 1000
gosub CheckPay
chatActive := 0
}
return
F9::
if (pauseScr = 0)
{
pauseScr := 1
addChatMessageEx("FFFFFF","• {FFC800}[AHK] {FFFFFF}Скрипт поставлен на паузу.")
}
else if (pauseScr = 1)
{
pauseScr := 0
addChatMessageEx("FFFFFF","• {00CC00}[AHK] {FFFFFF}Скрипт снят с паузы.")
}
return
~Enter::
if (IsInChat() && !IsDialogOpen())
{
Sleep, 170
dwAddress := dwSAMP + 0x12D8F8
chatInput := readString(hGTA, dwAddress, 256)
Sleep, 30
if RegExMatch(chatInput, "i)^\/game\b(.*)", var) {
if RegExMatch(var1,"^(\s+|)$") or !RegExMatch(var1,"^ (?:\s+)?(\d+) (?:\s+)?(\d+)(?:\s+)?", value) {
addChatMessageEx("AAAAAA" , "/game [id] [ставка]")
Exit
}
if (chatActive = 1)
{
addChatMessageEx("FFFFFF","• {00CC00}[AHK] {FFFFFF}Дождитесь окончения процесса игры.")
Exit
}
id := value1
nick := getPlayerNameByid(id)
cash := value2
hourNow := A_Hour
minNow := A_Min
secNow := A_Sec
timeNow := 3600*hourNow + 60*minNow + secNow
Array.Insert([nick, cash, timeNow])
addchatmessageEx("FF5F10" , "• {CCCCCC}Внеднён перевод " cash "$ от " nick " [time: " timeNow "] [" hourNow ":" minNow ":" secNow "] [" Array.Length() " в очереди]")
gosub CheckPay
}
else if RegExMatch(chatInput, "i)^\/ahkhelp\b(\s+|)?$")
{
addChatMessageEx("B8DBB8" , "{AAAAAA}••••••••••••••••••••••••••••••••••••••")
sleep 50
addchatmessage("{00FF99}Alt + F12 {FFFFFF}- Отключить скрипт.")
addchatmessage("{00FF99}F12 {FFFFFF}- Перезагрузить скрипт")
addchatmessage("{00FF99}F11 {FFFFFF}- Рассказать правила.")
addchatmessage("{00FF99}F10 {FFFFFF}- Рассказать правила кратко.")
addchatmessage("{00FF99}F9 {FFFFFF}- Pause Script (вкл/выкл)")
addchatmessage("{00FF99}ПКМ + R {FFFFFF}- Обратиться к конкретному человеку.")
addchatmessage("{00FF99}/game {AAAAAA}[id] [cash] {FFFFFF}- Вручную внедрить в игру (В конец очереди)")
sleep 50
addChatMessageEx("B8DBB8" , "{AAAAAA}••••••••••••••••••••••••••••••••••••••")
}
}
return
RButton & vk52:: ; ПКМ + R
idd := getidByPed(getTargetPed())
if (idd = -1)
addChatMessageEx("AAAAAA" , "Игрок не выбран.")
else
{
if (chatActive = 1)
{
addChatMessageEx("FFFFFF","• {00CC00}[AHK] {FFFFFF}Дождитесь окончения процесса игры.")
gosub CheckPay
}
else
{
chatActive := 1
name := RegExReplace(getPlayerNameByid(idd), "_", " ")
Random, rand, 1, 3
if rand = 1
SendChat("/todo Не желаете сыграть в игру?*окинув взгляд на " name)
else if rand = 2
SendChat(name ", не желаете сыграть со мной в игру?")
else if rand = 3
SendChat(name ", не желаете сыграть? Ставки от 10 до 5000$.")
sleep 1000
gosub CheckPay
chatActive := 0
}
}
return
; ######## FUCTIONS ########
find(Array,Var) {
For i, val in Array {
if equal(val,Var) or find(val,Var)
return true
} return false
}
equal(Array1,Array2) {
if !Array1[1] and !Array2[1] {
if (Array1 = Array2)
return true
else return false
} else {
leng1 := Array1.Length()
leng2 := Array2.Length()
if (leng1 = leng2) {
Loop % leng1 {
if !equal(Array1[A_Index],Array2[A_Index])
return false
} return true
} else return false
}
}
empty(Array) {
if Array[1]
return false
else return true
}
remf(Array,Var) {
ArrayNew := []
state := 0
For i, val in Array {
if equal(val,Var) and (state = 0)
state := 1
else ArrayNew.Insert(val)
} return ArrayNew
}
findMessage(text, ByRef ArrayOutput, strings=1, time=0, timestamp=0, color=0)
{
endTime := A_TickCount+time
ArrayOutput := []
Loop {
if (A_TickCount <= endTime) {
Loop % strings {
if RegExMatch(getChatLineEx2(A_Index-1, timestamp, color), text, output) {
Loop {
if output%A_Index%
ArrayOutput.Insert(output%A_Index%)
else break
} return true
}
} sleep 10
} else return false
}
}
GetChatLineEx2(Line, timestamp=1, color=0)
{
chatindex := 0
FileRead, file, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
loop, Parse, file, `n, `r
{
if A_LoopField
chatindex := A_Index
}
loop, Parse, file, `n, `r
{
if (A_Index = chatindex - line) {
output := A_LoopField
break
}
}
file := ""
if !timestamp
output := RegExReplace(output, "U)^\[\d{2}:\d{2}:\d{2}\]")
if !color
output := RegExReplace(output, "Ui)\{[a-f0-9]{6}\}")
return output
}