#1 24-05-2008 09:33

svetka
Registered: 29-12-2006
Posts: 222

Самый добрый скрипт:)

Теперь любому прохожему можно подарить (в данном случае) цветы smile

{$E}
0000:

:FLOWER
wait 0 
Model.Load(#FLOWERA)
038B: load_requested_models

:FLOW
wait 0 
  $ONMISSION == 0 
else_jump @FLOW 
if and
   Model.Available(#FLOWERA)
   Player.Defined($PLAYER_CHAR)
if
00E1: key_Pressed 0 4
jf @FLOW
Jump @FIND

:FIND
wait 0
if
00E1: key_Pressed 0 10
jf @FLOW
Actor.StorePos($PLAYER_ACTOR,0@,1@,2@)
3@ = 5.0
Gosub @AIC_GETACTOR
if
9@ <> -1
jf @FIND

01B2: give_actor 9@ weapon 14 ammo 0 // Load the weapon model before using this 
wait 100
Model.Destroy(#FLOWERA)
Actor.RemoveReferences(9@)
jump @FLOWER

:AIC_GETACTOR
0006: 16@ = 305868
0006: 17@ = @AIC_TESTACTORHANDLE
0006: 20@ = 1988
0002: jump @AIC_STARTSEARCH 

:AIC_GETVEHICLE
0006: 16@ = 305869
0006: 17@ = @AIC_TESTVEHICLEHANDLE
0006: 18@ = -1
0006: 20@ = 2584
0256:   player $PLAYER_CHAR defined
004D: jump_if_false @AIC_STARTSEARCH 
00DF:   actor $PLAYER_ACTOR driving
004D: jump_if_false @AIC_STARTSEARCH
03C0: 18@ = actor $PLAYER_ACTOR car
0002: jump @AIC_STARTSEARCH

:AIC_GETOBJECT
0006: 16@ = 305871
0006: 17@ = @AIC_TESTOBJECTHANDLE
0006: 20@ = 412

:AIC_STARTSEARCH 
0085: 4@ = 16@ // (int)
008B: 4@ = &0(4@,1i) // (int) 
0085: 19@ = 4@ // (int)
000E: 19@ -= 10787160
0016: 19@ /= 4 
008B: 19@ = &0(19@,1i) // (int)
000E: 4@ -= 10787168 
0016: 4@ /= 4 
008B: 4@ = &0(4@,1i) // (int)
0006: 9@ = -1 
0085: 11@ = 4@ // (int) 
0006: 10@ = 0

:AIC_SEARCHLOOPMAIN
000A: 4@ += 20 
0050: gosub @AIC_READ4B 
0085: 4@ = 5@ // (int) 
8039:   not  4@ == 0 
004D: jump_if_false @AIC_SEARCHLOOPNEXT 
000A: 4@ += 48 
0050: gosub @AIC_READ4B 
0085: 12@ = 5@ // (int) 
000A: 4@ += 4 
0050: gosub @AIC_READ4B 
0085: 13@ = 5@ // (int) 
000A: 4@ += 4 
0050: gosub @AIC_READ4B 
0085: 14@ = 5@ // (int) 
050A: 15@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 12@ 13@ 14@ 
0025:   3@ > 15@ // (float) 
004D: jump_if_false @AIC_SEARCHLOOPNEXT 
0085: 9@ = 10@ // (int) 
0085: 4@ = 16@ // (int) 
008B: 4@ = &0(4@,1i) // (int) 
000A: 4@ += 4 
0050: gosub @AIC_READ4B 
0085: 4@ = 5@ // (int) 
005A: 4@ += 9@ // (int) 
0050: gosub @AIC_READ1B 
0012: 9@ *= 256 
005A: 9@ += 5@ // (int)
0002: jump 17@

:AIC_TESTVEHICLEHANDLE
056E:   is 9@ valid_vehicle_handle
004D: jump_if_false @AIC_NOHANDLE
00D6: if or
003B:   18@ == 9@ // (int) 
0119:   car 9@ wrecked 
004D: jump_if_false @AIC_NEWSEARCHRADIUS
0002: jump @AIC_NOHANDLE

:AIC_TESTACTORHANDLE
056D:   is 9@ valid_actor_handle
004D: jump_if_false @AIC_NOHANDLE 
00D6: if or
003C:   $PLAYER_ACTOR == 9@ // (int) 
0118:   actor 9@ dead 
004D: jump_if_false @AIC_NEWSEARCHRADIUS
0002: jump @AIC_NOHANDLE

:AIC_TESTOBJECTHANDLE
//0001: wait 0
83CA:   not object 9@ exists 
004D: jump_if_false @AIC_NEWSEARCHRADIUS

:AIC_NOHANDLE
0006: 9@ = -1 
0002: jump @AIC_SEARCHLOOPNEXT 

:AIC_NEWSEARCHRADIUS
0085: 3@ = 15@ 

:AIC_SEARCHLOOPNEXT 
005A: 11@ += 20@ // (int) 
0085: 4@ = 11@ // (int) 
000A: 10@ += 1 
002D:   10@ >= 19@ // (int)
004D: jump_if_false @AIC_SEARCHLOOPMAIN
0051: return 

:AIC_READ1B
0085: 6@ = 4@ // (int) 
0085: 8@ = 4@ // (int) 
0016: 4@ /= 4 
0012: 4@ *= 4 
0062: 8@ -= 4@ // (int) 
0012: 8@ *= 8 
000E: 4@ -= 10787168 
0016: 4@ /= 4 
008B: 7@ = &0(4@,1i) // (int) 
0085: 4@ = 6@ // (int) 
0006: 5@ = 0 
0006: 6@ = 0 

:AIC_READ1B_LOOP
08B9:   test 7@ bit 8@ 
004D: jump_if_false @AIC_READ1B_NEXTBIT 
08BF: set 5@ bit 6@ 

:AIC_READ1B_NEXTBIT
000A: 6@ += 1 
000A: 8@ += 1 
0039:   6@ == 8 
004D: jump_if_false @AIC_READ1B_LOOP 
0051: return 

:AIC_READ4B
0085: 6@ = 4@ // (int) 
000E: 4@ -= 10787168 
0016: 4@ /= 4 
008B: 5@ = &0(4@,1i) // (int) 
0085: 4@ = 6@ // (int) 
0051: return

Last edited by svetka (25-05-2008 14:54)

Offline

#2 24-05-2008 10:59

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Самый добрый скрипт:)

Идея замечательная)

Только если делать этот скрипт для CLEO (чего ты видимо хотела, раз стоит директива $E), то можно было бы воспользоваться и некоторыми возможностями CLEO. Например, вместо большого кода Interceptor'а можно заюзать опкод

0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@

который записывает в переменные хендлы ближайших к игроку машины и прохожего. Скрипт сократился бы раза в 4 в размере.

Из недостатков:

Ты проверяешь на нажатие кнопку 4, а на отпущенность - 10.
Модель не обязательно загружать с самого начала, можно сделать это после нажатия кнопки.
После передачи прохожему цветов стоит стишком небольшая проверка и из-за первой ошибки скрипт отрабатывает несколько раз подряд.

Model.Destroy(#FLOWERA)
Actor.RemoveReferences(9@)
Jump @NONAME_1337     

:NONAME_1337
Actor.RemoveReferences(9@)
jump @EXPLODE

этот блок должен быть сокращен до

Model.Destroy(#FLOWERA)
Actor.RemoveReferences(9@)
jump @LOAD_MODEL // метка перед Model.Load

Offline

#3 24-05-2008 11:09

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Самый добрый скрипт:)

Немного усовершенствовал, теперь прохожему случайным образом дарится дилдо или цветы grin


{$CLEO}
0000:

while true
    wait 250
    if
        Player.Defined($PLAYER_CHAR)
    then
        if
            $ONMISSION == 0
        then
            if
                0AB0:  key_pressed 70 // F
            then               
                0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@
                if
                    1@ > -1
                then               
                    0209: 2@ = random_int_in_ranges #gun_dildo1 #gun_cane  
     
                    Model.Load(2@)
                    
                    while not Model.Available(2@)
                        wait 0
                    end
                    0085: 3@ = 2@ // (int)
                    3@ -= 311 // convert modelID to weaponID (325->14) 
    
                    01B2: give_actor 1@ weapon 3@ ammo 0 // Load the weapon model before using this                
                   
                    Model.Destroy(2@)
                    
                    wait 1000
                end
            end
        end
    end
end

http://cleo.sannybuilder.com/scripts/flowers.cs

Все кредиты Светке)

Offline

#4 24-05-2008 14:38

svetka
Registered: 29-12-2006
Posts: 222

Re: Самый добрый скрипт:)

