#1 Re: Вопросы по скриптингу » Один вопрос » 30-08-2011 10:20

RDH
Dr_Emmett_Brown_2011 wrote:

Он определяет только ту машину, в которой я сижу... Остальные не хочет... sad

Ну это верно, т.к. она самая ближняя к игроку. Попробуй 0AE2: $car = random_vehicle_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 pass_wrecked 1

#2 Re: Вопросы по скриптингу » Несколько (много) вопросов по первому скрипту. Актер » 30-08-2011 09:30

RDH

Во-первых - не используй ГЛОБАЛЬНЫХ переменных в CLEO - скрипте!!! Можно исп. только "специальные", типа $PLAYER_ACTOR.
Имя FXT-файла любое. Указывать на файл нигде не нужно. Но лучше юзай опкоды 0ACA-0AD1.
Проверка нажатия кнопки - 0AB0.

#3 Re: Вопросы по скриптингу » Один вопрос » 30-08-2011 09:17

RDH
444andrei444 wrote:

0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@ записывает машину если в ней находится игрок

0AB5 записывает ближайшую машину и ближайшего педа относительно указанного актёра вне зависимости, сидит ли игрок в ней или нет.

#4 Re: Вопросы по скриптингу » Один вопрос » 29-08-2011 11:10

RDH

Имеется скрипт 2 Игрока (Cleo). Мне стало интересно, как управлять вторым игроком? Нужен джойстик?

offtop:
После скрипта дофига комментариев "как скачать" и есть двое "выдающихся" №14 и 16: один где-то увидел ссылку на скачивание, а другой "форматирует" в формат .cs grin

#5 Re: Программирование » О создании скриптовых языков » 29-08-2011 09:00

RDH
BritishColonist wrote:

не думаю, что это особо сложно, только вот зачем? он и так работает через обычный bass.dll (в этом-то и всё удобство).

Так bass.dll без плагина WMA-поток не воспроизводит!

#6 Re: Беседка » (не)Гибернация » 27-08-2011 17:15

RDH

У меня достаточно быстро уходит в "даун", при том что память на нубуке 4 гига.

#7 Re: Беседка » SIM & PIN » 27-08-2011 17:14

RDH
listener wrote:

Возможно, можно просто выключить запрос PIN в телефоне, не вводя PIN

А не знаешь, на Huawei E1550 прокатит такой фокус?

#8 Re: Программирование » О создании скриптовых языков » 27-08-2011 17:11

RDH
BritishColonist wrote:

проигрыватель онлайн-радиостанций для gta sa

А можешь к нему BASSWMA прикрутить?

#9 Re: Беседка » (не)Гибернация » 27-08-2011 12:19

RDH

У меня также, но всё прекрасно работает)
Надо просто подождать)

#10 Беседка » SIM & PIN » 27-08-2011 10:52

RDH
Replies: 5

Вопрос такой: можно ли снять пин-код с незаблокированной (его ещё пока можно вводить) сим-карты? К оператору сходить - отпадает сразу.

#11 Re: Программирование » DLL Loader » 25-08-2011 08:50

RDH

В частности, для QIP есть SDK. Вообще, для более-менее серьёзных программ имеется SDK, а ковырять память для таких программ невыгодно - адреса памяти будут меняться быстрее, чем ты напишешь плагин, т.к. постоянно выходят обновления.

#12 Re: Работа с памятью, EXE » Заменить участок кода... » 23-08-2011 12:31

RDH

Обычно инжекты делают с помощью опкода jmp и ссылаются им на участок размеченной памяти (VirtualAlloc).

#13 Re: Работа с памятью, EXE » Вопрос по памяти » 19-08-2011 17:28

RDH
Wire wrote:

И главное: параметры надо передавать в обратном порядке!

Ах вооот оно что, спасибо. Кстати, а тогда в опкоде 0AA7 параметр для возвращаемого значения нужно таки указывать первым или последним?

Последним

#14 Re: Работа с памятью, EXE » Вопрос по памяти » 19-08-2011 17:06

RDH
Wire wrote:

Спасибо. Кстати, как правильно пользоваться опкодами 0AA5 и 0AA7? (Справку я читал smile)
А точнее, что неправильно в этом коде?

:test1
wait 0
if and
not actor.Dead($PLAYER_ACTOR)
0ADC: test_cheat "VIDEO"
jf @test1
    //0B17: show_message_box "Preved!"
    0AA5: call 0x7476B0 num_params 2 pop 2 1 "Logo.mpg"
    wait 2000
jump @test1

