Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Антибот

тут можно задать вопрос по скриптингу
messir
Neophyte
Neophyte
Posts: 19
Joined: 12.02.2010 23:36
Location: MSK

Антибот

Post by messir »

На сервере сделали ввод капчи.
Ниже по ветке была версия с буквами, а у нас с цифрами - помогите разобраться, т.к. для меня гампы до сих пор темный лес :-(
Пожалуйсто!
1
gump1.png
gump1.png
gump1.png (79.29 KiB) Viewed 10782 times
Serial: 7915C1
GumpID: 4A0D0
X: 0000
Y: 0000
Pages: 1
Gump Options: NoMove NoDispose NoClose

TilePics: X Y ID Page ElemNum
0 TilePic: 204 246 3178 7
1 TilePic: 202 273 3178 8
2 TilePic: 200 300 3178 9
3 TilePic: 197 326 3178 10
4 TilePic: 195 353 3178 11
5 TilePic: 333 240 3178 12
6 TilePic: 357 244 3178 13
7 TilePic: 381 246 3178 14
8 TilePic: 381 276 3178 15
9 TilePic: 350 300 3178 16
10 TilePic: 318 323 3178 17
11 TilePic: 319 353 3178 18
12 TilePic: 342 355 3178 19
13 TilePic: 366 359 3178 20
14 TilePic: 482 240 3178 21
15 TilePic: 506 244 3178 22
16 TilePic: 530 245 3178 23
17 TilePic: 475 269 3178 24
18 TilePic: 530 275 3178 25
19 TilePic: 527 303 3178 26
20 TilePic: 524 330 3178 27
21 TilePic: 517 359 3178 28
22 TilePic: 622 263 3178 29
23 TilePic: 639 259 3178 30
24 TilePic: 656 254 3178 31
25 TilePic: 664 275 3178 32
26 TilePic: 650 300 3178 33
27 TilePic: 635 324 3178 34
28 TilePic: 643 345 3178 35
29 TilePic: 660 340 3178 36
30 TilePic: 677 336 3178 37

ResizePics: X Y ID Width Height Page ElemNum
0 ResizePic: 50 100 9250 800 500 0 4
1 ResizePic: 350 480 2620 200 50 0 5

GumpTexts: X Y Color Text_ID Page ElemNum
0 GumpText: 205 120 1152 0 0 38
1 GumpText: 205 140 1152 1 0 39

TextEntries: X Y Width Height Color Return_value Default_text_id Page ElemNum
0 TextEntry: 380 500 200 50 40 0 2 0 6

Text Lines:
Это анти-бот капча. У вас есть 15 секунд чтобы заполнить ее.
Если вы этого не сделаете, то к вам будут применены санкции.


GumpButtons: X Y Released_ID Pressed_ID Quit Page_ID Return_value Page ElemNum
0 GumpButton: 420 550 248 249 1 0 1 0 40

Previous gump reply:
Button id: 600
2
gump2.png
gump2.png
gump2.png (79.57 KiB) Viewed 10782 times
Serial: 7915C1
GumpID: 4B3F8
X: 0000
Y: 0000
Pages: 1
Gump Options: NoMove NoDispose NoClose

TilePics: X Y ID Page ElemNum
0 TilePic: 197 245 3178 7
1 TilePic: 217 253 3178 8
2 TilePic: 236 259 3178 9
3 TilePic: 231 285 3178 10
4 TilePic: 200 300 3178 11
5 TilePic: 168 314 3178 12
6 TilePic: 163 340 3178 13
7 TilePic: 182 346 3178 14
8 TilePic: 202 354 3178 15
9 TilePic: 344 278 3178 16
10 TilePic: 353 280 3178 17
11 TilePic: 361 281 3178 18
12 TilePic: 341 288 3178 19
13 TilePic: 361 291 3178 20
14 TilePic: 340 298 3178 21
15 TilePic: 350 300 3178 22
16 TilePic: 359 301 3178 23
17 TilePic: 358 311 3178 24
18 TilePic: 338 318 3178 25
19 TilePic: 346 319 3178 26
20 TilePic: 355 321 3178 27
21 TilePic: 495 265 3178 28
22 TilePic: 508 269 3178 29
23 TilePic: 521 272 3178 30
24 TilePic: 489 280 3178 31
25 TilePic: 484 295 3178 32
26 TilePic: 500 300 3178 33
27 TilePic: 515 304 3178 34
28 TilePic: 480 310 3178 35
29 TilePic: 510 319 3178 36
30 TilePic: 478 327 3178 37
31 TilePic: 491 330 3178 38
32 TilePic: 504 334 3178 39
33 TilePic: 649 262 3178 40
34 TilePic: 663 268 3178 41
35 TilePic: 676 273 3178 42
36 TilePic: 641 277 3178 43
37 TilePic: 672 291 3178 44
38 TilePic: 665 306 3178 45
39 TilePic: 658 322 3178 46
40 TilePic: 650 338 3178 47

ResizePics: X Y ID Width Height Page ElemNum
0 ResizePic: 50 100 9250 800 500 0 4
1 ResizePic: 350 480 2620 200 50 0 5

GumpTexts: X Y Color Text_ID Page ElemNum
0 GumpText: 205 120 1152 0 0 48
1 GumpText: 205 140 1152 1 0 49

TextEntries: X Y Width Height Color Return_value Default_text_id Page ElemNum
0 TextEntry: 380 500 200 50 40 0 2 0 6

Text Lines:
Это анти-бот капча. У вас есть 15 секунд чтобы заполнить ее.
Если вы этого не сделаете, то к вам будут применены санкции.


GumpButtons: X Y Released_ID Pressed_ID Quit Page_ID Return_value Page ElemNum
0 GumpButton: 420 550 248 249 1 0 1 0 50

Previous gump reply:
Button id: 600
3
gump3.png с введенными значениями
gump3.png
gump3.png (81.26 KiB) Viewed 10782 times
Serial: 7915C1
GumpID: 4B4BF
X: 0000
Y: 0000
Pages: 1
Gump Options: NoMove NoDispose NoClose

TilePics: X Y ID Page ElemNum
0 TilePic: 197 271 3178 7
1 TilePic: 208 275 3178 8
2 TilePic: 218 277 3178 9
3 TilePic: 191 283 3178 10
4 TilePic: 187 295 3178 11
5 TilePic: 200 300 3178 12
6 TilePic: 212 304 3178 13
7 TilePic: 208 316 3178 14
8 TilePic: 181 322 3178 15
9 TilePic: 191 324 3178 16
10 TilePic: 202 328 3178 17
11 TilePic: 336 260 3178 18
12 TilePic: 352 262 3178 19
13 TilePic: 368 262 3178 20
14 TilePic: 369 282 3178 21
15 TilePic: 331 298 3178 22
16 TilePic: 350 300 3178 23
17 TilePic: 368 301 3178 24
18 TilePic: 367 319 3178 25
19 TilePic: 331 337 3178 26
20 TilePic: 347 337 3178 27
21 TilePic: 363 339 3178 28
22 TilePic: 499 218 3178 29
23 TilePic: 528 231 3178 30
24 TilePic: 557 242 3178 31
25 TilePic: 480 251 3178 32
26 TilePic: 465 285 3178 33
27 TilePic: 500 300 3178 34
28 TilePic: 534 314 3178 35
29 TilePic: 519 348 3178 36
30 TilePic: 442 357 3178 37
31 TilePic: 471 368 3178 38
32 TilePic: 500 382 3178 39
33 TilePic: 633 263 3178 40
34 TilePic: 648 264 3178 41
35 TilePic: 663 262 3178 42
36 TilePic: 667 281 3178 43
37 TilePic: 632 300 3178 44
38 TilePic: 650 300 3178 45
39 TilePic: 667 299 3178 46
40 TilePic: 668 317 3178 47
41 TilePic: 636 337 3178 48
42 TilePic: 651 335 3178 49
43 TilePic: 666 336 3178 50

ResizePics: X Y ID Width Height Page ElemNum
0 ResizePic: 50 100 9250 800 500 0 4
1 ResizePic: 350 480 2620 200 50 0 5

GumpTexts: X Y Color Text_ID Page ElemNum
0 GumpText: 205 120 1152 0 0 51
1 GumpText: 205 140 1152 1 0 52

TextEntries: X Y Width Height Color Return_value Default_text_id Page ElemNum
0 TextEntry: 380 500 200 50 40 0 2 0 6

Text Lines:
Это анти-бот капча. У вас есть 15 секунд чтобы заполнить ее.
Если вы этого не сделаете, то к вам будут применены санкции.


GumpButtons: X Y Released_ID Pressed_ID Quit Page_ID Return_value Page ElemNum
0 GumpButton: 420 550 248 249 1 0 1 0 53

Previous gump reply:
Button id: 600
4
gump4.png - с введенными значениями
gump4.png
gump4.png (79.64 KiB) Viewed 10782 times
Serial: 7915C1
GumpID: 4B556
X: 0000
Y: 0000
Pages: 1
Gump Options: NoMove NoDispose NoClose

TilePics: X Y ID Page ElemNum
0 TilePic: 198 254 3178 7
1 TilePic: 231 266 3178 8
2 TilePic: 188 273 3178 9
3 TilePic: 226 288 3178 10
4 TilePic: 180 292 3178 11
5 TilePic: 200 300 3178 12
6 TilePic: 219 307 3178 13
7 TilePic: 211 326 3178 14
8 TilePic: 201 345 3178 15
9 TilePic: 292 250 3178 16
10 TilePic: 320 238 3178 17
11 TilePic: 344 224 3178 18
12 TilePic: 304 284 3178 19
13 TilePic: 365 254 3178 20
14 TilePic: 319 314 3178 21
15 TilePic: 350 300 3178 22
16 TilePic: 380 285 3178 23
17 TilePic: 334 345 3178 24
18 TilePic: 395 315 3178 25
19 TilePic: 355 375 3178 26
20 TilePic: 379 361 3178 27
21 TilePic: 407 349 3178 28
22 TilePic: 434 247 3178 29
23 TilePic: 464 232 3178 30
24 TilePic: 491 216 3178 31
25 TilePic: 449 284 3178 32
26 TilePic: 515 249 3178 33
27 TilePic: 466 317 3178 34
28 TilePic: 500 300 3178 35
29 TilePic: 533 282 3178 36
30 TilePic: 550 315 3178 37
31 TilePic: 508 383 3178 38
32 TilePic: 535 367 3178 39
33 TilePic: 565 352 3178 40
34 TilePic: 624 239 3178 41
35 TilePic: 637 269 3178 42
36 TilePic: 650 300 3178 43
37 TilePic: 662 330 3178 44
38 TilePic: 675 360 3178 45

ResizePics: X Y ID Width Height Page ElemNum
0 ResizePic: 50 100 9250 800 500 0 4
1 ResizePic: 350 480 2620 200 50 0 5

GumpTexts: X Y Color Text_ID Page ElemNum
0 GumpText: 205 120 1152 0 0 46
1 GumpText: 205 140 1152 1 0 47

TextEntries: X Y Width Height Color Return_value Default_text_id Page ElemNum
0 TextEntry: 380 500 200 50 40 0 2 0 6

Text Lines:
Это анти-бот капча. У вас есть 15 секунд чтобы заполнить ее.
Если вы этого не сделаете, то к вам будут применены санкции.


GumpButtons: X Y Released_ID Pressed_ID Quit Page_ID Return_value Page ElemNum
0 GumpButton: 420 550 248 249 1 0 1 0 48

Previous gump reply:
Button id: 600
5
gump5.png - без скрина. Цифры там 7394
Serial: 7915C1
GumpID: 4B6CE
X: 0000
Y: 0000
Pages: 1
Gump Options: NoMove NoDispose NoClose

TilePics: X Y ID Page ElemNum
0 TilePic: 167 260 3178 7
1 TilePic: 187 255 3178 8
2 TilePic: 205 249 3178 9
3 TilePic: 172 284 3178 10
4 TilePic: 215 272 3178 11
5 TilePic: 222 293 3178 12
6 TilePic: 227 315 3178 13
7 TilePic: 232 339 3178 14
8 TilePic: 327 278 3178 15
9 TilePic: 338 274 3178 16
10 TilePic: 348 269 3178 17
11 TilePic: 356 282 3178 18
12 TilePic: 337 305 3178 19
13 TilePic: 350 300 3178 20
14 TilePic: 362 294 3178 21
15 TilePic: 367 306 3178 22
16 TilePic: 351 330 3178 23
17 TilePic: 361 325 3178 24
18 TilePic: 372 321 3178 25
19 TilePic: 497 271 3178 26
20 TilePic: 508 275 3178 27
21 TilePic: 518 277 3178 28
22 TilePic: 491 283 3178 29
23 TilePic: 516 291 3178 30
24 TilePic: 487 295 3178 31
25 TilePic: 500 300 3178 32
26 TilePic: 512 304 3178 33
27 TilePic: 508 316 3178 34
28 TilePic: 481 322 3178 35
29 TilePic: 491 324 3178 36
30 TilePic: 502 328 3178 37
31 TilePic: 651 258 3178 38
32 TilePic: 680 271 3178 39
33 TilePic: 641 275 3178 40
34 TilePic: 674 291 3178 41
35 TilePic: 632 291 3178 42
36 TilePic: 650 300 3178 43
37 TilePic: 667 308 3178 44
38 TilePic: 658 324 3178 45
39 TilePic: 648 341 3178 46

ResizePics: X Y ID Width Height Page ElemNum
0 ResizePic: 50 100 9250 800 500 0 4
1 ResizePic: 350 480 2620 200 50 0 5

GumpTexts: X Y Color Text_ID Page ElemNum
0 GumpText: 205 120 1152 0 0 47
1 GumpText: 205 140 1152 1 0 48

TextEntries: X Y Width Height Color Return_value Default_text_id Page ElemNum
0 TextEntry: 380 500 200 50 40 0 2 0 6

Text Lines:
Это анти-бот капча. У вас есть 15 секунд чтобы заполнить ее.
Если вы этого не сделаете, то к вам будут применены санкции.


GumpButtons: X Y Released_ID Pressed_ID Quit Page_ID Return_value Page ElemNum
0 GumpButton: 420 550 248 249 1 0 1 0 49

Previous gump reply:
Button id: 600
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Антибот

Post by drabadan »

Посчитай смещения да и все. Макс смещения между цифрами, потом в каждой отдельной цифре смещения внутри "цифры", создай 10 массивов с тру фолс значениями для каждой цифры, есть точка\нет точки. 100 раз такое уже написано перенаписано, где то на форуме есть.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Антибот

Post by Vizit0r »

и масштабирование всех полученных цифр к одному размеру перед определением цифры.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: Антибот

Post by GeeZeR »

Расшифрую выступление предпредыдущего оратора на примере gump4.png:

1) Если цифры создаются по шаблонам, то можно это шаблоны и вычислить.