Seemann, я рада, что тебе понравился скрипт. А без ошибок в коде я вообще писать не умею:)
Спасибо, что подсказал)
Хотела опробовать твой вариант, но компилятор пишет, что не знает опкода 0AB5:
Я сегодня скачала новую CLEO 3 Library (v3.0.846) . Но с ней у меня не работают старые cleo-скрипты.  Вернула старые - всё нормально.
Может я не то скачала? Еще компилятор естественно не опознает опкод 0AB6:
Seemann, может можно их вручную прописать куда надо? Только вот не знаю куда. И где их значения можно посмотреть? Или может ты мне скажи?

Last edited by svetka (24-05-2008 14:47)

Offline

#5 24-05-2008 14:51

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Самый добрый скрипт:)

Но с ней у меня не работают старые cleo-скрипты.

Можно поподробнее (какая версия была, какие скрипты стоят, есть ли плагины)? По идее новые версии CLEO совместимы со старыми.

может можно их вручную прописать куда надо?

Идеальный вариант - скачать SB 3.03, там есть SASCM.INI, в котором эти опкоды прописаны.

Если возможности нет, то добавь в свой SASCM.INI эти строки:

; --- CLEO 3 Opcodes ---
; version 3.0.846
; visit www.cleo.sannybuilder.com for more info
;-----------------------
0A8C=4,write_memory %1d% size %2d% value %3d% virtual_protect %4d%
0A8D=4,%4d% = read_memory %1d% size %2d% virtual_protect %3d%
0A8E=3,%3d% = %1d% + %2d% ; int
0A8F=3,%3d% = %1d% - %2d% ; int
0A90=3,%3d% = %1d% * %2d% ; int
0A91=3,%3d% = %1d% / %2d% ; int
0A92=-1,create_custom_thread %1s%
0A93=0,end_custom_thread
0A94=-1,start_custom_mission %1s%
0A95=0,enable_thread_saving
0A96=2,%2d% = actor %1d% struct
0A97=2,%2d% = car %1d% struct
0A98=2,%2d% = object %1d% struct
0A99=1,chdir %1b:userdir/rootdir%
0A9A=3,%3d% = openfile %1s% mode %2d% // IF and SET
0A9B=1,closefile %1d%
0A9C=2,%2d% = file %1d% size
0A9D=3,readfile %1d% size %2d% to %3d%
0A9E=3,writefile %1d% size %2d% from %3d%
0A9F=1,%1d% = current_thread_pointer
0AA0=1,gosub_if_false %1p%
0AA1=0,return_if_false
0AA2=2,%2h% = load_library %1s% // IF and SET
0AA3=1,free_library %1h%
0AA4=3,%3d% = get_proc_address %1s% library %2d% // IF and SET
0AA5=-1,call %1d% num_params %2h% pop %3h%
0AA6=-1,call_method %1d% struct %2d% num_params %3h% pop %4h%
0AA7=-1,call_function %1d% num_params %2h% pop %3h%
0AA8=-1,call_function_method %1d% struct %2d% num_params %3h% pop %4h%
0AA9=0,  is_game_version_original
0AAA=2,%2d% = thread %1s% pointer
0AAB=1,  file_exists %1s%
0AAC=2,%2d% = load_mp3 %1d%
0AAD=2,set_mp3 %1d% perform_action %2d%
0AAE=1,release_mp3 %1d%
0AAF=2,%2d% = get_mp3_length %1d%
0AB0=1,  key_pressed %1d%
0AB1=-1,call_scm_func %1p%
0AB2=-1,ret
0AB3=2,var %1d% = %2d%
0AB4=2,%2d% = var %1d%
0AB5=3,store_actor %1d% closest_vehicle_to %2d% closest_ped_to %3d%
0AB6=3,store_target_marker_coords_to %1d% %2d% %3d% // IF and SET
0AB7=2,get_vehicle %1d% number_of_gears_to %2d%
0AB8=2,get_vehicle %1d% current_gear_to %2d%
0AB9=2,get_mp3 %1d% state_to %2d%

