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

gcode

нестандартное звание звание звание звание звани...
Друг
789
357
Код:
0AE2: find_all_random_vehicles_in_sphere 28@ 27@ 26@ radius 25.0 find_next 0 skip_dead 0 store_to 30@
Кто нибудь заставлял работать этот опкод в сампе?
 

MISTER_GONWIK

Всефорумный гонщик
Всефорумный модератор
1,262
1,754
Код:
0AE2: find_all_random_vehicles_in_sphere 28@ 27@ 26@ radius 25.0 find_next 0 skip_dead 0 store_to 30@
Кто нибудь заставлял работать этот опкод в сампе?

0AE2: $car = random_vehicle_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 pass_wrecked 1 //IF and SET
а этот чем тебе не нравится?
 

MogAika

Известный
Автор темы
Друг
237
444
Вах вах. Прикрыли рты.
Ответ на вопрос: перебирать все автомобили в пуле игры, либо перебирать все автомобили в пуле сампа
 

danilovsgs

Новичок
2
0
Подскажите как отправить ложные координаты серверу о нахождении актера в авто. Когда отправляю просто коориданты о пооложении игрока то он без машины как будто.
Вот как отправлял:
{$CLEO}
{$I /includes/RakNetDefines.txt}

0000:

if
8AF7: get_samp_base_to 0@
then
0A93: end_custom_thread
end
repeat
wait 400
until 0AFA: is_samp_structures_available

:1
wait 0
if
0AB0: 35
else_jump @1
wait 300
0AB1: @playersynccoord 3 0.0 0.0 0.0
wait 300
jump @1

:playersynccoord
0B2B: samp 3@ = get_player_id_by_actor_handle $player_actor
0B24: samp 3@ = get_player_ptr 3@
3@ += 0x6D
0AC8: 4@ = allocate_memory_size 0x44
0C10: memcpy destination 4@ source 3@ size 0x44
0C0D: struct 4@ offset 0x6 size 4 = 0@
0C0D: struct 4@ offset 0xA size 4 = 1@
0C0D: struct 4@ offset 0xE size 4 = 2@
0B3D: raknet 5@ = new_bit_stream
0B40: raknet bit_stream 5@ write PACKET_PLAYER_SYNC type BS_TYPE_BYTE size 1
0B40: raknet bit_stream 5@ write 4@ type BS_TYPE_ARRAY size 0x44
0B42: raknet send bit_stream 5@ priority PRIORITY_HIGH reliability UNRELIABLE_SEQUENCED ordering_channel 0
0B3E: raknet delete_bit_stream 5@
0AC9: free_allocated_memory 4@
0AB2: 0
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,469
Потому что функция для актера, а не для авто.

Для авто:
Код:
{$I includes/RakNetDefines.txt}
:SendFakePosInCar
// Ex.: 0AB1: @SendFakePosInCar 3 0.0 0.0 0.0
// By Daniil
0B2B: samp 3@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0B24: samp 3@ = get_player_ptr 3@
3@ += 177
0AC8: 4@ 63
0C10: memcpy def 4@ source 3@ size 63
0C0D: struct 4@ offset 24 size 4 = 0@
0C0D: struct 4@ offset 28 size 4 = 1@
0C0D: struct 4@ offset 32 size 4 = 2@
0B3D: raknet 5@ = new_bit_stream
0B40: raknet bit_stream 5@ write PACKET_VEHICLE_SYNC type BS_TYPE_BYTE size 1
0B40: raknet bit_stream 5@ write 4@ type BS_TYPE_ARRAY size 63
0B42: raknet send bit_stream 5@ priority PRIORITY_HIGH reliability UNRELIABLE_SEQUENCED ordering_channel 0
0B3E: raknet delete_bit_stream 5@
0AC9: 4@
0AB2: 0
 

danilovsgs

Новичок
2
0
Потому что функция для актера, а не для авто.

Для авто:
Код:
{$I includes/RakNetDefines.txt}
:SendFakePosInCar
// Ex.: 0AB1: @SendFakePosInCar 3 0.0 0.0 0.0
// By Daniil
0B2B: samp 3@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0B24: samp 3@ = get_player_ptr 3@
3@ += 177
0AC8: 4@ 63
0C10: memcpy def 4@ source 3@ size 63
0C0D: struct 4@ offset 24 size 4 = 0@
0C0D: struct 4@ offset 28 size 4 = 1@
0C0D: struct 4@ offset 32 size 4 = 2@
0B3D: raknet 5@ = new_bit_stream
0B40: raknet bit_stream 5@ write PACKET_VEHICLE_SYNC type BS_TYPE_BYTE size 1
0B40: raknet bit_stream 5@ write 4@ type BS_TYPE_ARRAY size 63
0B42: raknet send bit_stream 5@ priority PRIORITY_HIGH reliability UNRELIABLE_SEQUENCED ordering_channel 0
0B3E: raknet delete_bit_stream 5@
0AC9: 4@
0AB2: 0

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

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Зачем изобретать велосипед для работы со строками, если все функции вшиты в gta_sa.exe?

_strstr 0x822650
; char *__cdecl strstr(const char *Str, const char *SubStr)
Затем использовать опкод для вызова функции.

Из соглашения вызова:
cdecl Аргументы передаются через стек, справа налево. Очистку стека производит вызывающая программа. Это основной способ вызова функций с переменным числом аргументов.

Strstr - Функция ищет первое вхождение подстроки SubStr в строке Str . Возвращает указатель на первое вхождение строки SubStr в строку Str , или пустой указатель, если строка SubStr не является частью строки Str . В данном поиске нуль-символ не учитывается.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,469
Зачем изобретать велосипед для работы со строками, если все функции вшиты в gta_sa.exe?

_strstr 0x822650
; char *__cdecl strstr(const char *Str, const char *SubStr)
Затем использовать опкод для вызова функции.

Из соглашения вызова:
cdecl Аргументы передаются через стек, справа налево. Очистку стека производит вызывающая программа. Это основной способ вызова функций с переменным числом аргументов.

Strstr - Функция ищет первое вхождение подстроки SubStr в строке Str . Возвращает указатель на первое вхождение строки SubStr в строку Str , или пустой указатель, если строка SubStr не является частью строки Str . В данном поиске нуль-символ не учитывается.
Ну ... вообщем-то в SF есть strstr ... но как то не замечал.
 

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вопрос для FYP'a. По какому принципу компилируются метки в скриптах, тоесть например код метки :noname_20 будет начинаться с 20 байта в исходном коде. А вот как происходит указание на эту метку в jump'ах? Там передается адрес, или что? и относительно чего? формат типа EF FF FF FF например.
 

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.