2) Начинаешь танцевать от самой левой тыквы. Самая левая тыква это тыква в цифре 4, т.е. по иксу это самое меньшее значение (4 TilePic: 180 292 3178 11): X: 180, Y: 292.

3) Как я понимаю может быть 3 размера одной и той же цифры, на скрине gump4.png наверное это средний размер цифры "4".

4) Наверняка они создаются по шаблонам так что в шаблоне цифры "4" среднего размера следующая тыква начиная от самой левой тыквы всегда будет иметь по иксу смещение +8, а по игреку -19 относительно самой первой тыквы шаблона. Так что в данном случае имеем такие координаты:
2 TilePic: 188 273 3178 9

5) Следующая по оси X тыква в цифре 4 на данном гампе имеет координаты:
0 TilePic: 198 254 3178 7
и в своём шаблоне расположена со смещением по иксу: +18, по игреку: -38 относительно самой первой тыквы шаблона.

6) Создаёшь двумерный массив для шаблона цифры 4 среднего размера. Массив содержит смещения по иксу и игреку.
[0.0] = 8
[0.1] = -19
[1.0] = 18
[1.1] = -38
и так далее записываешь смещения всех тыкв шаблона данной цифры.

Ну и алгоритм такой:
а) находишь в гампе координаты самой левой тыквы, то есть число самое меньшее по иксу и соответствующее значение по игреку, в твоём примере это 4 TilePic: 180 292 3178 11.
б) начинаешь проверять из какого шаблона эти тыквы. К примеру давай применим наш готовый шаблон цифры 4 среднего размера: Прибавляешь к иксу этой самой левой тыквы данные из элемента массива [0.0] и к игреку из [0.1], то есть "8" и "-19". Получаешь X: 188 и Y: 273.
в) Проверяешь есть ли такие координаты в списке координат из гампа. Если таковые координаты имеются (а они в твоём примере естественно имеются, это тыква 2 TilePic: 188 273 3178 9), то скорее всего это цифра 4 среднего размера.
г) Проверяешь этот шаблон дальше, координатам исходной тыквы прибавляешь значения из элементов массива [1.0] (18) и [1.1] (-38). Получаешь X: 198 и Y: 254. Проверяешь есть ли такие координаты в списке координат тыкв в гампе (в твоём примере они конечно есть и это 0 TilePic: 198 254 3178 7).
То есть становится понятно, что перед нами цифра 4. Чтобы найти где начинается следующая цифра в гампе достаточно определить по каким координатам находится самая правая по иксу тыква текущей цифры. Самая первая тыква следующей цифры будет смещена по иксу правее от самой правой тыквы предыдущей цифры.
Короче тебе придётся создать такой шаблон-массив для каждой цифры.
КОРОЧЕ МЕДАЛЬ МНЕ ЫЫЫЫЫЫЫЫЫ
Attachments
pumpkins.png
pumpkins.png (85.73 KiB) Viewed 10769 times
Stealth 8.10.2 | Клиент: 7.0.13.4
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Антибот

