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

hnnssy

Известный
Друг
2,684
2,753
CLEO:
{$CLEO}
0000:
wait 2000

0B34: "car" to_label @Test

while true
wait 0
end

:Test
for 1@ = 0 to 999
Actor.StorePos($Player_Actor, 2@, 3@, 4@)
0AE2: 0@ = random_vehicle_near_point 2@ 3@ 4@ in_radius 100.0 find_next 0 pass_wrecked 1
0AFF: samp 0@ = car_handle_by_samp_vehicle_id 1@
0AF8: "%d" -1 1@
end
0B43: samp cmd_ret
:Test
for 1@ = 0 to 2000
if 0AFF: samp 0@ = car_handle_by_samp_vehicle_id 1@
then 0AF8: "%d" -1 1@
end
end
0B43: samp cmd_ret
 
  • Нравится
Реакции: RedBoxWhite

romacaddy

Известный
Проверенный
234
206
CLEO:
{$CLEO}
0000: НОПЧАНСКИЙ

:samp
wait 500
if
SAMP.Available()
jf @samp

0B34: samp register_client_command "boom" to_label @BoomPlayer
0AF8: samp add_message_to_chat "[BoomPlayer] {FFFFFF}Загружен. Автор: {00FF00}swamp" color 0x00FF00

:1
wait 0
jump @1

:BoomPlayer
wait 0
if
Actor.Driving($PLAYER_ACTOR)
jf @ActorNotInCar
0B35: samp 0@ = get_last_command_params
0AD4: 25@ = scan_string 0@ format "%d" 5@
0B20: samp 1@ = actor_handle_by_samp_player_id 5@
if and
5@ >= 0
5@ <= 1000
jf @withoutid
if and
Not Actor.Dead(1@)
056D:   actor 1@ defined
jf @DeadOrNotDef
03C0: 4@ = actor $PLAYER_ACTOR car
0224: set_car 4@ health_to 5
wait 4500
04C4: store_coords_to 10@ 11@ 12@ from_actor 1@ with_offset 0.0 0.0 5.0
Actor.PutAt($PLAYER_ACTOR, 10@, 11@, 12@)
04C4: store_coords_to 21@ 22@ 23@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 21@ 22@ 23@
0B36: samp 6@ = get_player_nickname 1@
0AF8: samp add_message_to_chat "[BoomPlayer] {FFFFFF}Автомобиль отправлен в игрока %s[%d]" 6@ 5@ color 0x00FF00
SAMP.CmdRet()

// -ОШИБКИ-

:ActorNotInCar
0AF8: samp add_message_to_chat "[BoomPlayer] {FFFFFF}Ошибочка, вы не за рулем автомобиля" color 0x00FF00
SAMP.CmdRet()

:withoutid
0AF8: samp add_message_to_chat "[BoomPlayer] {FFFFFF}Подсказка: /boom [ID]"  color 0x00FF00
SAMP.CmdRet()

:DeadOrNotDef
0AF8: samp add_message_to_chat "[BoomPlayer] {FFFFFF}Ошибочка, игрок не найден или находится вне зоны действия сети"  color 0x00FF00
SAMP.CmdRet()
Зависает игра после написания команды и ID игрока, хотел бы поинтересоваться почему?
 

SR_team

like pancake
BH Team
4,722
6,380
CLEO:
{$CLEO}
0000: НОПЧАНСКИЙ

:samp
wait 500
if
SAMP.Available()
jf @samp

0B34: samp register_client_command "boom" to_label @BoomPlayer
0AF8: samp add_message_to_chat "[BoomPlayer] {FFFFFF}Загружен. Автор: {00FF00}swamp" color 0x00FF00

:1
wait 0
jump @1

:BoomPlayer
wait 0
if
Actor.Driving($PLAYER_ACTOR)
jf @ActorNotInCar
0B35: samp 0@ = get_last_command_params
0AD4: 25@ = scan_string 0@ format "%d" 5@
0B20: samp 1@ = actor_handle_by_samp_player_id 5@
if and
5@ >= 0
5@ <= 1000
jf @withoutid
if and
Not Actor.Dead(1@)
056D:   actor 1@ defined
jf @DeadOrNotDef
03C0: 4@ = actor $PLAYER_ACTOR car
0224: set_car 4@ health_to 5
wait 4500
04C4: store_coords_to 10@ 11@ 12@ from_actor 1@ with_offset 0.0 0.0 5.0
Actor.PutAt($PLAYER_ACTOR, 10@, 11@, 12@)
04C4: store_coords_to 21@ 22@ 23@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0
0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 21@ 22@ 23@
0B36: samp 6@ = get_player_nickname 1@
0AF8: samp add_message_to_chat "[BoomPlayer] {FFFFFF}Автомобиль отправлен в игрока %s[%d]" 6@ 5@ color 0x00FF00
SAMP.CmdRet()

// -ОШИБКИ-

:ActorNotInCar
0AF8: samp add_message_to_chat "[BoomPlayer] {FFFFFF}Ошибочка, вы не за рулем автомобиля" color 0x00FF00
SAMP.CmdRet()

:withoutid
0AF8: samp add_message_to_chat "[BoomPlayer] {FFFFFF}Подсказка: /boom [ID]"  color 0x00FF00
SAMP.CmdRet()

:DeadOrNotDef
0AF8: samp add_message_to_chat "[BoomPlayer] {FFFFFF}Ошибочка, игрок не найден или находится вне зоны действия сети"  color 0x00FF00
SAMP.CmdRet()
Зависает игра после написания команды и ID игрока, хотел бы поинтересоваться почему?
wait нельзя юзать в командах, а зависает, потому что ты не в машине, и ник по хендлу получаешь. А еще у тебя параметры команда до цвета, а должны быть после
 
  • Нравится
Реакции: FYP и romacaddy

RedBoxWhite

Известный
337
27
Что не так?
CLEO:
0B75: get_chat_string 99 text_to 10@ prefix_to 0 color_to 0 prefix_color_to 0
    if 0C18: 0 = strstr string1 10@ string2 "da"
    then
                0AD4: 21@ = scan_string 10@ format "da %s (%s) [%d]" 2@v 3@v 4@v
                0AF8: "%s %s" color 0xBEBEBE 2@ 3@
    end
 

FYP

Известный
Администратор
1,758
5,737
@Picador поскольку прицел в игре находится не по центру экрана, на расчёт угла вращения камеры для прицела влияет много аспектов.
вот код на с++, который вычисляет оффсет для оси x, взят из собейта:
C++:
float* crosshairOffset = (float *)0xB6EC10;
float mult = tan(pCam->FOV * 0.5f * 0.017453292f);
fx = M_PI - atan2(1.0f, mult * (crosshairOffset[1] - 0.5f + crosshairOffset[1] - 0.5f));
crosshairOffset - глобальный массив игры, хранящий оффсеты прицела от центра экрана
pCam->FOV - поле зрения камеры в радианах
mult - результат вычисления какой-то неведомой хуйни, я отреверсил её из функции игры автонаведения для джойстиков
fx - собственно, сам оффсет, который надо прибавить к нужному углу (или отнять?)
вообще, советую посмотреть исходник аима собейта, там ещё есть и наведение по y. тут.
 
  • Нравится
Реакции: woksonal и p1cador