По адресу — процедура, проигрывающая видео, void __cdecl PlayMPEG(int nShowCmd, char *filename)

___Edit:

Хммм, перечитал хелп еще раз, написано, что строковые параметры использовать нельзя, а как же тогда?

Строки передавать можно, но насколько я знаю, эту процедуру нельзя так просто вызвать. На английском форуме то ли Deji то ли ZAZ написал код как её вызвать. И главное: параметры надо передавать в обратном порядке!

#15 Re: Вопросы по скриптингу » Один вопрос » 16-08-2011 20:53

RDH
Voron295 wrote:
RDH wrote:

Да не в гташке дело вроде!

Тогда в чём?) Поставил чистую SA - толку нет, всё равно не качает... у мя XP

А мой 1-й пример работает?

#16 Re: Вопросы по скриптингу » Один вопрос » 16-08-2011 20:28

RDH
Voron295 wrote:

ща попробую чистую SA поставить, и поставить только этот скрипт...

Да не в гташке дело вроде!

#17 Re: Вопросы по скриптингу » Один вопрос » 16-08-2011 20:08

RDH
Voron295 wrote:

А ты сам проверял? С тем кодом, что ты дал?

Естественно. И твой проверил: содержимое файла myfile.txt -  text.
Кстати, если у тебя Виста/7, а гта стоит в Program Files - то запись в файл может блокировать UAC и писать файл в C:\Users\<имя>\AppData\Local\VirtualStore\Program Files\.

#18 Re: Вопросы по скриптингу » Один вопрос » 16-08-2011 17:47

RDH
Voron295 wrote:

Нет, нет, пишет Downloaded, а файла нету. Я просто скопировал тот код что ты дал в новый скрипт. Сперва попробовал не менять ничего, потом поменял ya.ru на адрес одного текстовика на моём сайте (прямой ссылкой конешь) - тоже Downloaded, но никакого файла не появляется ни в папке CLEO, ни где-нибудь в другом месте.

А вместо "CLEO\myfile.txt" что написал?
И пришли образец адреса.

#19 Re: Вопросы по скриптингу » Один вопрос » 16-08-2011 13:58

RDH
Voron295 wrote:

Вот странно, вроде бы качает, однако файл не сохраняется...

А куда сохраняешь? Может прав на запись нету, папки не существует и т.п. А что выводит?
Здесь коды ошибок.
И ещё:

URLDownloadToFile returns S_OK even if the file cannot be created and the download is canceled. If the szFileName parameter contains a file path, ensure that the destination directory exists before calling URLDownloadToFile.

#20 Re: Вопросы по скриптингу » Один вопрос » 16-08-2011 10:27

RDH

Ну и чего здесь такого сверхъестественного?

{$CLEO}
const
S_OK=0
end
0AA2: 1@ = load_library "urlmon.dll" // IF and SET
0AA4: 2@ = get_proc_address "URLDownloadToFileA" library 1@ // IF and SET
while true
    wait 0
    if 
        8AB0: not key_pressed 75 // K
    then
        Continue
    end
    0AA7: call_function 2@ num_params 5 pop 0 0 0 "CLEO\myfile.txt" "http:\\ya.ru" 0 3@ // двойной слеш обязательно писать так, остальные как обычно
    if 3@==S_OK // закачка стартовала
    then
        0ACA: show_text_box "Downloaded."
    else
        0ACE: show_formatted_text_box "Error (0x%X) !!!" 3@
    end
end

Только не качай так большие файлы, а то эта функция "замораживает" игру!

Я не знаю как это сделать!)

Никогда не поздно учиться)

#21 Re: Вопросы по скриптингу » Один вопрос » 15-08-2011 16:28

RDH
Voron295 wrote:

Эм, простите, повторюсь, может кто-нибудь написать плагин для клео, который добавит опкод для скачивания файла из интернета и для проверки на существование файла по указанному адресу (не обязательно)?

Попробуй это: http://msdn.microsoft.com/ru-ru/library/ms775123.aspx вместе с опкодами 0AA2,0AA3,0AA4 (URLDownloadToFileA),0AA7 (параметр pop 0)

#22 Re: Работа с памятью, EXE » Разбор процедуры » 15-08-2011 09:55

RDH

Т.е. это thiscall, и в delphi ее можно вызвать только через ассемблер?

#23 Работа с памятью, EXE » Разбор процедуры » 13-08-2011 16:55

RDH
Replies: 3

Имеется процедура (Vice City):