Post by nah nah »

я думаю, что берётся матрица 3х5 с цифрой, увеличевается на рандом, на рандом же и поворачивается. в итоге имеем хренолион комбинаций. для каждой замучаешься шаблоны делать =DDD

1) центры цифр всегда в одном месте. по у - 300, по х = 200, 350, 500, 650. Это нужно использовать для отделения цифр друг от друга и для определения их позиций. например

Code: Select all

if 125 < pumpkin.x < 275:  # тыква принадлежит первой цифре
2) поворачивать цифру влево-вправо пока ширина цифры не станет минимальной. думаю, что разброс +-30 градусов
3.а) поделить цифру на 15 секторов, и создать массив с вектором. пример для цифры 1

Code: Select all

[0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, ]
для каждой цифры свой уникальный массив, с ним и сравнивать
3.б) сделать матрицу, уменьшить\увеличить до размера шаблона, сравнивать.
3.в) уменьшить без матрицы. взять макс у, допустим, цифра увеличена в 3 раза и макс у = 15. делим на 5, получаем делитель для всей цифры - 3. Дальше просто все координаты цифры делим на 3 и получаем, самый маленький вариант цифры. с ним уже что угодно можно делать
messir
Neophyte
Neophyte
Posts: 19
Joined: 12.02.2010 23:36
Location: MSK

