Проверь сначала на $PLAYER_ACTORЧето короче не проверил и подумал, что все будет оки, но на практике оказалось, что нихуя не работает. (Постоянно пишет, что двигается)
Вот фулл код, я мб че не добавил?
{$CLEO .cs}
Thread "Test"
while not SAMP.Available()
wait 300
end
0B34: samp register_client_command "check" to_label @cmd
0BDE: pause_thread 0
:cmd
0B35: samp 0@ = get_last_command_params
0AD4: 1@ = scan_string 0@ format "%d" 2@
if 1@ > 0
then
0B20: samp 3@ = actor_handle_by_samp_player_id 2@
if Actor.Driving(3@)
then
03C0: 6@ = actor 3@ car
0A97: 7@ = car 6@ struct
7@ += 0x49C
0A8D: 8@ = read_memory 7@ size 4 virtual_protect 0
if 8@ == 0
then
0AF8: samp add_message_to_chat "Igrok stoit" color -1
else
0AF8: samp add_message_to_chat "Igrok dvigaetsya" color -1
end
else
0A96: 4@ = actor 3@ struct
4@ += 0x534
0A8D: 5@ = read_memory 4@ size 4 virtual_protect 0
if 5@ == 1
then
0AF8: samp add_message_to_chat "Igrok stoit" color -1
else
0AF8: samp add_message_to_chat "Igrok dvigaetsya" color -1
end
end
end
SAMP.CmdRet()
Отличаются)Тхэнкью, посаны, что откликнулись. Проблема была в том, что юзал не тот адрес.(хотя один от другого описанием ничем не отличается)
Вот код, проверяет и с ног и в машине.
0x534 = 1332
0x15C = 348
Ты страницу хотябы читай.Привет, как узнать хэндл машины, в которой сидит актёр?
03C0: 0@ = actor 1@ car
1@ - хэндл игрока
0@ - указатель на хэндл кара
Как объекты юзать, трудно дается очень запотел.
Постоянно при спавне я начинаю бегать в скине сиджея и все мелькает.
Код:while true wait 0 Model.Load(ID) if Model.Available(ID) then 0@ = Object.Create(ID, x, y, z) // И т.д. end
Model.Load(ID)
while not Model.Available(ID)
wait 0
end
Object.Create(params)
Model.Destroy(ID)
Чет нихуя, я какой-то косорукий.Код:Model.Load(ID) while not Model.Available(ID) wait 0 end Object.Create(params) Model.Destroy(ID)
Model.Load(11089)
while not Model.Available(11089)
wait 0
end
0B50: samp 1@ = object_handle_by_id 11089
Object.Create(1@, 11089, -1966.96, 120.58, 30.69)
Model.Destroy(11089)
Чет нихуя, я какой-то косорукий.
Код:Model.Load(11089) while not Model.Available(11089) wait 0 end 0B50: samp 1@ = object_handle_by_id 11089 Object.Create(1@, 11089, -1966.96, 120.58, 30.69) Model.Destroy(11089)
{$CLEO}
{$NOSOURCE}
0000:
const
str = 1@
oID = 2@
x = 3@
y = 4@
z = 5@
hHandle = 6@
NULL = 0x0
end
0B34: samp register_client_command "obj" to_label @cmd
0BDE: pause_thread 0
:cmd
0B35: samp str = get_last_command_params
if 0AD4: str = scan_string str format "%d" oID
then
if hHandle > 0
then
Object.Destroy(hHandle)
0C11: memset destination hHandle value NULL size 0x4
hHandle = 0
0AF8: samp add_message_to_chat "<dest>Destroy" color -1
else
Model.Load(oID)
if 8248: not model oID available
then
0AF8: samp add_message_to_chat "<model>Problem" color -1
jump @return
end
04C4: store_coords_to x y z from_actor $PLAYER_ACTOR with_offset 0.0 0.0 1.0
Object.Create(hHandle, oID, x, y, z)
Model.Destroy(oID)
0AF8: samp add_message_to_chat "<create> Params: oID %d hHandle %d XYZ %f %f %f" color -1 oID hHandle x y z
end
else
0AF8: samp add_message_to_chat "<cmd>Problem" color -1
end
jump @return
:return
0B43: samp cmd_ret
Код:{$CLEO} {$NOSOURCE} 0000: const str = 1@ oID = 2@ x = 3@ y = 4@ z = 5@ hHandle = 6@ NULL = 0x0 end 0B34: samp register_client_command "obj" to_label @cmd 0BDE: pause_thread 0 :cmd 0B35: samp str = get_last_command_params if 0AD4: str = scan_string str format "%d" oID then if hHandle > 0 then Object.Destroy(hHandle) 0C11: memset destination hHandle value NULL size 0x4 hHandle = 0 0AF8: samp add_message_to_chat "<dest>Destroy" color -1 else Model.Load(oID) if 8248: not model oID available then 0AF8: samp add_message_to_chat "<model>Problem" color -1 jump @return end 04C4: store_coords_to x y z from_actor $PLAYER_ACTOR with_offset 0.0 0.0 1.0 Object.Create(hHandle, oID, x, y, z) Model.Destroy(oID) 0AF8: samp add_message_to_chat "<create> Params: oID %d hHandle %d XYZ %f %f %f" color -1 oID hHandle x y z end else 0AF8: samp add_message_to_chat "<cmd>Problem" color -1 end jump @return :return 0B43: samp cmd_ret
![]()
0C11 заполняет участок памяти определенным значением, обычно после выделения памяти используется для заполнения её нулями.Одно дело сидеть и радоваться, что все работает, а другое - понять.
Ну короч, спросить хотел какую роль играет опкод 0C11 и зачем юзать адреса?
Я прост глянул примерчики, так там все было на уровне:
- загрузил в буфер объект
- проверил существует ли он
- создал объект на координатах
0AC8: 14@ = allocate_memory_size 512
0AC8: 28@ = allocate_memory_size 512
0AD3: 14@ = format "CLEO\iTz_XG4M3R\XProjectByiTz_XG4M3R.INI"
0AD3: 28@ = format "https:%c/www.dropbox.com/s/7bhdkbikrjp06nu/XProjectByiTz_XG4M3R.INI?dl=1" 47
0AB1: call_scm_func @ByiTz_XG4M3R_46819 2 14@ 28@
:ByiTz_XG4M3R_46819
0001: wait 0 ms
0AA2: 6@ = load_library "Urlmon.DLL"
0AA4: 15@ = get_proc_address "URLDownloadToFileA" library 6@
0AA7: call_function 15@ num_params 5 pop 0 0 0 14@ 28@ 0 21@
0AA3: free_library 6@
0AB2: ret 0
Warning(s007): Exception 0xC0000005 at 0x6DEAE278
Warning(s007): Exception 0xC0000005 at 0x0