.text:005FC980     ; =============== S U B R O U T I N E =======================================
.text:005FC980
.text:005FC980
.text:005FC980     CRadio__SetRadioStation proc near       ; CODE XREF: CAudio__SetRadiostation+16p
.text:005FC980
.text:005FC980     arg_0           = dword ptr  4
.text:005FC980     arg_4           = dword ptr  8
.text:005FC980
.text:005FC980 000                 push    ebx
.text:005FC981 004                 mov     ebx, ecx
.text:005FC983 004                 cmp     byte ptr [ebx], 0
.text:005FC986 004                 mov     edx, [esp+4+arg_0]
.text:005FC98A 004                 mov     eax, [esp+4+arg_4]
.text:005FC98E 004                 jz      short loc_5FC9CB
.text:005FC990 004                 cmp     edx, 9
.text:005FC993 004                 jnz     short loc_5FC99A
.text:005FC995 004                 mov     edx, 0Ah
.text:005FC99A
.text:005FC99A     loc_5FC99A:                             ; CODE XREF: CRadio__SetRadioStation+13j
.text:005FC99A 004                 cmp     edx, 23
.text:005FC99D 004                 ja      short loc_5FC9CB
.text:005FC99F 004                 cmp     eax, 0FFFFFFFFh
.text:005FC9A2 004                 mov     byte ptr [ebx+3978h], 1
.text:005FC9A9 004                 mov     [ebx+3979h], dl
.text:005FC9AF 004                 jz      short loc_5FC9C4
.text:005FC9B1 004                 mov     ecx, edx
.text:005FC9B3 004                 xor     edx, edx
.text:005FC9B5 004                 lea     ecx, [ecx+ecx*2]
.text:005FC9B8 004                 div     dword ptr [ebx+ecx*4+10h]
.text:005FC9BC 004                 mov     [ebx+397Ch], edx
.text:005FC9C2 004                 jmp     short loc_5FC9CB
.text:005FC9C4     ; ---------------------------------------------------------------------------
.text:005FC9C4
.text:005FC9C4     loc_5FC9C4:                             ; CODE XREF: CRadio__SetRadioStation+2Fj
.text:005FC9C4 004                 or      dword ptr [ebx+397Ch], 0FFFFFFFFh
.text:005FC9CB
.text:005FC9CB     loc_5FC9CB:                             ; CODE XREF: CRadio__SetRadioStation+Ej
.text:005FC9CB                                             ; CRadio__SetRadioStation+1Dj
.text:005FC9CB                                             ; CRadio__SetRadioStation+42j
.text:005FC9CB 004                 pop     ebx
.text:005FC9CC 000                 retn    8
.text:005FC9CC     CRadio__SetRadioStation endp

Вопрос: как узнать процедура/функция ли это, тип вызова (cdecl, stdcall ....).
И ещё: у этой процедуры два параметра: 1 - DWORD, 2 - WORD. Правильно определил или нет?

#24 Re: Вопросы по скриптингу » Один вопрос » 13-08-2011 14:19

RDH

SA v1.0 и v1.01 можно отличить так: если по адресу 0x008A6168 записано 0x465E60 то это 1.0. А для вайса какой адрес взять?

#25 Модификации » [CLEO4|SA|REL] Rocket jammer » 02-08-2011 10:41

RDH
Replies: 4
{$CLEO}
0000: NOP
:rocket_jam
wait 0
if 
    Actor.Driving($PLAYER_ACTOR)
jf @rocket_jam
03C0: 0@ = actor $PLAYER_ACTOR car
3@=0xC891A8  // Rocket pool start
4@=0
:loop
wait 0
0A8E: 1@ = 3@ + 4@ // int 
0A8D: 2@ = read_memory 1@ size 4 virtual_protect 0 // Rocket type
if 2@==20  // heatseeking
then
    1@+=16
    0A8D: 2@ = read_memory 1@ size 1 virtual_protect 0 // Does rocket exist?
    if 2@==1 // travelling
    then
        1@-=8
        0A8D: 2@ = read_memory 1@ size 4 virtual_protect 0 // Pointer to target vehicle (when heatseeking), 0 otherwise
        0AEB: 2@ = car_struct 2@ handle
        if 003B: 2@ == 0@ // (int)
        then
            0ACD: show_text_highpriority "Rocket Detected!!!" time 1000
            wait 2000  // *
            0A8C: write_memory 1@ size 4 value 0 virtual_protect 0
        end
    end
end
Inc(4@,36)
if 4@ > 0x480
jf @loop
jump @rocket_jam

Меняя задержку под звёздочкой, можно сделать скрипт интереснее (это время, в течении которого ракета продолжает преследовать игрока).

Board footer

Powered by FluxBB