Re: Антибот

Post by messir »

Спасибо за идеи и подробное описание.
Вчитывался в каждую строку пытаясь представить это все в скрипте, но когда приступил к написанию понял, что забыл всё немногое, что знал 5-6 лет назад и сейчас мне это тяжело дается.
Увы, но перед завершением игры в УО, стелс только начинал изучать и достиг не многого. С гампами, как я и писал, разобраться так и не удалось, поэтому в своем скрипте на мининг я отменял все гампы, за исключением гампа подтверждения воскрешения, да и тот откуда-то взял как шаблон. В итоге сейчас по новой вникнуть потребует много времени (семья\дети - думаю уже у многих так же).
Last edited by messir on 15.01.2018 8:19, edited 2 times in total.
messir
Neophyte
Neophyte
Posts: 19
Joined: 12.02.2010 23:36
Location: MSK

Re: Антибот

Post by messir »

nah nah wrote:я думаю, что берётся матрица 3х5 с цифрой, увеличевается на рандом, на рандом же и поворачивается. в итоге имеем хренолион комбинаций. для каждой замучаешься шаблоны делать =DDD

1) центры цифр всегда в одном месте. по у - 300, по х = 200, 350, 500, 650. Это нужно использовать для отделения цифр друг от друга и для определения их позиций. например