Offline

#6 24-05-2008 15:56

svetka
Registered: 29-12-2006
Posts: 222

Re: Самый добрый скрипт:)

Стоит SB v3.01 от 06.08.2007 г.
Плагинов вроде gxthook, scmlog и т.п. насколько я понимаю - нет. Даже папки такой нет.
А скрипты... Мои. На подобии того, что я выложила.
Или вот твой, например:

{$E}
0000: 

:NONAME_2
wait 250 
if 
0AB0:   key_pressed 115 
else_jump @NONAME_24 
03D8: show_save_screen 

:NONAME_24
jump @NONAME_2

Сейчас установила SB 3.03 - ни один cleo-скрипт не работает.

Last edited by svetka (24-05-2008 16:06)

Offline

#7 24-05-2008 17:00

svetka
Registered: 29-12-2006
Posts: 222

Re: Самый добрый скрипт:)

Заменила vorbisFile на старый (от 26.06.2005 23:12 18,5 КБ) и скрипты заработали.

Seemann, что это за клавиша в твоем коде: 0AB0:   key_pressed 70 ?  И где узнать номера всех таких клавишь?

Last edited by svetka (24-05-2008 19:09)

Offline

#8 24-05-2008 20:03

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Самый добрый скрипт:)

что это за клавиша в твоем коде: 0AB0:   key_pressed 70 ?  И где узнать номера всех таких клавишь?

