AWRage
Активный
- 642
- 141
Не подскажешь как это сделать?%i - не стринг.
Можно перебором побайтовым и считать пробелы.
Не подскажешь как это сделать?%i - не стринг.
Можно перебором побайтовым и считать пробелы.
Таир говнокодит просто.Скрипт написан, точь в точь как в видеоуроке у Таирки)
Тебе именно 0AD4 нужно использовать или функцию по адресу 0x8220AD(sscanf)?Как узнать сколько параметров в строке?
0AD4: 0@ = scan_string 1format "%i %i %i %i %i " | Не работает так как нельзя сканировать стринг на стринг.
P.S. Ответы на прошлын вопросы нашёл.
Смотря где они находятся.Как удалить часть строки? Например в строке есть два ненужных пробела. Как их убрать?
А какая разница? Был же вроде опкод в сф управляющий символ в определенном месте строкиСмотря где они находятся.
В теме сниппетов есть нужная функция.В конце строки.
{$CLEO}
{$CLEO}
{$INCLUDE SF}
while not SAMP.Available()
wait 400
end
0b34: samp register_client_command "cnick" to_label @CHANGE
0BDE: pause_thread 0
:CHANGE
0B35: samp 0@ = get_last_command_params
call 0x8220AD num_params 4 pop 4 params 2@v 1@ "%s %d" 0@
0C17: 3@ = strlen 1@
0AB1: call_scm_func @RPC_SETNICK 4 1@ 2@ 3@ 1
0B43: samp cmd_ret
:RPC_SETNICK
0B3D: raknet 15@ = new_bit_stream
0B40: raknet bit_stream 15@ write 1@ type BS_TYPE_INT size 2
0B40: raknet bit_stream 15@ write 0@ type BS_TYPE_ARRAY size 2@
0B40: raknet bit_stream 15@ write 3@ type BS_TYPE_BYTE size 1
0BF6: raknet emul_rpc_receive RPC_ScrSetPlayerName bit_stream 15@
0B3E: raknet delete_bit_stream 15@
0AB2: ret 0
{$CLEO .cs}
{$INCLUDE SF}
0000:
repeat
wait 300
until 0AFA: is_samp_available
//:test
alloc 5@ 256
alloc 1@ 256
alloc 0@ 128
0B34: samp register_client_command "bot" to_label @test
while true
wait 100
if 9@ == true
then
0B75: samp get_chat_string 99 text_to 5@ prefix_to 6@ color_to 7@ prefix_color_to 8@
0C28: strlwr in 5@ out 1@ //переводим нашу строку в нижний регистр
if 0C18: 2@ = strstr string1 1@ string2 "привет" //ищем подстроку в строке 1@
then
0AF8: samp add_message_to_chat "Условие выполнилось" color 0xff0000
//---Выделяем строку заключенную между [ ] из строки-----
0C2D: strrev in 5@ out 1@
0C16: 2@ = strtok string1 1@ string2 "["
0C2D: strrev in 2@ out 1@
0C16: 2@ = strtok string1 1@ string2 "]"
//---Выделяем строку заключенную между [ ] из строки-----
wait 3000
0AD3: 0@ = format "/sms %s привет" 2@
0AF9: samp say_msg 0@
end
end
end
:test
if 9@ == false
then
9@ = true
0AF8: samp add_message_to_chat color "Бот активирован" 0xff0000
else
9@ = false
0AF8: samp add_message_to_chat color "Бот деактивирован" 0xff0000
end
SAMP.CmdRet()
0C2D: strrev in 5@ out 1@
0C16: 2@ = strtok string1 1@ string2 "["
0C2D: strrev in 2@ out 1@
0C16: 2@ = strtok string1 1@ string2 "]"
Под ник, то есть 1@.помогите плз с sscanf. на че память надо выделять?
CLEO:{$CLEO} {$CLEO} {$INCLUDE SF} while not SAMP.Available() wait 400 end 0b34: samp register_client_command "cnick" to_label @CHANGE 0BDE: pause_thread 0 :CHANGE 0B35: samp 0@ = get_last_command_params call 0x8220AD num_params 4 pop 4 params 2@v 1@ "%s %d" 0@ 0C17: 3@ = strlen 1@ 0AB1: call_scm_func @RPC_SETNICK 4 1@ 2@ 3@ 1 0B43: samp cmd_ret :RPC_SETNICK 0B3D: raknet 15@ = new_bit_stream 0B40: raknet bit_stream 15@ write 1@ type BS_TYPE_INT size 2 0B40: raknet bit_stream 15@ write 0@ type BS_TYPE_ARRAY size 2@ 0B40: raknet bit_stream 15@ write 3@ type BS_TYPE_BYTE size 1 0BF6: raknet emul_rpc_receive RPC_ScrSetPlayerName bit_stream 15@ 0B3E: raknet delete_bit_stream 15@ 0AB2: ret 0
if or
0C18: 0 = strstr string1 10@ string2 "Привет"
0C18: 0 = strstr string1 10@ string2 "qq"
0C18: 0 = strstr string1 10@ string2 "йй"
0C18: 0 = strstr string1 10@ string2 "Здравствуйте"
0C18: 0 = strstr string1 10@ string2 "Доброе утро"
0C18: 0 = strstr string1 10@ string2 "Добрый вечер"
0C18: 0 = strstr string1 10@ string2 "Доброй ночи"
0C18: 0 = strstr string1 10@ string2 "Доброго дня"
then
0AF8: "Доброго времени суток!" color -1
end
if or
0C18: 0 = strstr string1 10@ string2 "Ку"
0C18: 0 = strstr string1 10@ string2 "Ку-ку"
0C18: 0 = strstr string1 10@ string2 "Hello"
0C18: 0 = strstr string1 10@ string2 "Hi"
0C18: 0 = strstr string1 10@ string2 "Здрасте"
0C18: 0 = strstr string1 10@ string2 "Драсте"
0C18: 0 = strstr string1 10@ string2 "Ола"
0C18: 0 = strstr string1 10@ string2 "Хола"
then
0AF8: "Доброго времени суток!" color -1
end
Стринговый массив и цикл фор с принудительной остановкой.Как можно заменить такую конструкцию на более компактную?
Пробовал через массив, но не получилось.
CLEO:if or 0C18: 0 = strstr string1 10@ string2 "Привет" 0C18: 0 = strstr string1 10@ string2 "qq" 0C18: 0 = strstr string1 10@ string2 "йй" 0C18: 0 = strstr string1 10@ string2 "Здравствуйте" 0C18: 0 = strstr string1 10@ string2 "Доброе утро" 0C18: 0 = strstr string1 10@ string2 "Добрый вечер" 0C18: 0 = strstr string1 10@ string2 "Доброй ночи" 0C18: 0 = strstr string1 10@ string2 "Доброго дня" then 0AF8: "Доброго времени суток!" color -1 end if or 0C18: 0 = strstr string1 10@ string2 "Ку" 0C18: 0 = strstr string1 10@ string2 "Ку-ку" 0C18: 0 = strstr string1 10@ string2 "Hello" 0C18: 0 = strstr string1 10@ string2 "Hi" 0C18: 0 = strstr string1 10@ string2 "Здрасте" 0C18: 0 = strstr string1 10@ string2 "Драсте" 0C18: 0 = strstr string1 10@ string2 "Ола" 0C18: 0 = strstr string1 10@ string2 "Хола" then 0AF8: "Доброго времени суток!" color -1 end