Code: Select all

if 125 < pumpkin.x < 275:  # тыква принадлежит первой цифре
2) поворачивать цифру влево-вправо пока ширина цифры не станет минимальной. думаю, что разброс +-30 градусов
3.а) поделить цифру на 15 секторов, и создать массив с вектором. пример для цифры 1

Code: Select all

[0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, ]
для каждой цифры свой уникальный массив, с ним и сравнивать
3.б) сделать матрицу, уменьшить\увеличить до размера шаблона, сравнивать.
3.в) уменьшить без матрицы. взять макс у, допустим, цифра увеличена в 3 раза и макс у = 15. делим на 5, получаем делитель для всей цифры - 3. Дальше просто все координаты цифры делим на 3 и получаем, самый маленький вариант цифры. с ним уже что угодно можно делать
Вот на счет центра цифры - 100% попадание. Я посмотрел, что это действительно так.
Кол-во цифр от 1 до 9. Нуля нет.
Мало того, количество тыкв в цифре всегда одинаковое, и отличается только интервалами между ними. Причем интервалы пропорциональны.
цифра / тыква
1 / 5
2,4 / 9
3,5 / 11
6,9 / 12
7 / 8
8 / 13
Думаю, что ты прав и надо разделить поле гампа на 4 части под каждую цифру, далее проверка на кол-во тыкв в каждом блоке и проверять массивами на наклон и размер только те, что дублируются (2,3,4,5,6 и 9).
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Антибот

