Софт [CLEO PLUGIN] MGFUNCS 4.3 (0.3x / 0.3z)

Статус
В этой теме нельзя размещать новые ответы.

SR_team

like pancake
BH Team
4,804
6,475
Можешь сделать опкод, который запоминает аккурати для опкода 02E2?
 

MogAika

Известный
Автор темы
Друг
237
442
Странно, что могая не добавил эту функу :) Когда предлагал эту идею, указал её.

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

MogAika

Известный
Автор темы
Друг
237
442
Обновка 2_2, если найдете ошибки сообщайте тут, либо мне в личку
типа вызов из какого-нить потока функцию по метке, как 0AD1
можно сделать, но для этого надо намутить регистрацию данной функции из другого потока
рекомендую скачать как минимум из-за того что пофикшено несколько ошибок, связанных с таймером
 
  • Нравится
Реакции: itsLegend

SR_team

like pancake
BH Team
4,804
6,475
Как поздно ко мне пришла одна хорошая идея.

Суть заключается в том, что бы плагин создавал файл в папке cleo, с названием к примеру Myopcodes.txt. В который можно было бы писать свои опкоды исходя из других.

0FFF: Car_Searsh 1@ //Здесь он записывает в ячейку 1@ Значение из функции, которая записана ниже. Далее, можно использовать этот опкод в других скриптах вместо функции
{
0@ = -1
:Start
wait 0
0@ += 1
if
not 0@ > 1000
jf @end
samp 1@ = car_handle_from_samp_carid 0@
if
car 1@ defined
jf @Start
:End
}
 

MogAika

Известный
Автор темы
Друг
237
442
Как поздно ко мне пришла одна хорошая идея.
Суть заключается в том, что бы плагин создавал файл в папке cleo, с названием к примеру Myopcodes.txt. В который можно было бы писать свои опкоды исходя из других.

Скорость работы такого чуда будет не большой, + там возникают проблемы с использованием меток, т.к. для скрипта они отсчитываются относительно его base
Есть выход, но смысл работы будет другой.
Скрипты вызывает
Код:
0000: register_global_func @func with_name "funcname" args_num 3

:func
//тело функции 
0000: global_return

//Из скрипта "вызывальщика"
if
  0000:  1@ = call_global_func "funcname" 2@ 3@ 6@//работает как call_scm_func но возвращает только 1 значение
then
  //профит
else
  //нет такого
end
Кто заинтерисован, предлагайте свои варианты, может у вас получше идея будет
 

SR_team

like pancake
BH Team
4,804
6,475
Скорость работы такого чуда будет не большой, + там возникают проблемы с использованием меток, т.к. для скрипта они отсчитываются относительно его base
Есть выход, но смысл работы будет другой.
Скрипты вызывает
Код:
0000: register_global_func @func with_name "funcname" args_num 3
 
:func
//тело функции
0000: global_return
 
//Из скрипта "вызывальщика"
if
  0000:  1@ = call_global_func "funcname" 2@ 3@ 6@//работает как call_scm_func но возвращает только 1 значение
then
  //профит
else
  //нет такого
end
Кто заинтерисован, предлагайте свои варианты, может у вас получше идея будет

Слушай, а то что я предлогал. Его же можно написать на клео, если не задавать отдельный опкод, и вместо 0@ и 1@, использовать $NullForMyScript и $OneForMyScript. Он тогда по идее должен вызываться из клео. Правда это немного бесполезно и никому не нужно
 

MogAika

Известный
Автор темы
Друг
237
442
Слушай, а то что я предлогал. Его же можно написать на клео, если не задавать отдельный опкод, и вместо 0@ и 1@, использовать $NullForMyScript и $OneForMyScript. Он тогда по идее должен вызываться из клео. Правда это немного бесполезно и никому не нужно

Ты не можешь просто так безнаказанно вызвать scm функу, или госуб из другого скрипта
Как только встретится любой опкод, который прыгает на метку (jump, jf, goto), то будет краш
 

SR_team

like pancake
BH Team
4,804
6,475
Ты не можешь просто так безнаказанно вызвать scm функу, или госуб из другого скрипта
Как только встретится любой опкод, который прыгает на метку (jump, jf, goto), то будет краш

Я не про SCM))
Я просто про вызов ячейки
PHP:
{$CLEO .cs}
0000: NOP "Первый скрипт"
0001: wait 3000 ms
$MyScriptSave = 0
$MyScriptCall = 0
:Check
wait 0
if and
0AB0: 17
0AB0: 76
jf @Check
0A92: create_custom_thread "Function.f"
$MyScriptCall = 1
:Searsh
wait 10
if
not $MyScriptLoad == 0
jf @Searsh
$MyScriptSave = 1
//Продолжение скрипта пока не важно
PHP:
{$CLEO .f}
0000: NOP "Второй скрипт"
0001: wait 3000 ms
0@ = -1
$MyScriptLoad = 0
if
$MyScriptCall == 1
jf @StartTwo
:Start
wait 0
0@ += 1
if
not 0@ > 1000
jf @end
samp 1@ = car_handle_from_samp_carid 0@
if
car 1@ defined
jf @Start
$MyScriptLoad = 1@
:waiting
wait 10
if
$MyScriptSave == 1
jf @waiting
$MyScriptCall = 0
0A93: end_custom_thread
 
:StartTwo
wait 0
if
$MyScriptCall == 2
jf @StartThree
// и так далее по анологии, для вызова разных функций.
 

spiceman

GOWNIK <3
104
35
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Скорость работы такого чуда будет не большой, + там возникают проблемы с использованием меток, т.к. для скрипта они отсчитываются относительно его base
Есть выход, но смысл работы будет другой.
Скрипты вызывает
Код:
0000: register_global_func @func with_name "funcname" args_num 3
 
:func
//тело функции
0000: global_return
 
//Из скрипта "вызывальщика"
if
  0000:  1@ = call_global_func "funcname" 2@ 3@ 6@//работает как call_scm_func но возвращает только 1 значение
then
  //профит
else
  //нет такого
end
Кто заинтерисован, предлагайте свои варианты, может у вас получше идея будет

А если сделать в 1@ указатель на массив переданных аргументов?
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
Таймеры поломались.
Не работает callback.
Другие, вроде бы, признаки - даёт.

UPD:
0D97: timer 1@ set_active 1
Похоже, некорректно работает...:write:
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
Вообщем, прикладываю пример:
Код:
{$CLEO}
{$O inc/mgf_opcodes.ini}
 
const
    TIME_FLOOD = 2250
end
 
thread 'legend2360'
0662: "by legend2360"
0662: "BlastHack - cheating is art"
 
if 8AF7: get_samp_base_to 33@
then 0A93: end_custom_thread
end
repeat
    wait 400
until 0AFA: is_samp_structures_available
 
0D96: 1@ = timer_every TIME_FLOOD ms callback_to_label @timer_callback active false
 
reg_cmd "fedit" @cmd
 
while true
    wait 0
end
 
:cmd
0@++
if 0@ > 1
then 0@ = 0
end
 
if 0@ <> 0
then
    0B35: samp 2@ = get_last_command_params
    chat "Тэг: {FFFF00}%s" 0xFFFFFF 2@
end
 
0D97: timer 1@ set_active 0@
SAMP.CmdRet()
 
:timer_callback
if and
    not SAMP.ChatInputOpened()
    not SAMP.IsDialogActive(-1)
then
    say "/edit"
    wait 300
    if SAMP.IsDialogActive(224)
    then 0B4B: samp set_current_dialog_editbox_text 2@
    end
end
0D98: callback_retn

Работает на 2.1, но на 2.2 уже нет.
Если поставить
0D96: 1@ = timer_every TIME_FLOOD ms callback_to_label @timer_callback active true
Работает.
 

MogAika

Известный
Автор темы
Друг
237
442
=( смотрел пример в папке? там работает все на ура
 
Статус
В этой теме нельзя размещать новые ответы.