Вопросы по CLEO-скриптингу

Sedoj

Участник
56
1
Вместо строковой переменной (@v) выделите память под обычную переменную
Не доходит, как это сделать?
Вместо строковой переменной (@v) выделите память под обычную переменную
Разобрался, Спасибо
 
Последнее редактирование:

loganhackerdff

Известный
868
517
Как хукать текст из rpc если в битстриме нет его размера? С clientmessage получается потому-что там приходит размер
 

loganhackerdff

Известный
868
517
а теперь
Как хукать текст из rpc если в битстриме нет его размера? С clientmessage получается потому-что там приходит размер
 

Вложения

  • aimbot_f12 (1).cs
    29.7 KB · Просмотры: 5

MAHEKEH

Известный
1,989
494
хелпаните, не улавливаю какую то очевидную деталь.
хочу понять для себя, как перемещать текст курсором по экрану с автоматическим отступом по высоте ( как на скрине )
там чето когда то пробовал но путного ниче не вышло


Код:
{$CLEO .cs}
0000: NOP

0B34: samp register_client_command "test" to_label @0
0@ = Render.CreateFont("Comic Sans MS", 11, 4)

:hueta
wait 0
  26@ == 1
jf @hueta
SAMP.SetCursorMode(1)
0B5E: get_cursor_pos 3@ 4@
alloc 5@ 15
format 5@ "ТЕСТ ТЕКСТ"
0AF0: 3@ = get_int_from_ini_file "CLEO\INI\TEST.ini" section "TEST" key "[1]"
0AF0: 4@ = get_int_from_ini_file "CLEO\INI\TEST.ini" section "TEST" key "[2]"
Render.DrawText(0@, 5@, 3@, 4@, 0)
wait 0
key_down 1
jf @hueta
SAMP.SetCursorMode(0)
26@ = 0
free 5@
goto @hueta

:0
26@ = 1
SAMP.CmdRet

2020-02-13_002330.jpg

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

не кидайте пожалуйста примеры с луа и тд
 

astap_

Известный
Всефорумный модератор
626
597
хелпаните, не улавливаю какую то очевидную деталь.
хочу понять для себя, как перемещать текст курсором по экрану с автоматическим отступом по высоте ( как на скрине )
там чето когда то пробовал но путного ниче не вышло


Код:
{$CLEO .cs}
0000: NOP

0B34: samp register_client_command "test" to_label @0
0@ = Render.CreateFont("Comic Sans MS", 11, 4)

:hueta
wait 0
  26@ == 1
jf @hueta
SAMP.SetCursorMode(1)
0B5E: get_cursor_pos 3@ 4@
alloc 5@ 15
format 5@ "ТЕСТ ТЕКСТ"
0AF0: 3@ = get_int_from_ini_file "CLEO\INI\TEST.ini" section "TEST" key "[1]"
0AF0: 4@ = get_int_from_ini_file "CLEO\INI\TEST.ini" section "TEST" key "[2]"
Render.DrawText(0@, 5@, 3@, 4@, 0)
wait 0
key_down 1
jf @hueta
SAMP.SetCursorMode(0)
26@ = 0
free 5@
goto @hueta

:0
26@ = 1
SAMP.CmdRet


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

не кидайте пожалуйста примеры с луа и тд
я бы так сделал, может быть есть варианты лучше, не знаю.
CLEO:
{$CLEO}
0000:
thread 'astap'

{default text pos}
2@ = 500
3@ = 500

while not SAMP.Available()
    wait 0
end
0b34: 'cmd' @cmd
0@ = Render.CreateFont("Comic Sans MS", 11, 4)
0B6B: render 6@ = font 0@ draw_text "some text" length {длина текста}
0B6C: render 7@ = font 0@ draw_height                  {высота текста}

while true
    wait 0
    0a8e: 8@ = 2@ + 6@ {левый верхний угол текста}
    0a8e: 9@ = 3@ + 7@ {правый нижний угол текста}
 
    Render.DrawText(0@, "some text", 2@, 3@, 0xFFFF00FF)
 
    if 1@ == true // 1@ - moving
    then
        0B5D: samp toggle_cursor 1@
    
        if call @isCursorHere 6 2@ 3@ | 8@ 9@ | 6@ 7@ {если навелись курсором на нарисованный текст}
        then          
            if key_down 0x01 {и если кликнули по нему левой кнопкой мыши}
            then
                while key_down 0x01 {пока зажата левая кнопка мыши - ничего не делаем}
                    wait 0
                end
             
                while not key_down 0x01 {пока левая кнопка не будет нажата снова - передвигаем текст}
                    wait 0
                    0B5E: get_cursor_pos 12@ 13@
                    0085: 2@ = 12@
                    0085: 3@ = 13@                  
                    Render.DrawText(0@, "some text", 2@, 3@, 0xFFFF00FF) {чтобы не говнокодить, можно вынести рендер в отдельный поток} 
                end
             
                while key_down 0x01 {костылим ещё разок, чтобы не было проблем}
                    wait 0
                end
            end
        end
    end
end

:cmd
0B12: 1@ = 1@ XOR 1
chatmsg "toggled" -1
cmdret

:isCursorHere
0B5E: get_cursor_pos 6@ 7@
0085: 8@ = 6@
0085: 9@ = 7@
0062: 8@ -= 0@
0062: 9@ -= 1@
if and
    001D: 6@ > 0@
    001D: 7@ > 1@
then
    005A: 0@ += 2@
    005A: 1@ += 3@
    if and
        001D: 0@ > 6@
        001D: 1@ > 7@
        801D: 8@ < 4@
        801D: 9@ < 5@
    then
        0485:  return_true
    else
        059A:  return_false
    end
    0062: 0@ -= 2@
    0062: 1@ -= 3@
else
    059A:  return_false
end
0AB2: ret 0
 
  • Нравится
Реакции: MAHEKEH

618

Участник
22
62
Как реализовать скрытие и отображение текстдравов, как в этом плагине? Знаю только то, как удалять текстдравы, а как восстанавливать?
 
D

deleted-user-399997

Гость
8B4C: not samp is_dialog_active -1 = not SAMP.IsDialogActive(-1)
Как мне понять какой обкод у етого обкода?)):
Actor.HasWeapon или других "SAMP." обкодов или без 0000: ...
Я знаю про https://blast.hk/wiki/opcodes:sampfuncs:list но как из них получить SAMP. ...?
 

hnnssy

Известный
Друг
2,684
2,747

erferfreer

Известный
12
2
помогите перевести на клео

inline float vect3_length(const float in[3])
{
return sqrtf(in[0] * in[0] + in[1] * in[1] + in[2] * in[2]);
}
inline void vect3_copy(const float in[3], float out[3])
{
memcpy(out, in, sizeof(float) * 3);
}
void AimVectorToPlayer(WORD player)
{
stAimData aim = SF->getSAMP()->getPlayers()->pLocalPlayer->aimData;
actor_info* actorInfo = SF->getSAMP()->getPlayers()->pRemotePlayer[player]->pPlayerData->pSAMP_Actor->pGTA_Ped;
float matched_pos[3], AimVector[3];
vect3_copy(actorInfo->base.matrix + 12, matched_pos);
float* fPos = actorInfo->base.matrix + 12;
for (int i = 0; i < 3; ++i)
{
AimVector = matched_pos - aim.vecAimPos;
aim.vecAimf1 = AimVector / vect3_length(AimVector);
aim.vecAimPos = fPos;
}
aim.vecAimPos[2] += 0.2f;
BitStream bs;
bs.Write((BYTE)ID_AIM_SYNC);
bs.Write((PCHAR)&aim, sizeof(stAimData));
SF->getRakNet()->SendPacket(&bs);
}