Post by Vizit0r »

я бы попробовал выравнивать каждую цифру, потом масштабировать до одинакового размера, а потом уже определять цифру. Имхо, без учета влияния поворота и размера - проблем с определением цифр не будет.

P.S. Это все чисто теоретически :)
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
messir
Neophyte
Neophyte
Posts: 19
Joined: 12.02.2010 23:36
Location: MSK

Re: Антибот

Post by messir »

Vizit0r wrote:я бы попробовал выравнивать каждую цифру, потом масштабировать до одинакового размера, а потом уже определять цифру. Имхо, без учета влияния поворота и размера - проблем с определением цифр не будет.

P.S. Это все чисто теоретически :)
Я вчера не мог долго уснуть и размышлял по скрипту.
В пришел к тому же, что написал nah nah:

4 блока цифр с одинаковым центром в каждом из них в произвольном интервале между тыкв и наклоном всего массива.
Дальше я посчитал кол-во тыкв и понял, что оно не меняется для каждый из цифр, то бишь для цифры 1 будет 5 тыкв, для цифр 2 и 4 будет 9 тыкв, для цифры 3 и 5 будет 11 тыкв, 6 и 9 будет 12 тыкв, для цифры 7 будет 8 тыкв, для цифры 8 будет 13 тыкв.
Следовательно разбиваем зоны по Х на 4 части:
1 блок: Х = от 125 до 274
2 блок: Х = от 275 до 424
3 блок: Х = от 425 до 574
4 блок: Х = от 575 до 724

Дальше идет перебор каждой строки и набивание счетчика по кринципу, как написал nah nah:

Code: Select all

if 125 < pumpkin.x < 275 then blok1_val = blok1_val+1
По этому принципу перебор всех строк TilePic и в конечном счете получаем значения blok1_val, blok2_val, blok3_val, blok4_val, которые дадут сразу определение:
if block1_val == 5 then вводим цифру 1
ну и та далее перебор для цифр, которые имею уникальные кол-во тыкв на символ.
Дальше интересней, так как есть цифры с одинаковым кол-вом (2,4; 3,5; 6,9).
Для них надо определить между двух цифр путем исключения.
Тут я определил закономерность, что порядок построения строк TilePic тоже определен для каждой цифры, т.е. для цифры 2 первая тыква будет слева сверху, следующая строка будет тыква вторая от левого верхнего края и так далее...
Следовательно в данном случае тут мы берем X первой строки тыквы этого блока цифр; берем X второй строки и отнимаем:
1TilePicX = 333
2TilePicX = 357
interval = 357-333
nextTilePickX = 357+interval
if nextTilePickX = 3TilePicX then вводим цифру 2 else вводим цифру 4

и по такому принципу перебор парных цифр.

