8 февраля 2020 г.

Двойной прыжок

Простенький скрипт двойного прыжка. Работает так же, как во многих играх: нажимаете в воздухе клавишу «Прыжок» — и главный герой летит ещё чуточку дальше.

/* Made by Vital */
//$PLAYER_ACTOR $PLAYER_GROUP $ONMISSION
//Byte, Char – 1; Short, Word – 2; Long, DWord, Float – 4
{$CLEO}
0000:

const //Jumping vector
 X = 0.0 //Left—right
 Y = 11.0 //Backward—forward
 Z = 8.0 //Down—up
end // const

while true
wait 0
    if and
    player.Defined(0)   
    80E1: not  player 0 pressed_key 14
    then
        if or
        actor.Animation($PLAYER_ACTOR) == "FALL_fall"
        actor.Animation($PLAYER_ACTOR) == "FALL_front"
        actor.Animation($PLAYER_ACTOR) == "JUMP_glide" 
        then       
           
            repeat
            wait 0
            until 00E1:   player 0 pressed_key 14
           
            if or
            actor.Animation($PLAYER_ACTOR) == "FALL_fall"
            actor.Animation($PLAYER_ACTOR) == "FALL_front"
            actor.Animation($PLAYER_ACTOR) == "JUMP_glide" 
            then  
            018C: play_sound 1131 at 0.0 0.0 0.0
            actor.StorePos($PLAYER_ACTOR,0@,1@,2@)
            04C4: store_coords_to 3@ 4@ 5@ from_actor $PLAYER_ACTOR with_offset X Y Z
            0063: 3@ -= 0@  // (float)
            0063: 4@ -= 1@  // (float)
            0063: 5@ -= 2@  // (float)
            083C: set_actor $PLAYER_ACTOR velocity_in_direction_XYZ 3@ 4@ 5@
           
                while true
                wait 0
                    if and
                    not actor.Animation($PLAYER_ACTOR) == "FALL_fall"
                    not actor.Animation($PLAYER_ACTOR) == "FALL_front"
                    not actor.Animation($PLAYER_ACTOR) == "JUMP_glide"
                    then
                    break
                    end
                end
            end               
        end 
    end
end

Разбор скрипта:

Комментариев нет: