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

spiceman

GOWNIK <3
104
35
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как опкод 0С5A заменить?
А то не пашет(

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

0B34: samp register_client_command "cmd" to_label @cmd
alloc 1@ 128

while true
wait 0
if 0@ == true
then
0C5A: samp textdraw 2223 get_string_to 1@
if 0C14: strcmp string1 1@ string2 "Press Y"
then
chatmsg "TextDraw ID: 2223 отображен, нажимайте клавишу Y"
else
if 0C14: strcmp string1 1@ string2 "Press N"
then
chatmsg "TextDraw ID: 2223 отображен, нажимайте клавишу N"
end
end
end
end

:cmd
if 0@ == false
then
0@ = true
else
0@ = false
end
SAMP.CmdRet()
братан, а ты уверен, что текст написан именно в таком регистре? мб там все в верхнем, мб в нижнем, мб еще как-то. получи строку и выведи, допустим, в чат и проверь, как она выглядит
 

Woofing Giraffe

Активный
402
49
Поступим ещё проще, с помощью скана строки: http://blasthack.net/threads/7486/
Код:
alloc 1@ 144
alloc 2@ 32

alloc 3@ 48 // SMS text
alloc 4@ 24 // SMS nickname
5@v = 0 // telephone

while true
    wait 100
    0B75: samp get_chat_string 99 text_to 1@ prefix_to 2@ color_to 0 prefix_color_to 0
    0AA7: call 0x8220AD num_params 5 pop 5 params 5@v 4@ 3@ "SMS: \"%[^\"]\" | Отправитель: %[\_a-zA-Z] [т.%d]" 1@ read_params_to 6@
    if 6@ == 3 // прочитаны все параметры
    then
        chat "---------------------" 0xFFFF00
        chat "Вам пришло СМС от %s! Номер: %d" -1 4@ 5@
        chat "Текст: {FFFF00}%s" -1 3@
        chat "---------------------" 0xFFFF00
    end
end
%[^\"] - регулярное выражение:
^ - игнорирование символов, которые указаны далее;
\" - игнорируемый символ "(кавычки). Нужно для того, чтобы не ушел за границы и выделил тот текст, который нам необходим;​
%[\_a-zA-Z] - тоже рег. выражение:
\_ - символ _(нижнее подчеркивание)
a-zA-Z - все латинские буквы(большого и малого регистра)​
Читает только один параметр, это текст который приходит, остальные переменные остаются пустые
 

Vovich

HOT
Проверенный
717
197
братан, а ты уверен, что текст написан именно в таком регистре? мб там все в верхнем, мб в нижнем, мб еще как-то. получи строку и выведи, допустим, в чат и проверь, как она выглядит
А я не подумал кстати, спасибо сейчас попробую
 

clicore

Известный
170
124
Код:
{$CLEO .cs}

0000: NOP
repeat
wait 0
until Samp.Available()
chatmsg "[SkillMaster] {00BFFF}F5 + B - âêëþ÷èòü, F5 + N - îòêëþ÷èòü." color 0x48d1cc
0B34: samp register_client_command "skillon" to_label @skill_m1
0B34: samp register_client_command "skilloff" to_label @skill_m3


:skill_m1
if
not 5@ == true
then
    5@ == true
    wait 0
    else_jump @skill_m3
    wait 1000
    chatmsg "[SkillMaster] {43CD80}×èò àêòèâèðîâàí, æäè ðåçóëüòàòà!" color 0x48d1cc
    3@ = 1
    goto @skill_m2
end
SAMP.CmdRet()

:skill_m3
if
5@ == true
then
    5@ == false
    else_jump @skill_m2
    wait 1000 
    chatmsg "[SkillMaster] {FF6347}×èò îòêëþ÷åí, ïðèÿòíîé èãðû!" color 0x48d1cc
    3@ = 0
    goto @skill_m2
end
SAMP.CmdRet()

:skill_m2
if
  3@ == 1
else_jump @skill_m1
0470: 1@ = actor $PLAYER_ACTOR current_weapon
041A: 2@ = actor $PLAYER_ACTOR weapon 1@ ammo
2@ -= 1
Actor.SetWeaponAmmo($PLAYER_ACTOR, 1@, 2@)
wait 1100
goto @skill_m1
Помогите, я что то не то написал походу :(
 

Vovich

HOT
Проверенный
717
197
братан, а ты уверен, что текст написан именно в таком регистре? мб там все в верхнем, мб в нижнем, мб еще как-то. получи строку и выведи, допустим, в чат и проверь, как она выглядит
Крч вот такая хрень вместо текста:
as34sdaPNG_8915389_17912867.png
На другом текстдраве (инвертарь к примеру) пишет последнее слово (INFO USE DROP), пишет слово Drop.
А тут "_", хз как теперь дальше...
 

ромашка

Новичок
1
0
Поджскажите, кпак в гме убрать видимость пуль и звук пуль ? Сделал типа рандом, думаю более менее вышло. Вот код
Скрытое содержимое доступно для зарегистрированных пользователей!
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Крч вот такая хрень вместо текста:
На другом текстдраве (инвертарь к примеру) пишет последнее слово (INFO USE DROP), пишет слово Drop.
А тут "_", хз как теперь дальше...
Есть ещё другая функция, которая меняет текст.

Читает только один параметр, это текст который приходит, остальные переменные остаются пустые
Тестировал со строкой типа SMS: "Блаблабла" | Отправитель: Kto_to_iz_nih [т.123456789], вполне работало

How to find XYZ position of a server map icon ?
http://open-samp.googlecode.com/svn/trunk/Open SAMP/Client/game/class_marker.h
Markers' pool: 0xBA86F0
Max markers: 175
Код:
struct RadarMarker {
uint32_t dwColourID; // 0
uint32_t* pEntity; // 4
tVector vecPos;
//float fPosX; // 8
//float fPosY; // 12
//float fPosZ; // 16
uint16_t wFlag; // 20
uint16_t _wAlign; // 22
float fUnknown; // 24 (either 1.0 or 5.0)
uint32_t dwIconSize; // 28
uint32_t* pEnterExit; // 32
uint8_t byteIcon; // 36
uint8_t byteFlags; // 37
uint8_t byteType; // 38
uint8_t _bAlign; // 39
};
Код:
for 0@ = 0xBA86F0 to 0xBAA248 step 40
    0C0C: 1@ = struct 0@ offset 0 size 4
    if 1@ <> 0
    jf continue
   
    0C0C: 1@ = struct 0@ offset 36 size 1 // icon
    if 1@ <> 0 // players icons?
    jf continue

    0C0C: 2@ = struct 0@ offset 8 size 4
    0C0C: 3@ = struct 0@ offset 12 size 4
    0C0C: 4@ = struct 0@ offset 16 size 4
    log "Icon: %d | %f %f %f" 1@ 2@ 3@ 4@
end
 
Последнее редактирование:

Mark91

Новичок
23
2
[quote = "legend2360, post: 75382, member: 188"] -snip-
[/quote]

Max map icons in sa-mp is 100, not 175. Is that snippet for fetching map icon POS? Also I want to find the active map incon position for server created map icons only ! So will work that way ?
 
Последнее редактирование:

Evgeniy13

Новичок
40
1
Смотрите, я написал массив с вопросами и ответами, мой скрипт сканирует строку чата, при совпадении текста выдает ответ из массива, но вот в чем беда, заданный текст пишется без пробелов! т.е. задан ответ test 0, а в ответе test0. Подскажите в чем ошибка, очень прошу!
Вот сам массив.
s$vopros_mas[0] = 'привет'
s$vopros_mas[1] = 'прив'
s$vopros_mas[2] = 'ghbdtn'
s$vopros_mas[3] = 'ghbd'
s$vopros_mas[4] = 'lfhjdf'
s$vopros_mas[5] = 'plfhjdf'
s$vopros_mas[6] = ' ку'
s$vopros_mas[7] = 'хай'
s$vopros_mas[8] = 'здарова'
s$vopros_mas[9] = 'дарова'
//
s$otvet_mas[0] = 'test'0'
s$otvet_mas[1] = 'test 1'
s$otvet_mas[2] = 'test 2'
s$otvet_mas[3] = 'test 3'
s$otvet_mas[4] = 'test 4'
s$otvet_mas[5] = 'test 5'
s$otvet_mas[6] = 'test 6'
s$otvet_mas[7] = 'test 7'
s$otvet_mas[8] = 'test 8'
s$otvet_mas[9] = 'test 9'
 

Evgeniy13

Новичок
40
1
Погуглил и выяснил, что у меня где-то в коде переменная, которая удаляет пробелы. Можете сказать, какие переменные способны на это?
 

Evgeniy13

Новичок
40
1
У меня так и есть. Текст в этой строке с пробелами как нужно.
0AD3: 0@ = format "/b %s %s"
Но дальше идет отсылка у массиву "2@ $otvet_mas[11@]"
Т.е.
0AD3: 0@ = format "/b %s %s" 2@ $otvet_mas[11@]
Вот часть текста которая в массиве без пробелов. Сам массив в сообщениях выше.