Вроде как в голове логика сложилась... теперь беда, о которой я писал ранее. Синтаксис Стелса совсем не помню, и абсолютно никаких познаний о написании скриптов с Гампами :(
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Антибот

Post by nah nah »

messir wrote:Дальше интересней, так как есть цифры с одинаковым кол-вом (2,4; 3,5; 6,9).
Для них надо определить между двух цифр путем исключения.
Тут я определил закономерность, что порядок построения строк TilePic тоже определен для каждой цифры, т.е. для цифры 2 первая тыква будет слева сверху, следующая строка будет тыква вторая от левого верхнего края и так далее...
Следовательно в данном случае тут мы берем X первой строки тыквы этого блока цифр; берем X второй строки и отнимаем:
1TilePicX = 333
2TilePicX = 357
interval = 357-333
nextTilePickX = 357+interval
if nextTilePickX = 3TilePicX then вводим цифру 2 else вводим цифру 4
При повороте цифры используются косинус и синус, выходные значения почти всегда дробные и округляются. На втором примере с первой цифрой 2 это видно. Нужно вводить погрешность в 1 единицу.

Code: Select all

1TilePicX = 333
2TilePicX = 357
interval = 357-333
nextTilePickX = 357+interval
if 3TilePicX - 1 <= nextTilePickX <= 3TilePicX + 1 then
messir
Neophyte
Neophyte
Posts: 19
Joined: 12.02.2010 23:36
Location: MSK

Re: Антибот

Post by messir »

nah nah wrote:
При повороте цифры используются косинус и синус, выходные значения почти всегда дробные и округляются. На втором примере с первой цифрой 2 это видно. Нужно вводить погрешность в 1 единицу.

Code: Select all

1TilePicX = 333
2TilePicX = 357
interval = 357-333
nextTilePickX = 357+interval
if 3TilePicX - 1 <= nextTilePickX <= 3TilePicX + 1 then

Да, погрешность перепроверки на 1 единицу присутствует - это я сразу увидел.
Вот я сейчас проверял эту же схему на других цифрах (и осях, соответственно).
Для цифр 6 и 9 все сошлось на примере 2 гампа:

Code: Select all

(24TilePick[b]Y[/b]*2)-21TilePick[b]Y[/b] == 25TilePickY (+/- 1)
Если да, то цифра 6, если нет, то цифра 9.
Тут все подветрдилось, но спотыкнулся по тому же принципу на примере 3 гампа. Там принцип тот же:

Code: Select all

(3TilePickY*2)-0TilePickY == 4TilePickY (+/- 1)
.
Если да, то цифра 5, если нет, то 3.
Но при проверке последней цифры оказались вычисления неверны, так как цифра стоит практически прямо...

Буду дальше кумекать с осями... Скорее всего надо проверять с осью Х, а не Y. Формулу додумать :)
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Антибот

Post by nah nah »

messir wrote:но спотыкнулся по тому же принципу на примере 3 гампа. Там принцип тот же:

Code: Select all

(3TilePickY*2)-0TilePickY == 4TilePickY (+/- 1)
.
Если да, то цифра 5, если нет, то 3.
Но при проверке последней цифры оказались вычисления неверны, так как цифра стоит практически прямо...

Буду дальше кумекать с осями... Скорее всего надо проверять с осью Х, а не Y. Формулу додумать :)
расстояние между седьмой и восьмой тыквой сравнивай с расстоянием между седьмой и четвёртой, если равно, то это тройка

PS Чтобы не возиться с осями, в стелсе есть функция function Dist(X1, Y1, X2, Y2: Word): Word, как раз подходит.
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: Антибот

Post by GeeZeR »

тут уж впору нейронные сети подключать :lol:
Stealth 8.10.2 | Клиент: 7.0.13.4
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Антибот

Post by drabadan »

GeeZeR wrote:тут уж впору нейронные сети подключать :lol:
а почему бы и нет, фалконом хеви коробок спичек в булошную отвезти...

З.Ы. Не вижу смысла морочится с "поворотом", цифра наклонена вся полностью, то-есть смещения одинаковы при любом наклоне и колеблятся в рандоме +-x пикселей. Найти етот x по нему считать расстояния от первой точки, поидее "сумма" пути для каждой цифры будет разной и можно посчитать примерно для каждой цифры ету длинну, конечно с учетом мультипликатора который можно найти средним расстоянием между точками откинув уникальные по количеству тыков цифры. То-есть теоретически, если я прав, алгоритм можно уложить в 1 проход массива и 2-3 математические операции, конечно можно еще создать массив в котором значением была бы цифра а инкедксом длинна пути, потом просто по найденной длинне обращаться по индексу в етот массив. Возможно, я не прав - проверять чет лениво :)
messir
Neophyte
Neophyte
Posts: 19
Joined: 12.02.2010 23:36
Location: MSK

Re: Антибот

Post by messir »

тут было много мыслей и размышлений, но автор попросил их убрать (с) Виз
Post Reply