Кнопка F.
http://cleo.sannybuilder.com/?lang=ru&id=2#0AB0

Offline

#9 24-05-2008 20:44

svetka
Registered: 29-12-2006
Posts: 222

Re: Самый добрый скрипт:)

Спасибо, Seemann smile
Но у меня новая напасть. После установки 3.03 (сначала всё было нормально) я не могу поставить расширение c.s. файлам scm. Он мне cleo-скрипты компилирует именно в scm, а когда я сатвлю нужное расширение - тип файла не меняется, хотя и именуется как например qwer.cs .  Вот.

Offline

#10 25-05-2008 09:08

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Самый добрый скрипт:)

Чтобы скомпилировать скрипт в .CS файл, нужно чтобы в начале стояла директива $CLEO.

Offline

#11 25-05-2008 11:56

svetka
Registered: 29-12-2006
Posts: 222

Re: Самый добрый скрипт:)

Это поняла. Теперь всё получается:)
Но вот когда раньше я ставила {Е} - подобных проблем не возникало.

Offline

#12 25-05-2008 12:47

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Самый добрый скрипт:)

У тебя наверно в винде стоит опция "Скрывать разрешения"? Если так, то файл, который ты пытаешься переименовать (qwer.cs) на самом деле имеет скрытое расширение .scm и его полное имя - qwer.cs.scm. Если ты отключишь эту виндовскую опцию (делается через Панель управления-Свойства папки), то будешь видеть все имя, включая расширение файла. Тогда можно будет вручную переименовать .scm в .cs.

$E создает файл, по содержанию идентичный .cs, но с расширением .scm (как в script.img).

Offline

#13 25-05-2008 12:49

svetka
Registered: 29-12-2006
Posts: 222

Re: Самый добрый скрипт:)

Seemann, у меня почему-то не работает твой скрипт. Вообще никто не реагирует. Нажимаю F вплотную подходя к педу. И ничего.

Offline

#14 25-05-2008 14:54

svetka
Registered: 29-12-2006
Posts: 222

Re: Самый добрый скрипт:)

Seemann, как-то пропустила твой последний пост) Точно, всё было скрыто. Виндоус каким-то образом сам себя обслужил.
И на счет $E теперь понятно:)
Но твой вариант скрипта так и не работает. Я уже и 0AB0:  key_pressed 70 на 00E1: key_Pressed 0 4 заменила. Ничего.

Offline

#15 25-05-2008 16:16

Centrino Duo
Registered: 08-05-2008
Posts: 99

Re: Самый добрый скрипт:)

нее ты не поняла.. подходиш к педу и автомотически передаещ. нисе ненадо нажимать smile

Offline

#16 25-05-2008 17:13

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Самый добрый скрипт:)

@Centrino Duo - Нажимать-то как раз нужно, там есть проверка.

@svetka - Закачай скомпилированный скрипт еще раз. Там была ошибка.

Last edited by Seemann (25-05-2008 17:42)

Offline

#17 25-05-2008 17:59

svetka
Registered: 29-12-2006
Posts: 222

Re: Самый добрый скрипт:)

smile Seemann, я скачала по этой ссылке: http://cleo.sannybuilder.com/scripts/flowers.cs
Там всё тот же самый скрипт. Один в один со старым. В SB сравнила. Естественно не включается.

Offline

#18 25-05-2008 18:17

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Самый добрый скрипт:)

Неа, там другой. В старом был опкод 0a8f.

Offline

#19 25-05-2008 18:44

svetka
Registered: 29-12-2006
Posts: 222

Re: Самый добрый скрипт:)

Да, и правда hmm
И всё равно не работает. Я подбежала вплотную к своей банде. Они стоят на месте. Нажимаю F и подольше, и пореже - нет цветов.

Last edited by svetka (25-05-2008 18:49)

Offline

#20 25-05-2008 18:52

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Самый добрый скрипт:)

а дилдо? цветы редко выпадают.

Offline

#21 26-05-2008 03:49

svetka
Registered: 29-12-2006
Posts: 222

Re: Самый добрый скрипт:)

Уф-ф... Дошло. Заменила новый vorbisFile на старый и всё заработало. И дилды у всех, и букеты:)

Offline

Board footer

Powered by FluxBB