Чудеса инжекта.

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Dzen
Posts: 29
Joined: 2004-04-08 16:06:21
Contact:

Чудеса инжекта.

Post by Dzen »

Недавно я заметил у себя на шарде, что серийники у игров не меняются. И решил провести ряд тестов. Наверно вы тоже замечали, что серийник чара не изменяется, когда он сделает на себя спел incognito. В некоторых случаях команда info мне высвечивала реальные имена этих игроков, но не всегда.. Вот я и решил немного схитрить. Этот скрипт использует базу с никами и серийниками, и, сверив сериал игрока, умело спрятовшего свой ник магией, с базой, может высветить его истиный ник. Относительно скриптинга, мой скрипт один не из лучших, да и доработать его немного надо, но идею, я думаю, вы уловили :) Ниже я привожу свой скрипт и образец файла, базы ников/серийников. Проверяет он по последнему статусу..

Code: Select all

sub inkognito()
    Var inkLine, inkLineNum, inkSNCur, inkTab, inkLineLast, inkLineCur, inkObjCur
    Var inkBase = File("C:\Program Files\Ultima Online\Progs\Injection\inkBase.dat") # путь к файлу

    inkBase.Open()
     While Not inkBase.Eof()
      inkLine = inkBase.ReadLn()
      If Mid(inkLine, 0, 2) == "cm" Then
       Dim inkBaseS[Val(Mid(inkLine, 2, (StrLen(inkLine) - 2)))]
       Dim inkBaseN[Val(Mid(inkLine, 2, (StrLen(inkLine) - 2)))]
       inkLineNum = Val(Mid(inkLine, 2, (StrLen(inkLine) - 2)))
       inkSNCur = 0
      End If
      If Mid(inkLine, 0, 2) == "sn" Then
       inkTab = 0
       inkLineLast = 2
       For inkLineCur = 2 To StrLen(inkLine)
        If Mid(inkLine, inkLineCur, 1) == " " Then
         If inkTab == 0 Then
#          UO.Print(Str(inkSNCur))
          inkBaseS[inkSNCur] = Mid(inkLine, inkLineLast, inkLineCur - 2)
          inkTab = inkTab + 1
          inkLineLast = inkLineCur + 1
         End If
         If inkTab == 1 Then
          inkBaseN[inkSNCur] = Mid(inkLine, inkLineLast, inkLineCur - 2)
          inkTab = inkTab + 1
          inkLineLast = inkLineCur + 1
         End If
        End If
       Next
       inkSNCur = inkSNCur + 1
      End If
     Wend
    inkBase.Close()

    UO.Print("Starting search")
    For inkObjCur = 0 To inkLineNum - 1
     If (inkBaseS[inkObjCur]) == (UO.GetSerial("laststatus")) Then
      UO.Print("-------------")
      UO.Print(inkBaseN[inkObjCur])
#      UO.Print(inkBaseS[inkObjCur])
      UO.Print("-------------")
     End If
    Next
end sub


Файл начинается с колличества игроков, которые у вас занесены в файл, причем перед колличеством надо поставить cm. И после того как вы занесли эту информацию, со след. строки начинаются сами данные. Информация об игроке (в одну строку пишется) начинается с sn, дальше идет его серийник, потом маленький промежуток и ник игрока. Ниже пример

Code: Select all

cm5
sn0x00035907 Red Baron
sn0x00036314 imperator
sn0x0000A79E Morphyz
sn0x0001D267 TURAL
sn0x00011935 Angel
Dzen
Posts: 29
Joined: 2004-04-08 16:06:21
Contact:

Post by Dzen »

ах да, забыл сказать, чем больше игроков, тем больше скрипт обрабатывается данные, так что не удивляйтесь, если он будет даже несколько секунд, а то и больше, вычислять, что за игрок стоит перед вами.
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

А зачем? Вар режим и наводишь на него курсор.
Dzen
Posts: 29
Joined: 2004-04-08 16:06:21
Contact:

Post by Dzen »

можно и так :)
Post Reply