- 2,696
- 1,469
то есть write_int ?
Можно и так оставить...
то есть write_int ?
Можно и так оставить...
так а в чем разница вообще? если с int будет лучше, то я бы int поставил :D
Зачем server_name в int? там ведь название!server_name и server_port - должны быть int, в твоем случае, никак не string.
Ты слепой, у него там должно быть int.Зачем server_name в int? там ведь название!
0AF8: samp msg "Connected to Samp-Rp.Ru | Server: %s | Client: 0.3x" color 0xB0C4DE 1@
0AF5: write_string "02" to_ini_file "cleo\FAKE.ini" section "NAME" key "server_name"
0AF4: 1@ = read_string_from_ini_file "cleo\FAKE.ini" section "NAME" key "server_name"
0AF8: samp msg "Connected to Samp-Rp.Ru | Server: %02d | Client: 0.3x" color 0xB0C4DE 1@
0AF1: write_int 2 to_ini_file "cleo\FAKE.ini" section "NAME" key "server_name"
0AF0: 1@ = get_int_from_ini_file "cleo\FAKE.ini" section "NAME" key "server_name"
Сори не заметил. Думал он строку целиком хочет указыватьТы слепой, у него там должно быть int.
Посмотри форматирование строки.
Где ты string видишь?Код:0AF8: samp msg "Connected to Samp-Rp.Ru | Server: %s | Client: 0.3x" color 0xB0C4DE 1@ 0AF5: write_string "02" to_ini_file "cleo\FAKE.ini" section "NAME" key "server_name" 0AF4: 1@ = read_string_from_ini_file "cleo\FAKE.ini" section "NAME" key "server_name"
может кто-нибудь дать пример кода, который при вводе команды посылает на сервер пакеты о местонахождении в определенных координатах?
:SendOnfootFakePosition
// 0@, 1@, 2@ = coords
// Example: 0AB1: call @SendOnfootFakePosition 3 xyz 10@ 11@ 12@
3@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
3@ = SAMP.GetPlayerStruct(3@)
3@ += 613 // получаем указатель на локальную onFootData, чтобы потом её скопировать в наш буффер, изменив в нём только позицию
0AC8: 4@ = allocate_memory_size sizeof_stOnFootData // выделим память для буффера такого же размера, каким является размер структуры данных синхронизации пешком
0AB1: call @memcpy 3 destination 4@ source 3@ size sizeof_stOnFootData // моя функция побайтового копирования данных одного участка памяти в другой
0085: 5@ = 4@ // нужно чтоб сохранить адрес на начало нашего буффера
5@ += 6 // прибавим оффсет на fPosition[0] ( X ), т.к. нам кроме позиции ничего не нужно
0A8C: write_memory 5@ size 4 value 0@ virtual_protect 0 // запишем новое значение позиции, в переменной 0@ - хранится X (об этом позже)
5@ += 4 // размер типа float составляет 4 байта, а т.к. в массиве все элементы расположены упорядоченно, прибавив 4 байта, мы получим указатель на fPosition[1] ( Y )
0A8C: write_memory 5@ size 4 value 1@ virtual_protect 0 // и запишем новое значение координаты Y
5@ += 4 // fPosition[2] ( Z )
0A8C: write_memory 5@ size 4 value 2@ virtual_protect 0
0B3D: raknet 5@ = new_bit_stream
0B40: raknet bit_stream 5@ write PACKET_PLAYER_SYNC type BS_TYPE_BYTE size 1 // пишем ид пакета, PACKET_PLAYER_SYNC - это синхронизация пешком, тип обязательно должен быть указан BS_TYPE_BYTE
0B40: raknet bit_stream 5@ write 4@ type BS_TYPE_ARRAY size sizeof_stOnFootData // запишем наш буффер в битстрим, т.к. буффер - это массив байтов, укажем тип BS_TYPE_ARRAY и размер, равный размеру буффера
0B42: raknet send bit_stream 5@ priority PRIORITY_HIGH reliability UNRELIABLE_SEQUENCED ordering_channel 0 // отправим всё это на сервер
0B3E: raknet delete_bit_stream 5@ // освобождаем память выделенную под BitStream
0AC9: free_allocated_memory 4@ // освобождаем память выделенную под буффер
0AB2: ret 0 // выходим из функции
:memcpy
var
0@ : integer
1@ : integer
2@ : integer
3@ : integer
end
// 0@ - destination, 1@ - source, 2@ - size
// Example: 0AB1: call @memcpy 3 destination 0@ source 1@ size 2@
dec(2@)
for 3@ = 0 to 2@
0A8D: 4@ = read_memory 1@ size 1 virtual_protect 0
0A8C: write_memory 0@ size 1 value 4@ virtual_protect 0
1@ += 1
0@ += 1
end
0AB2: ret 0
Из мануала по опкодам SF от FYP. Меня кикает, как не пробовал.
PHP::SendOnfootFakePosition // 0@, 1@, 2@ = coords // Example: 0AB1: call @SendOnfootFakePosition 3 xyz 10@ 11@ 12@ 3@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR) 3@ = SAMP.GetPlayerStruct(3@) 3@ += 613 // получаем указатель на локальную onFootData, чтобы потом её скопировать в наш буффер, изменив в нём только позицию 0AC8: 4@ = allocate_memory_size sizeof_stOnFootData // выделим память для буффера такого же размера, каким является размер структуры данных синхронизации пешком 0AB1: call @memcpy 3 destination 4@ source 3@ size sizeof_stOnFootData // моя функция побайтового копирования данных одного участка памяти в другой 0085: 5@ = 4@ // нужно чтоб сохранить адрес на начало нашего буффера 5@ += 6 // прибавим оффсет на fPosition[0] ( X ), т.к. нам кроме позиции ничего не нужно 0A8C: write_memory 5@ size 4 value 0@ virtual_protect 0 // запишем новое значение позиции, в переменной 0@ - хранится X (об этом позже) 5@ += 4 // размер типа float составляет 4 байта, а т.к. в массиве все элементы расположены упорядоченно, прибавив 4 байта, мы получим указатель на fPosition[1] ( Y ) 0A8C: write_memory 5@ size 4 value 1@ virtual_protect 0 // и запишем новое значение координаты Y 5@ += 4 // fPosition[2] ( Z ) 0A8C: write_memory 5@ size 4 value 2@ virtual_protect 0 0B3D: raknet 5@ = new_bit_stream 0B40: raknet bit_stream 5@ write PACKET_PLAYER_SYNC type BS_TYPE_BYTE size 1 // пишем ид пакета, PACKET_PLAYER_SYNC - это синхронизация пешком, тип обязательно должен быть указан BS_TYPE_BYTE 0B40: raknet bit_stream 5@ write 4@ type BS_TYPE_ARRAY size sizeof_stOnFootData // запишем наш буффер в битстрим, т.к. буффер - это массив байтов, укажем тип BS_TYPE_ARRAY и размер, равный размеру буффера 0B42: raknet send bit_stream 5@ priority PRIORITY_HIGH reliability UNRELIABLE_SEQUENCED ordering_channel 0 // отправим всё это на сервер 0B3E: raknet delete_bit_stream 5@ // освобождаем память выделенную под BitStream 0AC9: free_allocated_memory 4@ // освобождаем память выделенную под буффер 0AB2: ret 0 // выходим из функции :memcpy var 0@ : integer 1@ : integer 2@ : integer 3@ : integer end // 0@ - destination, 1@ - source, 2@ - size // Example: 0AB1: call @memcpy 3 destination 0@ source 1@ size 2@ dec(2@) for 3@ = 0 to 2@ 0A8D: 4@ = read_memory 1@ size 1 virtual_protect 0 0A8C: write_memory 0@ size 1 value 4@ virtual_protect 0 1@ += 1 0@ += 1 end 0AB2: ret 0
а комманду где установить? и чтобы при ее вводе срабатывал скрипт?
:Label
wait 0
jump @Label
:Метка_на_которую_ссылается_команда
wait 0
0AB1: call @SendOnfootFakePosition 3 xyz 10@ 11@ 12@
cmd_ret
// This file was decompiled using sascm.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}
//-------------MAIN---------------
0000: NOP
if
0@ = SAMP.Base()
jf @Fake_67
end_thread
:Fake_67
wait 400
SAMP.Available
jf @Fake_67
if
8AAB: not file_exists "CLEO\INI\Fake.ini"
jf @Fake_577
0AF1: write_int 0 to_ini_file "CLEO\INI\Fake.ini" section "FakeChat" key "Имя_Фамилия"
0AF1: write_int 0 to_ini_file "CLEO\INI\Fake.ini" section "FakeChat" key "Какое должно выпасть число"
:Fake_577
0AC8: 0@ = allocate_memory_size 40
0AC8: 1@ = allocate_memory_size 70
0AF4: 0@ = read_string_from_ini_file "CLEO\INI\Fake.ini" section "FakeChat" key "Имя_Фамилия"
0AF4: 1@ = read_string_from_ini_file "CLEO\INI\Fake.ini" section "FakeChat" key "Какое должно выпасть число"
:Fake_1066
wait 0
if and
0AB0: key_pressed 18
0AB0: key_pressed 65
jf @Fake_1066
0AF8: samp add_message_to_chat " %s бросил(а) игральные кости на стол, выпало %s из 12 " color 9276927 0@ 1@
0A8C: write_memory 0@ size 40 value 0 virtual_protect 0
0A8C: write_memory 1@ size 70 value 0 virtual_protect 0
wait 3000
jump @Fake_1066
Код:0A8C: write_memory 0@ size 40 value 0 virtual_protect 0 0A8C: write_memory 1@ size 70 value 0 virtual_protect 0
Код:// This file was decompiled using sascm.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013 {$CLEO .cs} //-------------MAIN--------------- 0000: NOP if 0@ = SAMP.Base() jf @Fake_67 end_thread :Fake_67 wait 400 SAMP.Available jf @Fake_67 if 8AAB: not file_exists "CLEO\INI\Fake.ini" jf @Fake_577 0AF1: write_int 0 to_ini_file "CLEO\INI\Fake.ini" section "FakeChat" key "Имя_Фамилия" 0AF1: write_int 0 to_ini_file "CLEO\INI\Fake.ini" section "FakeChat" key "Какое должно выпасть число" :Fake_577 0AC8: 0@ = allocate_memory_size 40 0AC8: 1@ = allocate_memory_size 70 0AF4: 0@ = read_string_from_ini_file "CLEO\INI\Fake.ini" section "FakeChat" key "Имя_Фамилия" 0AF4: 1@ = read_string_from_ini_file "CLEO\INI\Fake.ini" section "FakeChat" key "Какое должно выпасть число" :Fake_1066 wait 0 if and 0AB0: key_pressed 18 0AB0: key_pressed 65 jf @Fake_1066 0AF8: samp add_message_to_chat " %s бросил(а) игральные кости на стол, выпало %s из 12 " color 9276927 0@ 1@ 0A8C: write_memory 0@ size 40 value 0 virtual_protect 0 0A8C: write_memory 1@ size 70 value 0 virtual_protect 0 wait 3000 jump @Fake_1066
В чем проблема? нет никакой реакции
Как сделать телепортацию без сброса анимации, угла камеры и тд?